| --- |
| name: Release Cargo-bazel |
| on: |
| workflow_dispatch: |
| push: |
| branches: |
| - main |
| paths: |
| - crate_universe/version.bzl |
| |
| defaults: |
| run: |
| shell: bash |
| |
| jobs: |
| validation: |
| runs-on: ubuntu-20.04 |
| steps: |
| - uses: actions/checkout@v3 |
| # TODO: Unfortunately it's not obvious how to restrict `workflow_dispatch` to a particular branch |
| # so this step ensures releases are always done off of `main`. |
| - name: Ensure branch is 'main' |
| run: | |
| git fetch origin &> /dev/null |
| branch="$(git rev-parse --abbrev-ref HEAD)" |
| if [[ "${branch}" != "main" ]]; then |
| echo "The release branch must be main. Got '${branch}'' instead." >&2 |
| exit 1 |
| else |
| echo "Branch is '${branch}'" |
| fi |
| builds: |
| needs: validation |
| runs-on: ubuntu-20.04 |
| steps: |
| - uses: actions/checkout@v3 |
| - name: Install rust toolchains for host |
| run: | |
| # Detect the current version of rust |
| version="$(grep 'DEFAULT_RUST_VERSION =' ./rust/private/common.bzl | grep -o '[[:digit:].]\+')" |
| rustup override set "${version}" |
| rustup update stable && rustup default stable |
| - name: Publish to crates.io |
| run: cargo publish --token ${CRATES_TOKEN} |
| working-directory: ./crate_universe |
| env: |
| CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }} |