Skip to content

Add CI workflow: multi-platform release builds, artifact upload, and tag-triggered GitHub Releases#19

Merged
CircuitCoder merged 8 commits intomasterfrom
copilot/create-ci-workflow-for-binary
Feb 27, 2026
Merged

Add CI workflow: multi-platform release builds, artifact upload, and tag-triggered GitHub Releases#19
CircuitCoder merged 8 commits intomasterfrom
copilot/create-ci-workflow-for-binary

Conversation

Copy link
Contributor

Copilot AI commented Feb 27, 2026

Adds a GitHub Actions CI workflow that builds the binary in release mode for multiple platforms on every push and publishes all binaries to GitHub Releases on tag pushes.

Workflow triggers

  • All branch pushes: build + upload artifacts
  • Tag pushes (v*): build + upload artifacts + create/publish GitHub Release

Build matrix

Runner Rust Target Binary Name
ubuntu-latest x86_64-unknown-linux-gnu pixivdwn-x86_64-unknown-linux-gnu
ubuntu-24.04-arm aarch64-unknown-linux-gnu pixivdwn-aarch64-unknown-linux-gnu
windows-latest x86_64-pc-windows-msvc pixivdwn-x86_64-pc-windows-msvc.exe
windows-latest (cross) aarch64-pc-windows-msvc pixivdwn-aarch64-pc-windows-msvc.exe

Steps

  • Linux: installs libsqlite3-dev via apt (required by sqlx's sqlite-unbundled feature)
  • Windows: installs sqlite3 via vcpkg using the appropriate static triplet (x64-windows-static-md / arm64-windows-static-md)
  • cargo build --release --target <target>
  • Renames each binary to include its Rust target triple as the platform/ABI identifier
  • Uploads each binary as a named per-target Actions artifact
  • On tag push: uses softprops/action-gh-release (pinned to commit SHA) to create the release if absent and attach all four binaries

Security

softprops/action-gh-release is pinned to a specific commit SHA (c062e08b) rather than a mutable tag to guard against supply chain attacks.


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Copilot AI changed the title [WIP] Add CI workflow for building binary and uploading artifacts Add CI workflow: release build, artifact upload, and tag-triggered GitHub Releases Feb 27, 2026
@CircuitCoder
Copy link
Owner

@copilot This is a native binary. Please also add Windows build, as well as arm64 builds. Uploaded binaries should have their platforms and ABIs noted in their filenames.

…arm64

Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Feb 27, 2026

@copilot This is a native binary. Please also add Windows build, as well as arm64 builds. Uploaded binaries should have their platforms and ABIs noted in their filenames.

Done in 44cb0e0. The workflow now builds a matrix of four targets:

Runner Target Artifact name
ubuntu-latest x86_64-unknown-linux-gnu pixivdwn-x86_64-unknown-linux-gnu
ubuntu-24.04-arm aarch64-unknown-linux-gnu pixivdwn-aarch64-unknown-linux-gnu
windows-latest x86_64-pc-windows-msvc pixivdwn-x86_64-pc-windows-msvc.exe
windows-latest (cross) aarch64-pc-windows-msvc pixivdwn-aarch64-pc-windows-msvc.exe

Linux builds use libsqlite3-dev from apt; Windows builds use vcpkg with the appropriate static triplet (x64-windows-static-md / arm64-windows-static-md). All four binaries are uploaded as artifacts and, on v* tag pushes, attached to the GitHub Release.

Copilot AI changed the title Add CI workflow: release build, artifact upload, and tag-triggered GitHub Releases Add CI workflow: multi-platform release builds, artifact upload, and tag-triggered GitHub Releases Feb 27, 2026
@CircuitCoder CircuitCoder marked this pull request as ready for review February 27, 2026 15:37
@CircuitCoder CircuitCoder merged commit 276818d into master Feb 27, 2026
4 checks passed
@CircuitCoder CircuitCoder deleted the copilot/create-ci-workflow-for-binary branch February 28, 2026 19:13
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