Skip to content

ci: add manual release workflow#4

Merged
TerrifiedBug merged 3 commits intomainfrom
ci/manual-release-workflow
Feb 27, 2026
Merged

ci: add manual release workflow#4
TerrifiedBug merged 3 commits intomainfrom
ci/manual-release-workflow

Conversation

@TerrifiedBug
Copy link
Copy Markdown
Owner

Summary

  • Adds a workflow_dispatch workflow to create releases from the Actions tab
  • Enter a version (e.g. v0.3.1), it validates format, runs tests, builds, tags, and publishes

Test plan

  • Verify workflow appears under Actions tab with a "Run workflow" button
  • Test with a valid version like v0.4.0

Adds a workflow_dispatch workflow to create releases from the Actions
tab. Enter a version (e.g. v0.3.1) and it validates the format, runs
tests, builds the frontend + arm64 binary, creates the git tag, and
publishes a GitHub Release with auto-generated release notes.
@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Feb 27, 2026

Greptile Summary

Refactors release process from automatic (tag-triggered) to manual (workflow_dispatch). This change resolves the duplicate build issue where both ci.yml and the old release job would trigger simultaneously on tag pushes.

Key Changes:

  • Removed tag trigger and release job from ci.yml
  • Added comprehensive release.yml with version validation (vX.Y.Z format), test/build pipeline, and tag existence checking
  • Properly fetches tags with fetch-tags: true so the existence check works correctly
  • Clear error messaging if attempting to recreate an existing tag

The workflow structure follows GitHub Actions best practices with appropriate job dependencies, minimal permissions, and proper artifact passing. All issues from previous review threads have been addressed.

Confidence Score: 5/5

  • This PR is safe to merge with no identified risks
  • Clean refactoring that addresses all previous feedback. Workflow follows best practices with proper validation, permissions, job dependencies, and error handling. No logical issues or security concerns.
  • No files require special attention

Important Files Changed

Filename Overview
.github/workflows/ci.yml removed tag trigger and release job to prevent duplicate builds when manual release workflow runs
.github/workflows/release.yml added manual workflow_dispatch release process with version validation, testing, and proper tag existence checking

Last reviewed commit: c546979

Copy link
Copy Markdown

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +106 to +107
git tag ${{ inputs.version }}
git push origin ${{ inputs.version }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pushing this tag triggers ci.yml (which has on: push: tags: ["v*"]), causing both workflows to build and create releases simultaneously - if intentional as a safety net, this is fine but resource-intensive


- name: Create tag
run: |
git tag ${{ inputs.version }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check if tag exists first for clearer error if re-running after partial failure

Suggested change
git tag ${{ inputs.version }}
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
echo "::error::Tag ${{ inputs.version }} already exists. Delete it first to recreate."
exit 1
fi
git tag ${{ inputs.version }}

- Remove tag trigger and release job from ci.yml (release.yml handles it)
- Add tag existence check before creating to give clear error on re-runs
Comment on lines +98 to +111
- uses: actions/checkout@v4

- uses: actions/download-artifact@v4
with:
name: teslausb-linux-arm64

- name: Create tag
run: |
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
echo "::error::Tag ${{ inputs.version }} already exists. Delete it first to recreate."
exit 1
fi
git tag ${{ inputs.version }}
git push origin ${{ inputs.version }}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tag existence check won't work - actions/checkout@v4 doesn't fetch tags by default, so line 106 won't see remote tags and will incorrectly proceed even if tag exists remotely

Suggested change
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: teslausb-linux-arm64
- name: Create tag
run: |
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
echo "::error::Tag ${{ inputs.version }} already exists. Delete it first to recreate."
exit 1
fi
git tag ${{ inputs.version }}
git push origin ${{ inputs.version }}
- uses: actions/checkout@v4
with:
fetch-tags: true
- uses: actions/download-artifact@v4
with:
name: teslausb-linux-arm64
- name: Create tag
run: |
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
echo "::error::Tag ${{ inputs.version }} already exists. Delete it first to recreate."
exit 1
fi
git tag ${{ inputs.version }}
git push origin ${{ inputs.version }}

@greptile-apps
Copy link
Copy Markdown

greptile-apps bot commented Feb 27, 2026

Additional Comments (1)

.github/workflows/ci.yml
dead code - this tag check is now unreachable since tags no longer trigger this workflow

      - name: Cross-compile for arm64

@TerrifiedBug TerrifiedBug merged commit 08f3bd7 into main Feb 27, 2026
8 checks passed
@TerrifiedBug TerrifiedBug deleted the ci/manual-release-workflow branch February 27, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant