Skip to content

ci(docs/release.yml): add crates publishing job; update release proce… #5086

ci(docs/release.yml): add crates publishing job; update release proce…

ci(docs/release.yml): add crates publishing job; update release proce… #5086

Workflow file for this run

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Rust
on:
push:
branches: ["main", "v*"]
# Also run on tag pushes, as the release.yml doesn't currently run tests
tags: ["v*"]
pull_request:
branches: ["main", "v*"]
paths-ignore:
- "docs/**"
- "README.md"
- "tests/README.md"
# Serialize workflow runs per ref
# Cancel any outdated, in-flight runs for refs other than 'main'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
env:
CARGO_TERM_COLOR: always
jobs:
lint-rust:
name: Lint Rust
runs-on: "ubuntu-latest"
permissions:
## Allow this job to potentially cancel the running workflow (on failure)
actions: write
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-wasm: true
rust-cache: true
- name: Run lints on main code
run: BUILD_SPIN_EXAMPLES=0 make lint
- name: Run lints on examples
run: BUILD_SPIN_EXAMPLES=0 make lint-rust-examples-and-testcases
- name: Cancel everything if linting fails
if: failure()
uses: andymckay/cancel-action@0.2
## This is separated out to remove e2e-tests dependency on windows/mac builds
build-rust-ubuntu:
name: Build Spin Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-wasm: true
rust-cache: true
- name: Cargo Build
run: cargo build --workspace --release --all-targets --features openssl/vendored --features all-tests
env:
CARGO_INCREMENTAL: 0
- name: "Archive executable artifact"
uses: actions/upload-artifact@v3
with:
name: spin-ubuntu-latest
path: target/release/spin
build-rust-static:
name: Build Spin static
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-cross: true
rust-cache: true
- name: Cargo Build
run: cross build --target x86_64-unknown-linux-musl --workspace --release --all-targets --features openssl/vendored
env:
CARGO_INCREMENTAL: 0
BUILD_SPIN_EXAMPLES: 0
RUSTFLAGS: '-C target-feature=+crt-static -C link-self-contained=yes'
- name: "Archive executable artifact"
uses: actions/upload-artifact@v3
with:
name: spin-static-x86_64
path: target/x86_64-unknown-linux-musl/release/spin
build-rust-static-aarch64:
name: Build Spin static (aarch64)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-cross: true
rust-cache: true
- name: Cargo Build
run: cross build --target aarch64-unknown-linux-musl --workspace --release --all-targets --features openssl/vendored
env:
CARGO_INCREMENTAL: 0
BUILD_SPIN_EXAMPLES: 0
RUSTFLAGS: '-C target-feature=+fp16 -C target-feature=+crt-static -C link-self-contained=yes'
- name: "Archive executable artifact"
uses: actions/upload-artifact@v3
with:
name: spin-static-aarch64
path: target/aarch64-unknown-linux-musl/release/spin
build-rust:
name: Build Spin
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-wasm: true
rust-cache: true
- name: Cargo Build
run: cargo build --workspace --release --all-targets
env:
CARGO_INCREMENTAL: 0
- name: "Archive executable artifact"
uses: actions/upload-artifact@v3
with:
name: spin-${{ matrix.os }}
path: target/release/spin${{ matrix.os == 'windows-latest' && '.exe' || '' }}
test-rust:
name: Test Spin SDK - Rust
runs-on: ${{ matrix.runner }}
strategy:
matrix:
runner: [ubuntu-22.04-4core-spin, macos-latest]
steps:
- uses: actions/checkout@v3
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
rust-wasm: true
rust-cache: true
nomad: true
- name: Cargo Unit and Integration Tests
run: |
make test-unit test-integration
env:
CARGO_INCREMENTAL: 0
test-go:
name: Test Spin SDK - Go
runs-on: ubuntu-latest
needs: build-rust-ubuntu
steps:
- uses: actions/checkout@v3
- name: Retrieve saved Spin Binary
uses: actions/download-artifact@v3
with:
name: spin-ubuntu-latest
path: target/debug/
- name: Fix Spin Binary permissions
run: |
ls -lah target/
ls -lah target/debug
chmod +x target/debug/spin
- name: setup dependencies
uses: ./.github/actions/spin-ci-dependencies
with:
rust: true
golang: true
tinygo: true
wasmtime: true
- name: "Test Go SDK"
run: make test-sdk-go
e2e-tests:
# run on a larger runner for more SSD/resource access
runs-on: ubuntu-22.04-4core-spin
if: ${{ github.repository_owner == 'fermyon' }}
needs: build-rust-ubuntu
steps:
- uses: actions/checkout@v3
- name: Retrieve saved Spin Binary
uses: actions/download-artifact@v3
with:
name: spin-ubuntu-latest
path: target/release/
- name: Build e2e tests image
run: |
export E2E_FETCH_SPIN=false
make build-test-spin-up
- name: Run e2e tests
run: |
chmod +x `pwd`/target/release/spin
export E2E_VOLUME_MOUNT="-v `pwd`/target/release/spin:/usr/local/bin/spin"
make run-test-spin-up