ci: add ubuntu-22.04 build target and versioned artifacts
This commit is contained in:
36
.github/workflows/ci.yml
vendored
36
.github/workflows/ci.yml
vendored
@@ -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
|
||||||
28
vibe_coding_log/session_2026_01_14_ci_glibc_fix.md
Normal file
28
vibe_coding_log/session_2026_01_14_ci_glibc_fix.md
Normal 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`.
|
||||||
Reference in New Issue
Block a user