Skip to main content

Rust

Build actions for Rust projects using Cargo.

Available Actions

ActionDescription
rust-setupInstall Rust toolchain
rust-registry-loginConfigure Cargo registries
rust-buildBuild and test
rust-cut-tagBump version and create tag
rust-registry-publishPublish to Cargo registry

Version File

Cargo reads and writes versions in Cargo.toml:

[package]
name = "my-service"
version = "1.2.3"

Required Variables

VariableDescription
CARGO_REGISTRYCargo registry URL for private crates

Example Usage

steps:
- uses: actions/checkout@v4

- uses: p6m-actions/rust-setup@v1

- uses: p6m-actions/rust-registry-login@v1
with:
registry-url: ${{ vars.CARGO_REGISTRY }}
token: ${{ secrets.ARTIFACTORY_IDENTITY_TOKEN }}

- uses: p6m-actions/rust-build@v1

Multi-Architecture Builds

Rust projects benefit from native builds per architecture for better performance:

jobs:
build-amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: p6m-actions/rust-setup@v1
- uses: p6m-actions/rust-build@v1

build-arm64:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- uses: p6m-actions/rust-setup@v1
- uses: p6m-actions/rust-build@v1

Dockerfile

note

Dockerfile patterns depend on your specific project structure. Rust projects benefit from cargo-chef for dependency caching, and native builds per architecture for performance.

See Containerization for general patterns including:

  • Multi-stage builds vs copying pre-built artifacts
  • Non-root user configuration
  • Health check setup