Skip to content

feat: add GitHub Actions workflow#10

Merged
amemya merged 9 commits into
mainfrom
feat/release
Apr 15, 2026
Merged

feat: add GitHub Actions workflow#10
amemya merged 9 commits into
mainfrom
feat/release

Conversation

@amemya
Copy link
Copy Markdown
Owner

@amemya amemya commented Apr 15, 2026

No description provided.

Copilot AI review requested due to automatic review settings April 15, 2026 02:39
@amemya amemya self-assigned this Apr 15, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment thread .github/workflows/release.yml Outdated
artifact: ExifFrame-linux-amd64.tar.gz
- os: windows-latest
artifact: ExifFrame.exe
- os: macos-latest
Comment thread .github/workflows/release.yml Outdated
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
Comment thread .github/workflows/release.yml Outdated
Comment on lines +70 to +73
- 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
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
amemya and others added 3 commits April 15, 2026 12:02
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>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment on lines +30 to +53
- 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 }}
Comment thread .github/workflows/release.yml Outdated
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
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 15, 2026

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 28d8bee4-b3ca-42a5-bc0f-c2a2c8c6b142

📥 Commits

Reviewing files that changed from the base of the PR and between d61b2e3 and e4cbaa4.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

📝 Walkthrough

Summary by CodeRabbit

リリースノート

  • Chores
    • タグのプッシュでトリガーする自動ビルド&リリースワークフローを追加しました。Windows・macOS・Linux 向けに並列でビルドとパッケージ生成を行い、生成物を集約して自動で GitHub リリースに添付・公開します。

Walkthrough

タグ v* プッシュでトリガーするマルチプラットフォーム(Ubuntu 22.04、Windows 2022、macOS 14)向けの新しい GitHub Actions リリースワークフローが追加され、Go/Node/Wails のセットアップ、ビルド、OS別パッケージング、成果物アップロード、GitHub Release 作成を行います。

Changes

Cohort / File(s) Summary
リリースワークフロー
.github/workflows/release.yml
新規ワークフロー追加。タグ v* トリガー。OSマトリックス(ubuntu-22.04windows-2022macos-14)。リポジトリチェックアウト、Go と Node.js のセットアップ(go.mod/frontend/package-lock.json を参照)、frontend/npm ci、Linux では GTK/WebKit 開発パッケージを apt インストール。github.com/wailsapp/wails/v2/...@v2.10.2 をインストールして wails build 実行。各プラットフォームの出力をプラットフォーム毎にパッケージ化(macOS: ExifFrame.app→zip、Windows: ExifFrame.exe→リネーム、Linux: ExifFrame→tar.gz)して成果物をアップロード。release ジョブがビルド成果物をダウンロードして artifacts/ に統合し、GitHub Release を作成して全成果物を添付(generate_release_notes: true)。

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
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive No pull request description was provided by the author. While a description would be helpful, this is a lenient check that only fails if the description is completely unrelated. Consider adding a pull request description explaining the workflow's purpose, triggered conditions, build platforms, and artifact handling for better context.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat: add GitHub Actions workflow' is clear and directly related to the changeset, accurately summarizing the main change of introducing a GitHub Actions release workflow.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/release

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 19b9753 and feb8ed6.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment on lines +22 to +23
- name: Checkout code
uses: actions/checkout@v4
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Apr 15, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 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 -20

Repository: amemya/ExifFrame

Length of output: 89


🏁 Script executed:

cat -n .github/workflows/release.yml

Repository: 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@v4actions/checkout@<commit-sha>
  • actions/setup-go@v5actions/setup-go@<commit-sha>
  • actions/setup-node@v4actions/setup-node@<commit-sha>
  • actions/cache@v4actions/cache@<commit-sha>
  • actions/upload-artifact@v4actions/upload-artifact@<commit-sha>
  • actions/download-artifact@v4actions/download-artifact@<commit-sha>
  • softprops/action-gh-release@v2softprops/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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between feb8ed6 and bc1e03b.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment on lines +47 to +50
- name: Install Wails CLI
run: |
go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 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:


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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

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

📥 Commits

Reviewing files that changed from the base of the PR and between 12086cc and d61b2e3.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Comment thread .github/workflows/release.yml
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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.

Comment on lines +62 to +75
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
Comment on lines +38 to +41
- name: Install Frontend Dependencies
run: npm ci
working-directory: frontend

Comment on lines +22 to +26
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
@amemya amemya merged commit a212550 into main Apr 15, 2026
5 checks passed
@amemya amemya deleted the feat/release branch April 15, 2026 16:20
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.

2 participants