commit f72cc0c9aa45548957281c0eadc04c2bdcfdb38f
parent 8e6a96633a27079a3a0a49f10b0bdca862ab466e
Author: Silas Brack <silasbrack@gmail.com>
Date: Thu, 2 Apr 2026 23:22:11 +0200
New CI/CD
Diffstat:
2 files changed, 76 insertions(+), 89 deletions(-)
diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml
@@ -0,0 +1,76 @@
+name: "CI"
+
+on:
+ push:
+ branches: ["main"]
+ tags: ["v*"]
+ pull_request:
+ branches: ["main"]
+
+jobs:
+ test:
+ name: Test
+ runs-on: native
+ steps:
+ - uses: actions/checkout@v4
+ - name: Run unit tests
+ run: nix develop --command cargo test --lib
+
+ build:
+ name: Build ${{ matrix.package }}
+ runs-on: native
+ strategy:
+ fail-fast: false
+ matrix:
+ package:
+ - default
+ - x86_64-linux-musl
+ - aarch64-linux
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Build
+ run: nix build --print-build-logs .#packages.x86_64-linux.${{ matrix.package }}
+
+ - name: Prepare release artifact
+ if: startsWith(forgejo.ref, 'refs/tags/')
+ run: |
+ target="${{ matrix.package }}"
+ if [ "$target" = "default" ]; then
+ target="x86_64-unknown-linux-gnu"
+ elif [ "$target" = "x86_64-linux-musl" ]; then
+ target="x86_64-unknown-linux-musl"
+ elif [ "$target" = "aarch64-linux" ]; then
+ target="aarch64-unknown-linux-gnu"
+ fi
+ cp result/bin/mkv "mkv-${target}"
+
+ - name: Upload artifact
+ if: startsWith(forgejo.ref, 'refs/tags/')
+ uses: actions/upload-artifact@v3
+ with:
+ name: mkv-${{ matrix.package }}
+ path: mkv-*
+
+ release:
+ name: Create release
+ needs: [test, build]
+ runs-on: native
+ if: startsWith(forgejo.ref, 'refs/tags/')
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ path: artifacts
+
+ - name: Collect artifacts
+ run: |
+ mkdir -p release
+ find artifacts -type f -name 'mkv-*' -exec mv {} release/ \;
+ ls -la release/
+
+ - name: Create release
+ uses: actions/forgejo-release@v2
+ with:
+ direction: upload
+ release-dir: release
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
@@ -1,89 +0,0 @@
-name: "CI"
-on:
- pull_request:
- push:
- branches: ["main"]
- tags: ["v*"]
-permissions:
- contents: write
-
-jobs:
- build-nix:
- name: Build ${{ matrix.target }}
- runs-on: ${{ matrix.runner }}
- strategy:
- fail-fast: false
- matrix:
- include:
- - target: x86_64-unknown-linux-gnu
- runner: ubuntu-latest
- system: x86_64-linux
- package: default
- - target: x86_64-unknown-linux-musl
- runner: ubuntu-latest
- system: x86_64-linux
- package: x86_64-linux-musl
- - target: aarch64-unknown-linux-gnu
- runner: ubuntu-latest
- system: x86_64-linux
- package: aarch64-linux
- - target: x86_64-apple-darwin
- runner: macos-13
- system: x86_64-darwin
- package: default
- - target: aarch64-apple-darwin
- runner: macos-latest
- system: aarch64-darwin
- package: default
- steps:
- - uses: actions/checkout@v4
- - uses: DeterminateSystems/nix-installer-action@main
-
- - run: nix --print-build-logs build .#packages.${{ matrix.system }}.${{ matrix.package }}
-
- - name: Prepare release artifact
- if: startsWith(github.ref, 'refs/tags/')
- run: cp result/bin/mkv mkv-${{ matrix.target }}
-
- - name: Upload artifact
- if: startsWith(github.ref, 'refs/tags/')
- uses: actions/upload-artifact@v4
- with:
- name: mkv-${{ matrix.target }}
- path: mkv-${{ matrix.target }}
-
- build-windows:
- name: Build x86_64-pc-windows-msvc
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v4
- - uses: dtolnay/rust-toolchain@stable
-
- - run: cargo build --release
-
- - name: Prepare release artifact
- if: startsWith(github.ref, 'refs/tags/')
- run: cp target/release/mkv.exe mkv-x86_64-pc-windows-msvc.exe
-
- - name: Upload artifact
- if: startsWith(github.ref, 'refs/tags/')
- uses: actions/upload-artifact@v4
- with:
- name: mkv-x86_64-pc-windows-msvc
- path: mkv-x86_64-pc-windows-msvc.exe
-
- release:
- name: Create release
- needs: [build-nix, build-windows]
- runs-on: ubuntu-latest
- if: startsWith(github.ref, 'refs/tags/')
- steps:
- - uses: actions/download-artifact@v4
- with:
- path: artifacts
- merge-multiple: true
-
- - name: Create release
- uses: softprops/action-gh-release@v2
- with:
- files: artifacts/*