Skip to content

Rust 2024

Rust 2024 #1723

Workflow file for this run

name: Build
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
env:
CARGO_TERM_COLOR: always
permissions:
contents: write
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, windows-2022, macos-14]
env:
RUST_BACKTRACE: "full"
steps:
- name: Cleanup unused stuff
if: runner.os == 'Linux'
run: |
df -h /
sudo rm -rf \
"$AGENT_TOOLSDIRECTORY" \
/opt/google/chrome \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/opt/pipx \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/lib/node_modules \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/share/dotnet \
/usr/share/swift
df -h /
- run: git config --system core.longpaths true
if: runner.os == 'Windows'
- uses: actions/checkout@v4
with:
submodules: true
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: cargo-bins/cargo-binstall@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install requirements
run: just install-requirements
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Pull required docker images
if: runner.os == 'Linux'
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 10
command: docker pull public.ecr.aws/ubuntu/ubuntu:latest
- uses: actions/setup-go@v5
with:
go-version: '^1.22.0'
cache-dependency-path: "**/go.sum"
- run: go version
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
version: "25.3"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: protoc --version
- run: brew install pulumi
if: runner.os == 'macOS'
- run: pulumi version
- run: pulumi login --local
- uses: Swatinem/rust-cache@v2
with:
shared-key: build
workspaces: |
./
pulumi_wasm_generator_lib/tests/output/array-of-enum-map/
pulumi_wasm_generator_lib/tests/output/azure-native-nested-types/
pulumi_wasm_generator_lib/tests/output/cyclic-types/
pulumi_wasm_generator_lib/tests/output/different-enum/
pulumi_wasm_generator_lib/tests/output/functions-secrets/
pulumi_wasm_generator_lib/tests/output/mini-awsnative/
pulumi_wasm_generator_lib/tests/output/output-funcs/
pulumi_wasm_generator_lib/tests/output/output-funcs-edgeorder/
pulumi_wasm_generator_lib/tests/output/unions-inline/
pulumi_wasm_generator_lib/tests/output/unions-inside-arrays/
- name: Regenerate provider list
run: just regenerate-provider-list
- name: Check
run: just check
- name: Build
run: just build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Test
run: just test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get code coverage
run: just test-coverage
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload coverage data to codecov
uses: codecov/codecov-action@v5
with:
files: lcov.info
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
- name: Upload test results to Codecov
if: ${{ !cancelled() }}
uses: codecov/test-results-action@v1
with:
files: target/nextest/ci/junit.xml
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
- run: git add . && git diff
- run: git diff --cached
- name: Ensure no files have changed
run: git add . && git diff --quiet && git diff --cached --quiet
- uses: actions/upload-artifact@v4
with:
name: "timings_${{ runner.os }}"
path: |
target/cargo-timings/cargo-timing-*.html
pulumi_wasm_generator_lib/tests/**/target/cargo-timings/cargo-timing-*.html
deploy:
runs-on: ubuntu-24.04
needs: build
if: success() && github.ref == 'refs/heads/main'
env:
RUST_BACKTRACE: "full"
steps:
- name: Cleanup unused stuff
run: |
df -h /
sudo rm -rf \
"$AGENT_TOOLSDIRECTORY" \
/opt/google/chrome \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/opt/pipx \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/lib/node_modules \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/share/dotnet \
/usr/share/swift
df -h /
- uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.PAT }}
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: cargo-bins/cargo-binstall@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install requirements
run: just install-requirements
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Pull required docker images
if: runner.os == 'Linux'
uses: nick-fields/retry@v3
with:
timeout_minutes: 10
max_attempts: 10
command: docker pull public.ecr.aws/ubuntu/ubuntu:latest
- uses: actions/setup-go@v5
with:
go-version: '^1.22.0'
cache-dependency-path: "**/go.sum"
- run: go version
- name: Install Protoc
uses: arduino/setup-protoc@v3
with:
version: "25.3"
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: protoc --version
- run: brew install pulumi
if: runner.os == 'macOS'
- run: pulumi version
- run: pulumi login --local
- uses: Swatinem/rust-cache@v2
with:
shared-key: build
save-if: false
workspaces: |
./
pulumi_wasm_generator_lib/tests/output/array-of-enum-map/
pulumi_wasm_generator_lib/tests/output/azure-native-nested-types/
pulumi_wasm_generator_lib/tests/output/cyclic-types/
pulumi_wasm_generator_lib/tests/output/different-enum/
pulumi_wasm_generator_lib/tests/output/functions-secrets/
pulumi_wasm_generator_lib/tests/output/mini-awsnative/
pulumi_wasm_generator_lib/tests/output/output-funcs/
pulumi_wasm_generator_lib/tests/output/output-funcs-edgeorder/
pulumi_wasm_generator_lib/tests/output/unions-inline/
pulumi_wasm_generator_lib/tests/output/unions-inside-arrays/
- uses: benjlevesque/[email protected]
id: short-sha
with:
length: 7
- name: Replace version
run: just update-version "0.0.0-NIGHTLY-${{ steps.short-sha.outputs.sha }}"
- name: Build
run: just build
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Test
run: just test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create commit
run: |
git config --local user.name "GitHub Actions"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add -A
git commit -m "Release v0.0.0-NIGHTLY-${{ steps.short-sha.outputs.sha }}"
git tag "v0.0.0-NIGHTLY-${{ steps.short-sha.outputs.sha }}"
git push origin "v0.0.0-NIGHTLY-${{ steps.short-sha.outputs.sha }}"