Skip to content

Improve auto deployment using Github Action #44

Improve auto deployment using Github Action

Improve auto deployment using Github Action #44

Workflow file for this run

name: CD
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
workflow_dispatch: {}
env:
CARGO_TERM_COLOR: always
jobs:
deploy:
strategy:
fail-fast: true
matrix:
os: [macos-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
continue-on-error: false
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install MacOS dependencies
if: matrix.os == 'macos-latest'
run: brew install jq
- name: Install Ubuntu dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install jq
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Install cargo-bump
run: cargo install cargo-bump
- name: Previous version
id: prev_version
run: echo "::set-output name=version::$(./scripts/current-version)"
shell: bash
- name: Bump version using cargo-bump
run: cargo bump patch
- name: Next version
id: next_version
run: echo "::set-output name=version::$(./scripts/current-version)"
shell: bash
- name: Check that version number was bumped
if: ${{ steps.prev_version.outputs.version == steps.next_version.outputs.version }}
run: exit 1
- name: Run integration tests
run: |
cargo build --release
cargo test --release
cargo fmt -- --check
cargo clippy -- -D warnings
./tools/test.sh
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Update dependencies & ensure version changed
if: ${{ github.event.pull_request.merged == true }}
run: cargo update --aggressive
- name: Commit changes and tag release
run: |
git add Cargo.lock Cargo.toml
git commit -m "Update dependencies for version ${{ steps.next_version.outputs.version }}"
git tag -a "v${{ steps.next_version.outputs.version }}" -m "Release v${{ steps.next_version.outputs.version }}"
- name: Publish to crates.io (Dry Run)
if: ${{ github.event.pull_request.merged != true }}
run: |
echo "Dry run: would publish to crates.io but skipping because this is a dry run."
- name: Push changes to main
if: ${{ github.event.pull_request.merged == true }}
run: |
git push origin main
git push origin "v${{ steps.next_version.outputs.version }}"
- name: Publish to crates.io (Actual Run)
if: ${{ github.event.pull_request.merged == true }}
uses: katyo/publish-crates@v2
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Success message
if: ${{ github.event.pull_request.merged == true }}
run: echo "Successfully published version ${{ steps.next_version.outputs.version }}"