component with created_at #2800
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
tags: | |
- "v*.*.*" | |
branches: | |
- main | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
checks: write | |
pull-requests: write | |
env: | |
BUILD_TARGET: "x86_64-unknown-linux-gnu" | |
jobs: | |
docker-targets-build: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' && github.ref_type == 'tag' | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- platform: linux/amd64 | |
name: linux/amd64 | |
target: x86_64-unknown-linux-gnu | |
- platform: linux/arm64 | |
name: linux/arm64 | |
target: aarch64-unknown-linux-gnu | |
name: docker-targets-build (${{ matrix.platform.platform }}) | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: "0" | |
- name: Prepare | |
run: | | |
platform=${{ matrix.platform.platform }} | |
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable && rustup target add ${{ matrix.platform.target }} | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Rust Target | |
run: rustup target add ${{ matrix.platform.target }} | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Install gcc-aarch64-linux-gnu | |
if: matrix.platform.platform == 'linux/arm64' | |
run: | | |
sudo apt-get update | |
sudo apt-get install gcc-aarch64-linux-gnu | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: release-gcc-aarch64-linux-gnu | |
cache-all-crates: true | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- name: Build Executables | |
env: | |
PLATFORM_OVERRIDE: ${{ matrix.platform.name }} | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make build-release | |
- name: Prepare Targets | |
env: | |
PLATFORM_OVERRIDE: ${{ matrix.platform.name }} | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make package-release | |
- uses: actions/upload-artifact@v4 | |
name: Upload Targets | |
with: | |
name: docker-targets-build-${{ env.PLATFORM_PAIR }} | |
path: target/${{ matrix.platform.target }}.tar | |
docker-publish: | |
runs-on: ubuntu-latest | |
needs: [ docker-targets-build ] | |
if: github.event_name == 'push' && github.ref_type == 'tag' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: "0" | |
- name: Prepare | |
run: | | |
echo "PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_ENV | |
- uses: actions/download-artifact@v4 | |
name: Download Targets | |
with: | |
pattern: docker-targets-build-* | |
path: target | |
merge-multiple: true | |
- name: Extract Targets | |
run: | | |
ls -R target | |
cd target | |
for f in *.tar; do tar xvf "$f"; done | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Set Docker version | |
id: set-version | |
run: | | |
if [ "${{ github.event_name }}" == 'push' ] && [ "${{ github.ref_type }}" == 'tag' ]; then | |
DOCKER_VERSION=$(echo "${{ github.ref }}" | sed 's|^refs/tags/v||') | |
echo "DOCKER_VERSION=${DOCKER_VERSION}" >> $GITHUB_ENV | |
else | |
COMMIT_SHORT_HASH=$(git rev-parse --short=7 HEAD) | |
echo "DOCKER_VERSION=${COMMIT_SHORT_HASH}" >> $GITHUB_ENV | |
fi | |
- uses: jpribyl/[email protected] | |
continue-on-error: true | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- name: Extract metadata (tags, labels) for worker executor | |
id: meta-worker-executor | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-worker-executor | |
- name: Build and push worker executor image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-worker-executor/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-worker-executor.outputs.tags }} | |
labels: ${{ steps.meta-worker-executor.outputs.labels }} | |
- name: Extract metadata (tags, labels) for shard manager | |
id: meta-shard-manager | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-shard-manager | |
- name: Build and push shard manager image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-shard-manager/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-shard-manager.outputs.tags }} | |
labels: ${{ steps.meta-shard-manager.outputs.labels }} | |
- name: Extract metadata (tags, labels) for golem component service | |
id: meta-golem-component-service | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-component-service | |
- name: Build and push golem component service image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-component-service/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-golem-component-service.outputs.tags }} | |
labels: ${{ steps.meta-golem-component-service.outputs.labels }} | |
- name: Extract metadata (tags, labels) for golem worker service | |
id: meta-golem-worker-service | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-worker-service | |
- name: Build and push golem worker service image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-worker-service/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-golem-worker-service.outputs.tags }} | |
labels: ${{ steps.meta-golem-worker-service.outputs.labels }} | |
- name: Extract metadata (tags, labels) for golem component compilation service | |
id: meta-golem-component-compilation-service | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-component-compilation-service | |
- name: Build and push golem component compilation service image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-component-compilation-service/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-golem-component-compilation-service.outputs.tags }} | |
labels: ${{ steps.meta-golem-component-compilation-service.outputs.labels }} | |
- name: Extract metadata (tags, labels) for golem router | |
id: meta-golem-router | |
uses: docker/metadata-action@v5 | |
with: | |
images: golemservices/golem-router | |
- name: Build and push golem router | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: ./golem-router/docker/Dockerfile | |
push: true | |
platforms: ${{ env.PLATFORMS }} | |
tags: ${{ steps.meta-golem-router.outputs.tags }} | |
labels: ${{ steps.meta-golem-router.outputs.labels }} | |
check: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check formatting and clippy rules | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make check | |
build: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: true | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build all targets | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make build | |
unit-tests: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check that OpenAPI specs are up-to-date | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make check-openapi | |
- name: Check that configs are up-to-date | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make check-configs | |
- name: Unit tests | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make unit-tests | |
worker-tests-group1: | |
runs-on: ubuntu-latest-large | |
name: worker-tests-group1 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug-workertests | |
cache-all-crates: true | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Redis | |
uses: shogo82148/[email protected] | |
with: | |
redis-version: latest | |
auto-start: false | |
- name: Worker Executor integration tests | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make worker-executor-tests-group1 | |
timeout-minutes: 20 | |
worker-tests: | |
needs: [ worker-tests-group1 ] | |
runs-on: ubuntu-latest-large | |
strategy: | |
fail-fast: true | |
matrix: | |
group: | |
- name: group2 | |
- name: group3 | |
- name: group4 | |
- name: group5 | |
- name: group6 | |
name: worker-tests-${{ matrix.group.name }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug-workertests | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Redis | |
uses: shogo82148/[email protected] | |
with: | |
redis-version: latest | |
auto-start: false | |
- name: Worker Executor integration tests | |
env: | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make worker-executor-tests-${{ matrix.group.name }} | |
timeout-minutes: 40 | |
integration-tests: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Redis | |
uses: shogo82148/[email protected] | |
with: | |
redis-version: latest | |
auto-start: false | |
- name: Integration tests | |
env: | |
QUIET: 1 | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make integration-tests | |
timeout-minutes: 30 | |
cli-tests: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Redis | |
uses: shogo82148/[email protected] | |
with: | |
redis-version: latest | |
auto-start: false | |
- name: CLI tests | |
env: | |
QUIET: 1 | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make cli-tests | |
timeout-minutes: 30 | |
sharding-tests: | |
runs-on: ubuntu-latest-large | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: debug | |
cache-all-crates: true | |
save-if: false | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Redis | |
uses: shogo82148/[email protected] | |
with: | |
redis-version: latest | |
auto-start: false | |
- name: Sharding tests | |
env: | |
QUIET: 1 | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make sharding-tests | |
timeout-minutes: 30 | |
publish: | |
needs: | |
[ | |
build, | |
check, | |
unit-tests, | |
worker-tests, | |
integration-tests, | |
cli-tests, | |
sharding-tests, | |
] | |
if: "startsWith(github.ref, 'refs/tags/v')" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable | |
- uses: Swatinem/rust-cache@v2 | |
with: | |
shared-key: release | |
cache-all-crates: true | |
- name: Run sccache-cache | |
uses: mozilla-actions/[email protected] | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- id: get_version | |
uses: battila7/get-version-action@v2 | |
- name: Publish all packages | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} | |
VERSION: ${{ steps.get_version.outputs.version-without-v }} | |
SCCACHE_GHA_ENABLED: "true" | |
RUSTC_WRAPPER: "sccache" | |
run: cargo make publish | |
publish_cli_binaries: | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') && github.repository == 'golemcloud/golem' | |
name: Publish binaries of golem-cli | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- rust-target: x86_64-unknown-linux-gnu | |
os: ubuntu-latest | |
- rust-target: aarch64-unknown-linux-gnu | |
os: ubuntu-latest | |
cross: true | |
- rust-target: x86_64-apple-darwin | |
os: macos-latest | |
- rust-target: aarch64-apple-darwin | |
os: macos-latest | |
- rust-target: x86_64-pc-windows-gnu | |
os: windows-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Rust | |
run: rustup update stable --no-self-update && rustup default stable && rustup target add ${{ matrix.rust-target }} | |
- uses: davidB/rust-cargo-make@v1 | |
- name: Install Protoc | |
uses: arduino/setup-protoc@v3 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- id: get_version | |
uses: battila7/get-version-action@v2 | |
- name: Set version for all packages | |
env: | |
VERSION: ${{ steps.get_version.outputs.version-without-v }} | |
run: cargo make set-version | |
- run: cargo build -p golem-cli --release --target ${{ matrix.rust-target }} | |
if: ${{ ! matrix.cross }} | |
- run: cargo install cross | |
if: ${{ matrix.cross }} | |
- run: cross build -p golem-cli --release --target ${{ matrix.rust-target }} | |
if: ${{ matrix.cross }} | |
- run: mv ./target/${{ matrix.rust-target }}/release/golem-cli.exe ./target/${{ matrix.rust-target }}/release/golem-cli-${{ matrix.rust-target }}.exe | |
if: matrix.os == 'windows-latest' | |
- run: mv ./target/${{ matrix.rust-target }}/release/golem-cli ./target/${{ matrix.rust-target }}/release/golem-cli-${{ matrix.rust-target }} | |
if: matrix.os != 'windows-latest' | |
- name: Login GH CLI | |
shell: bash | |
run: gh auth login --with-token < <(echo ${{ secrets.GITHUB_TOKEN }}) | |
- run: gh release upload -R golemcloud/golem --clobber ${{ github.ref_name }} target/${{ matrix.rust-target }}/release/golem-cli-${{ matrix.rust-target }}.exe | |
if: matrix.os == 'windows-latest' | |
- run: gh release upload -R golemcloud/golem --clobber ${{ github.ref_name }} target/${{ matrix.rust-target }}/release/golem-cli-${{ matrix.rust-target }} | |
if: matrix.os != 'windows-latest' |