name: Rust Library Release Pipeline
on:
push:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: cargo build --verbose
test:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Test
run: cargo test --verbose
integration-test:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v3
- name: Test
run: cargo test --verbose -F integration
release-lib:
if: contains(github.event.head_commit.message, 'release')
needs: integration-test
environment: crates
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Login
run: cargo login ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Build Release
run: cargo build --release
- name: Publish Library
run: cargo publish
release-zip:
if: contains(github.event.head_commit.message, 'release')
needs: release-lib
environment: crates
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v3
- name: Install Zig
run: sudo snap install zig --classic --beta
- name: Install Cargo Lambda
run: cargo install cargo-lambda
- name: Build Release
run: cargo lambda build --release --x86-64 --output-format zip