ci: add ubuntu-22.04 build target and versioned artifacts
All checks were successful
Cargo Build & Test / Build - ubuntu-latest (push) Successful in 3m33s
Cargo Build & Test / Build - ubuntu-22.04 (push) Successful in 3m53s

This commit is contained in:
2026-01-14 22:54:20 -05:00
parent e9c08d1a92
commit 54ae040fd4
2 changed files with 54 additions and 10 deletions

View File

@@ -8,24 +8,40 @@ env:
CARGO_TERM_COLOR: always CARGO_TERM_COLOR: always
jobs: jobs:
build_and_test: build_latest:
name: Rust project - latest name: Build - ubuntu-latest
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
rust_ver:
- "1.90"
# Very ugly way to force cargo and jazz to be in PATH across run's but
# lets fix this alter.
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y - run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
- run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH - run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- run: rustup update ${{ matrix.rust_ver }} && rustup default ${{ matrix.rust_ver }} - run: rustup update 1.90 && rustup default 1.90
- run: cargo build - run: cargo build
- run: cargo build --release - run: cargo build --release
- name: Rename binary
if: github.ref_type == 'tag'
run: mv target/release/gitea_mirror target/release/gitea_mirror-${{ github.ref_name }}-ubuntu-latest
- name: Release - name: Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v2
if: github.ref_type == 'tag' if: github.ref_type == 'tag'
with: with:
files: target/release/gitea_mirror files: target/release/gitea_mirror-${{ github.ref_name }}-ubuntu-latest
build_legacy:
name: Build - ubuntu-22.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
- run: echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- run: rustup update 1.90 && rustup default 1.90
- run: cargo build
- run: cargo build --release
- name: Rename binary
if: github.ref_type == 'tag'
run: mv target/release/gitea_mirror target/release/gitea_mirror-${{ github.ref_name }}-ubuntu-22.04
- name: Release
uses: softprops/action-gh-release@v2
if: github.ref_type == 'tag'
with:
files: target/release/gitea_mirror-${{ github.ref_name }}-ubuntu-22.04

View File

@@ -0,0 +1,28 @@
# Session 2026-01-14: Fix CI for Older GLIBC
## Task
- User reported CI artifacts fail on older Ubuntu 22.04 due to GLIBC version mismatch.
- User asked about static linking vs CI adjustment.
## Approach
- Advised against static linking (musl) due to complexity with `libgit2` and OpenSSL in this context.
- Opted to modify GitHub Actions CI (`.github/workflows/ci.yml`).
- Implemented a matrix build strategy to run on `ubuntu-22.04` and `ubuntu-latest`.
- Added logic to extract the crate version from `Cargo.toml`.
- Updated the release step to rename artifacts to include both the version and the OS (e.g., `gitea_mirror-0.1.0-ubuntu-22.04`).
## Follow-up (Gitea Actions Fix)
- User reported the workflow stopped triggering entirely on Gitea.
- Suspected `runs-on: ${{ matrix.os }}` context expansion issue in Gitea Actions parser.
- Refactored `ci.yml` to use two explicit jobs (`build_latest` and `build_legacy`) instead of a matrix strategy.
- Addressed a YAML syntax error ("mapping values are not allowed") caused by a colon in the `run` command by converting it to a block scalar (`|`).
## Follow-up (Artifact Naming Cleanup)
- User noted that `cargo pkgid` returns a placeholder version if `Cargo.toml` isn't updated, which mismatches the git tag.
- User requested to use the git tag directly and clean up "useless code" (renaming on non-tag builds).
- Removed the "Get version" step.
- Conditionalized the "Rename binary" step to only run on tags (`if: github.ref_type == 'tag'`).
- Updated the artifact filename to use `${{ github.ref_name }}` instead of `PROJECT_VERSION`.
## Changes
- Modified `.github/workflows/ci.yml`.