ci: use stackabletech/actions for multi-arch image build/push #285
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: Build pipeline | |
on: [push, pull_request] | |
env: | |
RUST_TOOLCHAIN_VERSION: "1.79.0" | |
RUSTFLAGS: "-D warnings" | |
RUSTDOCFLAGS: "-D warnings" | |
CARGO_TERM_COLOR: always | |
jobs: | |
test: | |
name: Run tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- uses: dtolnay/rust-toolchain@d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
- run: cargo test --all-features | |
clippy: | |
name: Check clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- uses: dtolnay/rust-toolchain@d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: clippy | |
- run: cargo clippy --all-targets -- -D warnings | |
fmt: | |
name: Check formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- uses: dtolnay/rust-toolchain@d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
components: rustfmt | |
- run: cargo fmt --all -- --check | |
docs: | |
name: Generate docs | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- uses: dtolnay/rust-toolchain@d8352f6b1d2e870bc5716e7a6d9b65c4cc244a1a | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSION }} | |
- run: cargo doc --document-private-items | |
build: | |
name: Build and push container image | |
needs: [test, clippy, fmt, docs] | |
permissions: | |
id-token: write | |
runs-on: ${{ matrix.runner }} | |
strategy: | |
matrix: | |
runner: | |
- ubuntu-latest | |
- ubicloud-standard-8-arm | |
steps: | |
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 | |
- name: Build and (optionally) push container image | |
id: build | |
uses: stackabletech/actions/build-container-image@ab97c67d79a79d9c6b0dc81b5dbe2fc5fd216a5a # v0.0.4 | |
with: | |
image-name: trino-lb | |
image-index-manifest-tag: dev | |
container-file: docker/Dockerfile | |
# - name: Publish Container Image on docker.stackable.tech | |
# if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
# uses: stackabletech/actions/publish-image@ab97c67d79a79d9c6b0dc81b5dbe2fc5fd216a5a # v0.0.4 | |
# with: | |
# image-registry-uri: docker.stackable.tech | |
# image-registry-username: github | |
# image-registry-password: ${{ secrets.NEXUS_PASSWORD }} | |
# image-repository: stackable/trino-lb | |
# image-manifest-tag: ${{ steps.build.outputs.image-manifest-tag }} | |
# source-image-uri: ${{ steps.build.outputs.image-manifest-uri }} | |
- name: Publish Container Image on oci.stackable.tech | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
uses: stackabletech/actions/publish-image@ab97c67d79a79d9c6b0dc81b5dbe2fc5fd216a5a # v0.0.4 | |
with: | |
image-registry-uri: oci.stackable.tech | |
image-registry-username: robot$stackable+github-action-build | |
image-registry-password: ${{ secrets.HARBOR_ROBOT_STACKABLE_GITHUB_ACTION_BUILD_SECRET }} | |
# trino-lb is not (yet) a product as the SDP, but a community project, so use "stackable" instead of "sdp" | |
image-repository: stackable/trino-lb | |
image-manifest-tag: ${{ steps.build.outputs.image-manifest-tag }} | |
source-image-uri: ${{ steps.build.outputs.image-manifest-uri }} | |
publish_manifests: | |
name: Build and publish index manifest | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
needs: [build] | |
permissions: | |
id-token: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
# - name: Publish and Sign Image Index Manifest to docker.stackable.tech | |
# uses: stackabletech/actions/publish-index-manifest@ab97c67d79a79d9c6b0dc81b5dbe2fc5fd216a5a # v0.0.4 | |
# with: | |
# image-registry-uri: docker.stackable.tech | |
# image-registry-username: github | |
# image-registry-password: ${{ secrets.NEXUS_PASSWORD }} | |
# image-repository: stackable/trino-lb | |
# image-index-manifest-tag: dev | |
- name: Publish and Sign Image Index Manifest to oci.stackable.tech | |
uses: stackabletech/actions/publish-index-manifest@ab97c67d79a79d9c6b0dc81b5dbe2fc5fd216a5a # v0.0.4 | |
with: | |
image-registry-uri: oci.stackable.tech | |
image-registry-username: robot$stackable+github-action-build | |
image-registry-password: ${{ secrets.HARBOR_ROBOT_STACKABLE_GITHUB_ACTION_BUILD_SECRET }} | |
# trino-lb is not (yet) a product as the SDP, but a community project, so use "stackable" instead of "sdp" | |
image-repository: stackable/trino-lb | |
image-index-manifest-tag: dev |