This document describes how to create a new release of Camera.
The release process uses two GitHub Actions workflows:
- Create Release (
create-release.yml) - Manually triggered to prepare and tag a release - Release (
release.yml) - Automatically triggered when a tag is pushed, builds and publishes the release
Navigate to the repository's Actions tab and select the "Create Release" workflow from the left sidebar.
Click "Run workflow" and you'll see an input field:
| Field | Description |
|---|---|
| Version number | Optional. Leave empty to auto-increment the patch version (e.g., 0.1.6 → 0.1.7). Or specify a version like 0.2.0 or 1.0.0. |
Click "Run workflow" to start.
The workflow will:
- Determine the version - Uses your input or auto-increments from the latest tag
- Generate release notes - Fetches "What's Changed" from merged PRs since the last release
- Update metainfo.xml - Adds a new
<release>entry with the changelog - Commit the change - Pushes the updated metainfo to the main branch
- Create the git tag - Tags the commit with the new version (e.g.,
v0.1.7)
This triggers the Release workflow, which:
- Builds binaries - For x86_64, aarch64, and riscv64
- Builds Flatpak bundles - For x86_64 and aarch64
- Generates APKBUILD - Alpine Linux package recipe with correct sha512sum
- Creates GitHub Release - With all artifacts and release notes
- Publishes to Flathub - Updates the Flathub repository (if
FLATHUB_TOKENis configured)
The project follows Semantic Versioning:
- MAJOR (x.0.0) - Incompatible API/behavior changes
- MINOR (0.x.0) - New features, backward compatible
- PATCH (0.0.x) - Bug fixes, backward compatible
Examples:
0.1.7- Patch release with bug fixes0.2.0- Minor release with new features1.0.0- Major stable release
No additional setup required. The workflow uses the default GITHUB_TOKEN.
The FLATHUB_TOKEN secret must be configured in the repository settings:
- Create a GitHub Personal Access Token with
reposcope - The token must have write access to the flathub/io.github.cosmic_utils.camera repository
- Add it as a repository secret named
FLATHUB_TOKEN
If the secret is not set, the Flathub publishing step will be skipped.
The workflow will fail if you try to create a version that already exists. Check existing tags:
git tag --sort=-v:refname | head -10Release notes are generated from merged pull requests. If there are no PRs since the last release, a default message "Bug fixes and improvements." will be used.
If the Flathub build fails after publishing:
- Check the Flathub Buildbot
- Common issues: missing dependencies, cargo source hash mismatches
- You may need to manually fix the Flathub repository
If the automated workflow fails, you can create a release manually:
# 1. Update metainfo.xml manually with the new version and date
# 2. Commit the change
git add resources/io.github.cosmic_utils.camera.metainfo.xml
git commit -m "Release v0.1.7: update metainfo.xml"
git push origin main
# 3. Create and push the tag
git tag -a v0.1.7 -m "Release v0.1.7"
git push origin v0.1.7This will trigger the Release workflow to build and publish.
Each release includes:
| Artifact | Description |
|---|---|
camera-x86_64-linux.tar.gz |
Linux binary for x86_64 |
camera-aarch64-linux.tar.gz |
Linux binary for ARM64 |
camera-armhf-linux.tar.gz |
Linux binary for armhf (32-bit) |
camera-riscv64-linux.tar.gz |
Linux binary for RISC-V 64 |
camera-x86_64-musl-linux.tar.gz |
Linux binary for x86_64 (musl/static) |
camera-aarch64-musl-linux.tar.gz |
Linux binary for ARM64 (musl/static) |
camera-x86_64.flatpak |
Flatpak bundle for x86_64 |
camera-aarch64.flatpak |
Flatpak bundle for ARM64 |
camera-vX.Y.Z-source.zip |
Source code archive |
APKBUILD |
Alpine Linux package build recipe |