name: Release
on:
push:
branches: [main]
permissions:
contents: write
id-token: write
pull-requests: write
jobs:
release-please:
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- name: Create Release PR
id: release
uses: googleapis/release-please-action@v4
with:
manifest-file: .github/config/release-please-manifest.json
config-file: .github/config/release-please-config.json
target-branch: main
build:
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
strategy:
matrix:
include:
- os: ubuntu-latest
nix_system: x86_64-linux
- os: macos-14
nix_system: aarch64-darwin
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix Cache
uses: DeterminateSystems/magic-nix-cache-action@v13
- name: Build with Nix
run: nix build . --system ${{ matrix.nix_system }}
- name: Rename Binary
run: cp result/bin/devcontainer-env result/bin/devcontainer-env-${{ matrix.nix_system }}
- name: Upload Release Assets
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release-please.outputs.tag_name }}
files: result/bin/devcontainer-env-${{ matrix.nix_system }}
publish-crate:
needs: release-please
if: ${{ needs.release-please.outputs.release_created }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v21
- name: Setup Nix Cache
uses: DeterminateSystems/magic-nix-cache-action@v13
- name: Publish to Crates.io
run: nix develop --command cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}