Support for publishing SQL schema from scratch, and publishing from a branch #4418
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-build | |
on: | |
push: | |
branches: [ main, release/** ] | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
divviup_ts_interop_container: | |
description: divviup-ts container image tag for use in integration tests | |
required: false | |
type: string | |
jobs: | |
janus_build: | |
strategy: | |
matrix: | |
rust-toolchain: [ | |
# MSRV from Cargo.toml | |
"1.67", | |
"stable", | |
] | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: "write" | |
contents: "read" | |
env: | |
CARGO_INCREMENTAL: 0 | |
CARGO_TERM_COLOR: always | |
RUSTFLAGS: "-D warnings" | |
steps: | |
- name: Set default input values | |
id: default-input-values | |
run: | | |
DIVVIUP_TS_INTEROP_CONTAINER= ${{ inputs.divviup_ts_interop_container }} | |
echo "divviup_ts_interop_container=${DIVVIUP_TS_INTEROP_CONTAINER:-us-west2-docker.pkg.dev/divviup-artifacts-public/divviup-ts/divviup_ts_interop_client:dap-draft-04@sha256:43ccdf68e319c677f12f0cb730c63e73b872477cf0e1310b727f449b74a14ac2}" >> $GITHUB_OUTPUT | |
- name: Get OS version | |
id: os-version | |
run: echo "release=$(lsb_release --release --short)" >> $GITHUB_OUTPUT | |
- uses: actions/checkout@v3 | |
- name: Setup Go toolchain | |
uses: actions/setup-go@v4 | |
- name: Install Kind | |
# We should always make sure that the `kind` CLI we install is from the | |
# same release as the node image version used by | |
# `janus_core::test_util::kubernetes::EphemeralCluster` | |
run: go install sigs.k8s.io/[email protected] | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-toolchain }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
driver: docker-container | |
use: true | |
- name: Cache dependencies | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ steps.os-version.outputs.release }} | |
- name: Pre-build embedded container images | |
uses: docker/[email protected] | |
with: | |
files: docker-bake.hcl | |
workdir: . | |
targets: interop_binaries_small | |
load: true | |
- name: Expose GitHub Runtime | |
uses: crazy-max/ghaction-github-runtime@v2 | |
- name: Build minimal janus_messages | |
run: cargo build --profile ci --package janus_messages --no-default-features | |
- name: Build janus_core | |
run: cargo build --profile ci --package janus_core | |
# Note: keep Build & Test steps consecutive, and match flags other than `--no-run`. | |
- name: Build | |
run: cargo test --profile ci --no-run --locked --all-targets | |
- name: Test | |
id: test | |
env: | |
JANUS_E2E_LOGS_PATH: ${{ github.workspace }}/test-logs | |
DIVVIUP_TS_INTEROP_CONTAINER: ${{ steps.default-input-values.outputs.divviup_ts_interop_container }} | |
run: cargo test --profile ci --locked --all-targets | |
# Continue on error so we can upload logs | |
continue-on-error: true | |
- name: Upload container logs | |
# Only get logs on test failure | |
if: steps.test.outcome == 'failure' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: container-logs | |
path: ${{ github.workspace }}/test-logs/ | |
# Not all test failures yield log files | |
if-no-files-found: ignore | |
# Force overall job to fail if tests fail | |
- name: test status | |
if: steps.test.outcome == 'failure' | |
run: exit 1 | |
janus_lints: | |
strategy: | |
matrix: | |
rust-toolchain: [ | |
# MSRV from Cargo.toml | |
"1.67", | |
"stable", | |
] | |
runs-on: ubuntu-latest | |
env: | |
CARGO_INCREMENTAL: 0 | |
CARGO_TERM_COLOR: always | |
JANUS_INTEROP_CONTAINER: skip | |
RUSTDOCFLAGS: "-D warnings" | |
RUSTFLAGS: "-D warnings" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-toolchain }} | |
components: clippy, rustfmt | |
- name: Format | |
run: cargo fmt --message-format human -- --check | |
- name: Clippy | |
run: cargo clippy --profile ci --workspace --all-targets | |
- name: Clippy (all features) | |
run: cargo clippy --profile ci --workspace --all-targets --all-features | |
- name: Document | |
run: cargo doc --profile ci --workspace | |
janus_docker: | |
runs-on: ubuntu-latest | |
env: | |
DOCKER_BUILDKIT: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- run: echo "GIT_REVISION=$(git describe --always --dirty=-modified)" >> $GITHUB_ENV | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
driver: docker-container | |
use: true | |
- name: Build | |
uses: docker/[email protected] | |
with: | |
files: docker-bake.hcl | |
workdir: . | |
targets: janus | |
load: true | |
- run: docker run --rm janus_aggregator --help | |
- run: docker run --rm janus_aggregation_job_creator --help | |
- run: docker run --rm janus_aggregation_job_driver --help | |
- run: docker run --rm janus_collection_job_driver --help | |
- run: docker run --rm janus_cli --help | |
janus_interop_docker: | |
runs-on: ubuntu-latest | |
env: | |
DOCKER_BUILDKIT: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
with: | |
driver: docker-container | |
use: true | |
- name: Build | |
uses: docker/[email protected] | |
with: | |
files: docker-bake.hcl | |
workdir: . | |
targets: interop_binaries |