feat: add GitHub Actions workflow#10
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a GitHub Actions workflow to build and publish tagged releases of the Wails desktop app across Linux, Windows, and macOS.
Changes:
- Introduces a tag-triggered workflow (
v*) that builds the app on a 3-OS matrix. - Adds platform-specific packaging steps for Linux (tar.gz) and macOS (zip).
- Uploads the resulting artifacts to the corresponding GitHub Release.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| artifact: ExifFrame-linux-amd64.tar.gz | ||
| - os: windows-latest | ||
| artifact: ExifFrame.exe | ||
| - os: macos-latest |
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev | ||
|
|
||
| - name: Install Wails CLI | ||
| run: go install github.com/wailsapp/wails/v2/cmd/wails@latest |
| - name: Upload to Release | ||
| uses: softprops/action-gh-release@v2 | ||
| with: | ||
| files: build/bin/${{ matrix.artifact }} No newline at end of file |
…lease workflow to use artifact upload/download actions
There was a problem hiding this comment.
Pull request overview
Adds a GitHub Actions workflow to build and publish Wails application binaries when version tags are pushed, automating multi-OS release artifacts and GitHub Release creation.
Changes:
- Introduce a tag-triggered workflow (
v*) that builds on Ubuntu, Windows, and macOS via a matrix. - Package Linux/macOS outputs and upload per-OS build artifacts.
- Download all artifacts and publish them to a GitHub Release.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds an automated GitHub Actions workflow to build and publish tagged releases for the Wails-based app across Linux, Windows, and macOS.
Changes:
- Trigger builds on version tag pushes (
v*) using a matrix for Ubuntu/Windows/macOS. - Build the Wails application and package platform-specific artifacts (tar.gz / zip / exe).
- Create a GitHub Release and attach the downloaded build artifacts.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - name: Setup Node.js | ||
| uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '20' | ||
|
|
||
| - name: Cache npm dependencies | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: frontend/node_modules | ||
| key: ${{ runner.os }}-node20-npm-${{ hashFiles('frontend/package-lock.json') }} | ||
| restore-keys: | | ||
| ${{ runner.os }}-node20-npm- | ||
|
|
||
| - name: Install Linux Dependencies | ||
| if: runner.os == 'Linux' | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev | ||
|
|
||
| - name: Install Wails CLI | ||
| run: go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2 | ||
|
|
||
| - name: Build Wails App | ||
| run: wails build |
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: build/bin/${{ matrix.artifact }} |
| sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev | ||
|
|
||
| - name: Install Wails CLI | ||
| run: go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2 |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughSummary by CodeRabbitリリースノート
Walkthroughタグ Changes
Sequence Diagram(s)sequenceDiagram
participant Dev as Developer (push tag v*)
participant GH as GitHub Actions
participant Runner as Matrix Runner (Ubuntu/Windows/macOS)
participant Build as Build Steps (Go/Node/Wails)
participant Artifact as Artifact Storage
participant ReleaseJob as Release Job (ubuntu-latest)
participant GHRelease as GitHub Release
Dev->>GH: push tag v*
GH->>Runner: start build job (matrix)
Runner->>Build: checkout, setup Go & Node, npm ci, install Wails, wails build
Build->>Artifact: package platform output and upload artifact
GH->>ReleaseJob: trigger release job after builds
ReleaseJob->>Artifact: download all artifacts
ReleaseJob->>GHRelease: create release and upload artifacts
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes 🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Warning Review ran into problems🔥 ProblemsGit: Failed to clone repository. Please run the Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/release.yml:
- Around line 22-23: Replace all mutable GitHub Action version tags with pinned
commit SHAs to eliminate supply-chain risk: update usages of
actions/checkout@v4, actions/setup-go@v5, actions/setup-node@v4,
actions/cache@v4, actions/upload-artifact@v4, actions/download-artifact@v4, and
softprops/action-gh-release@v2 to their corresponding full commit SHAs (e.g.,
actions/checkout@<commit-sha>), locating these strings in the workflow and
substituting the tag with the correct commit SHA for each action.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: db538a21-30a2-42ea-bc90-78da8dc93941
📒 Files selected for processing (1)
.github/workflows/release.yml
| - name: Checkout code | ||
| uses: actions/checkout@v4 |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
wf=$(fd -p '.github/workflows/release.yml' | head -n1)
echo "Workflow: $wf"
echo
echo "All action references:"
rg -nP '^\s*uses:\s*' "$wf"
echo
echo "Non-SHA-pinned action references:"
rg -nP '^\s*uses:\s*[^@]+@(?![0-9a-fA-F]{40}$).+$' "$wf"Repository: amemya/ExifFrame
Length of output: 152
🏁 Script executed:
git ls-files '.github/' | head -20Repository: amemya/ExifFrame
Length of output: 89
🏁 Script executed:
cat -n .github/workflows/release.ymlRepository: amemya/ExifFrame
Length of output: 2875
Pin all GitHub Actions to full commit SHAs instead of mutable version tags.
Lines 23, 26, 31, 36, 68, 83, and 89 reference third-party actions using version tags (@v4, @v5, @v2). Version tags are mutable and can be retagged or moved, introducing supply-chain risk. Replace with pinned commit SHAs:
actions/checkout@v4→actions/checkout@<commit-sha>actions/setup-go@v5→actions/setup-go@<commit-sha>actions/setup-node@v4→actions/setup-node@<commit-sha>actions/cache@v4→actions/cache@<commit-sha>actions/upload-artifact@v4→actions/upload-artifact@<commit-sha>actions/download-artifact@v4→actions/download-artifact@<commit-sha>softprops/action-gh-release@v2→softprops/action-gh-release@<commit-sha>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/release.yml around lines 22 - 23, Replace all mutable
GitHub Action version tags with pinned commit SHAs to eliminate supply-chain
risk: update usages of actions/checkout@v4, actions/setup-go@v5,
actions/setup-node@v4, actions/cache@v4, actions/upload-artifact@v4,
actions/download-artifact@v4, and softprops/action-gh-release@v2 to their
corresponding full commit SHAs (e.g., actions/checkout@<commit-sha>), locating
these strings in the workflow and substituting the tag with the correct commit
SHA for each action.
There was a problem hiding this comment.
@amemya ご説明ありがとうございます。おっしゃる通りです。SHAへのピン留めはメンテナンスコストが増加するトレードオフがあり、個人開発においては actions/* などのGitHub公式アクションについてはメジャーバージョンタグ(例: @v4)の使用で十分と判断されることは理にかなっています。ご指摘を踏まえてこの指摘を取り下げます。
✏️ Learnings added
Learnt from: amemya
Repo: amemya/ExifFrame PR: 10
File: .github/workflows/release.yml:22-23
Timestamp: 2026-04-15T15:42:10.498Z
Learning: In the repository amemya/ExifFrame, the owner intentionally uses mutable major version tags (e.g., v4, v5, v2) instead of pinned commit SHAs for GitHub Actions. This is an intentional decision to keep maintenance cost low for a personal project. Do not flag the lack of SHA pinning for GitHub-official actions (actions/checkout, actions/setup-go, actions/setup-node, actions/cache, actions/upload-artifact, actions/download-artifact) or softprops/action-gh-release in this repository.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/release.yml:
- Around line 47-50: The Windows runner fails to append to PATH because the
"Install Wails CLI" step uses POSIX $GITHUB_PATH but PowerShell expects
$env:GITHUB_PATH; update that run block to handle both shells — e.g., detect
runner OS (or use PowerShell conditional) and append "$(go env GOPATH)/bin" into
$GITHUB_PATH for Linux/macOS and into $env:GITHUB_PATH for Windows/PowerShell;
modify the "Install Wails CLI" step so the PATH append uses the correct variable
syntax for PowerShell ($env:GITHUB_PATH) while keeping the existing $GITHUB_PATH
for POSIX shells.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: ebb40856-3f6a-46fb-b2cc-f515921dd869
📒 Files selected for processing (1)
.github/workflows/release.yml
| - name: Install Wails CLI | ||
| run: | | ||
| go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2 | ||
| echo "$(go env GOPATH)/bin" >> $GITHUB_PATH |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
In GitHub Actions on windows-latest (default shell PowerShell), should GITHUB_PATH be referenced as $env:GITHUB_PATH instead of $GITHUB_PATH?
💡 Result:
Yes, in GitHub Actions on windows-latest with the default PowerShell shell, GITHUB_PATH should be referenced as $env:GITHUB_PATH instead of $GITHUB_PATH.
Citations:
- 1: https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-commands
- 2: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions?tool=powershell
- 3: https://stackoverflow.com/questions/60169752/how-to-update-the-path-in-a-github-action-workflow-file-for-a-windows-latest-hos
- 4: https://stackoverflow.com/questions/65100630/creating-a-github-action-which-runs-a-powershell-script-on-a-windows-host
- 5: https://docs.github.com/en/actions/learn-github-actions/environment-variables
Windows ランナーで PATH 追記が失敗します
Line 50 で Windows デフォルトシェル (PowerShell) の場合、$GITHUB_PATH ではなく $env:GITHUB_PATH を参照する必要があります。現在のコードでは PowerShell が $GITHUB_PATH をリテラル文字列として扱うため PATH 追記が失敗し、Windows ビルドで wails コマンドが見つからず、ジョブが失敗します。
修正案
- name: Install Wails CLI
+ shell: bash
run: |
go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2
- echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
+ echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.github/workflows/release.yml around lines 47 - 50, The Windows runner fails
to append to PATH because the "Install Wails CLI" step uses POSIX $GITHUB_PATH
but PowerShell expects $env:GITHUB_PATH; update that run block to handle both
shells — e.g., detect runner OS (or use PowerShell conditional) and append "$(go
env GOPATH)/bin" into $GITHUB_PATH for Linux/macOS and into $env:GITHUB_PATH for
Windows/PowerShell; modify the "Install Wails CLI" step so the PATH append uses
the correct variable syntax for PowerShell ($env:GITHUB_PATH) while keeping the
existing $GITHUB_PATH for POSIX shells.
…enable automatic release notes
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/workflows/release.yml:
- Around line 25-28: Add Go module caching to the GitHub Action step that uses
actions/setup-go@v5 by enabling its built-in cache support: in the step where
you have uses: actions/setup-go@v5 and go-version-file: go.mod, add cache: true
so the setup-go step will cache modules and speed up builds.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 559c26df-5209-43ac-86e0-9c37e317b1cf
📒 Files selected for processing (1)
.github/workflows/release.yml
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds a GitHub Actions workflow to build and publish tagged releases for the Wails desktop app across Linux, Windows, and macOS.
Changes:
- Introduces a tag-triggered (
v*) multi-OS build matrix to compile/package the Wails app. - Uploads per-OS build artifacts and publishes them to a GitHub Release.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| zip -r ExifFrame-macos-arm64.zip ExifFrame.app | ||
|
|
||
| - name: Package Windows App | ||
| if: runner.os == 'Windows' | ||
| shell: bash | ||
| run: | | ||
| cd build/bin | ||
| mv ExifFrame.exe ExifFrame-windows-amd64.exe | ||
|
|
||
| - name: Package Linux App | ||
| if: runner.os == 'Linux' | ||
| run: | | ||
| cd build/bin | ||
| tar czf ExifFrame-linux-amd64.tar.gz ExifFrame |
|
|
||
| release: | ||
| needs: build | ||
| runs-on: ubuntu-latest |
| - name: Install Frontend Dependencies | ||
| run: npm ci | ||
| working-directory: frontend | ||
|
|
| - name: Checkout code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Setup Go | ||
| uses: actions/setup-go@v5 |
No description provided.