name: Publish to Crates.io
on:
push:
tags:
- v*.*.*
jobs:
publish-impl:
runs-on: ubuntu-latest
environment: Crates.io
name: Publish implementation crate
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Setup Rust ${{ matrix.rust-toolchain }}
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Package and publish crate
uses: actions-rs/cargo@v1
with:
command: publish
args: --manifest-path impl/Cargo.toml --token ${{ secrets.CRATES_IO_TOKEN }}
publish-decl:
needs: publish-impl
runs-on: ubuntu-latest
environment: Crates.io
name: Publish declaration crate
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Setup Rust ${{ matrix.rust-toolchain }}
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Package and publish declaration crate
uses: actions-rs/cargo@v1
with:
command: publish
args: '--token ${{ secrets.CRATES_IO_TOKEN }}'
release:
environment: GitHub Releases
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/v')"
name: Release
needs: publish-decl
steps:
- name: Checkout code
uses: actions/checkout@v1
with:
submodules: true
- name: Release a Changelog
uses: rasmus-saks/release-a-changelog-action@v1.0.1
with:
github-token: '${{ secrets.GITHUB_TOKEN }}'