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/*