Skip to content

ci/cd refactor: on-pr workflow #24

ci/cd refactor: on-pr workflow

ci/cd refactor: on-pr workflow #24

Workflow file for this run

# Placeholder for the PR workflow.
name: on-pr
on:
pull_request: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
pull-requests: write
contents: read
env:
ARTIFACT_NAME: placeholder
CONSENSUS_ENCLAVE_CSS: /tmp/consensus-enclave.css
GH_SHORT_SHA: placeholder
INGEST_ENCLAVE_CSS: /tmp/ingest-enclave.css
RUST_BACKTRACE: full
RUST_BIN_PATH: placeholder
jobs:
lint-actions:
runs-on: mco-dev-small-x64
steps:
- name: Lint GitHub Actions
uses: mobilecoinofficial/gh-actions/lint-actions@27a8d66eb4dcb10910cc8560563391e64238634a
# CBB: Need to clean up repo shell scripts to pass shellcheck
# lint-shell:
# runs-on: mco-dev-small-x64
# steps:
# - name: Lint shell with Shellcheck
# uses: mobilecoinofficial/gh-actions/lint-shell@27a8d66eb4dcb10910cc8560563391e64238634a
lint-helm:
runs-on: mco-dev-small-x64
steps:
- name: Lint Helm Charts
uses: mobilecoinofficial/gh-actions/lint-helm@6b12f401e2129f99617464ebd06bd3cb79686bed
lint-docker:
runs-on: mco-dev-small-x64
steps:
- name: Lint Dockerfiles with Hadolint
uses: mobilecoinofficial/gh-actions/lint-docker@27a8d66eb4dcb10910cc8560563391e64238634a
# lint-rust:
# runs-on: mco-dev-large-x64
# container:
# image: mobilecoin/rust-sgx-base:v0.0.36
# env:
# SGX_MODE: SW
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Consensus SigStruct
# uses: ./.github/actions/download-sigstruct
# with:
# sigstruct: consensus
# network: test
# download_path: ${{ env.CONSENSUS_ENCLAVE_CSS }}
# - name: Ingest SigStruct
# uses: ./.github/actions/download-sigstruct
# with:
# sigstruct: ingest
# network: test
# download_path: ${{ env.INGEST_ENCLAVE_CSS }}
# - name: Cargo sort
# shell: bash
# run: |
# cargo install cargo-sort --force
# cargo sort --workspace --grouped --check
# - name: Cargo fmt
# shell: bash
# run: |
# cargo fmt -- --unstable-features --check
# - name: Cargo Clippy
# shell: bash
# run: |
# cargo clippy --all --all-features
# test-rust:
# runs-on: mco-dev-large-x64
# container:
# image: mobilecoin/rust-sgx-base:v0.0.36
# env:
# SGX_MODE: SW
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Consensus SigStruct
# uses: ./.github/actions/download-sigstruct
# with:
# sigstruct: consensus
# network: test
# download_path: ${{ env.CONSENSUS_ENCLAVE_CSS }}
# - name: Ingest SigStruct
# uses: ./.github/actions/download-sigstruct
# with:
# sigstruct: ingest
# network: test
# download_path: ${{ env.INGEST_ENCLAVE_CSS }}
# - name: Cargo Test
# shell: bash
# env:
# CARGO_INCREMENTAL: "0"
# RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests"
# RUSTDOCFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests"
# run: |
# cargo test
# skip coverage for now, old actions-rs/grcov is deprecated
# need to learn how to generate .xml reports for codecov below
# - name: grcov
# shell: bash
# run: |
# cargo install grcov
# - name: Codecov
# uses: codecov/codecov-action@v3.1.4
# with:
# files: ${{ steps.coverage.outputs.report }}
# verbose: true
# fail_ci_if_error: true
# env:
# CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
# build-rust-linux:
# strategy:
# matrix:
# runner:
# - mco-dev-large-x64
# network:
# - main
# - test
# runs-on: ${{ matrix.runner }}
# container:
# image: mobilecoin/rust-sgx-base:v0.0.36
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Build Rust
# uses: ./.github/actions/build-rust
# with:
# network: ${{ matrix.network }}
# build-rust-macos:
# strategy:
# fail-fast: false
# matrix:
# runner:
# - [self-hosted, macOS, X64]
# - [self-hosted, macOS, ARM64]
# network:
# - main
# - test
# runs-on: ${{ matrix.runner }}
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Bootstrap macOS
# shell: bash
# run: |
# echo "-- install brew dependencies"
# rm -rf "$(brew --prefix)/var/homebrew/locks"
# brew bundle --quiet
# echo "-- install rust toolchain"
# rm -rf /Users/runner/.cargo
# rm -rf /Users/runner/.rustup
# rustup toolchain install "$(cat rust-toolchain)"
# echo "-- add cargo to path"
# rustup_cargo=$(rustup which cargo)
# echo "CARGO_HOME=${HOME}/.cargo" >> "${GITHUB_ENV}"
# echo "RUSTUP_HOME=${HOME}/.rustup" >> "${GITHUB_ENV}"
# echo "${HOME}/.cargo/bin" >> "${GITHUB_PATH}"
# echo "$(dirname "${rustup_cargo}")" >> "${GITHUB_PATH}"
# - name: Build Rust
# uses: ./.github/actions/build-rust
# with:
# network: ${{ matrix.network }}
# build-publish-containers:
# needs:
# - build-rust-linux
# strategy:
# matrix:
# runner:
# - mco-dev-small-x64
# network:
# - chain_id: main
# peer: mc://node1.prod.mobilecoinww.com/,mc://node2.prod.mobilecoinww.com/
# tx_source_url: https://ledger.mobilecoinww.com/node1.prod.mobilecoinww.com/,https://ledger.mobilecoinww.com/node2.prod.mobilecoinww.com
# - chain_id: test
# peer: mc://node1.test.mobilecoin.com/,mc://node2.test.mobilecoin.com/
# tx_source_url: https://s3-us-west-1.amazonaws.com/mobilecoin.chain/node1.test.mobilecoin.com/,https://s3-us-west-1.amazonaws.com/mobilecoin.chain/node2.test.mobilecoin.com/
# runs-on: ${{ matrix.runner }}
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Setup Env
# shell: bash
# run: |
# set -e -o pipefail
# # Set vars so we can use them in this step
# GH_SHORT_SHA="sha-$(echo "${GITHUB_SHA}" | cut -c1-7)"
# ARTIFACT_NAME="full-service-${{ matrix.network.chain_id }}net-${{ runner.os }}-${{ runner.arch }}-${GH_SHORT_SHA}"
# echo "GH_SHORT_SHA=${GH_SHORT_SHA}" >> "${GITHUB_ENV}"
# echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> "${GITHUB_ENV}"
# echo "RUST_BIN_PATH=build-artifacts/${ARTIFACT_NAME}" >> "${GITHUB_ENV}"
# # CBB: Move this to gh-actions
# - name: Restore Artifacts
# uses: actions/download-artifact@v4
# with:
# name: ${{ env.ARTIFACT_NAME }}
# path: build-artifacts
# - name: check artifacts
# shell: bash
# run: |
# ls -alR build-artifacts
# # fix mirror binaries path
# cp ${RUST_BIN_PATH}/mirror/* ${RUST_BIN_PATH}
# - name: Docker - build and publish full-service
# uses: mobilecoinofficial/gh-actions/docker@v0
# with:
# dockerfile: .internal-ci/docker/Dockerfile.full-service
# images: mobilecoin/full-service
# build_args: |
# RUST_BIN_PATH=${{ env.RUST_BIN_PATH }}
# MC_CHAIN_ID=${{ matrix.network.chain_id }}
# MC_PEER=${{ matrix.network.peer }}
# MC_TX_SOURCE_URL=${{ matrix.network.tx_source_url }}
# flavor: |
# latest=false
# tags: |
# v0-${{ env.GH_SHORT_SHA }}.${{ matrix.network.chain_id }}net
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# build-publish-charts:
# needs:
# - build-rust-linux
# strategy:
# matrix:
# network:
# - chain_id: main
# - chain_id: test
# runs-on: mco-dev-small-x64
# env:
# CHART_REPO: https://harbor.mobilecoin.com/chartrepo/mobilecoinofficial-public
# steps:
# - name: Checkout
# uses: mobilecoinofficial/gh-actions/checkout@v0
# - name: Setup Env
# shell: bash
# run: |
# set -e -o pipefail
# echo "GH_SHORT_SHA=sha-$(echo "${GITHUB_SHA}" | cut -c1-7)" >> "${GITHUB_ENV}"
# - name: Publish helm chart full-service
# uses: mobilecoinofficial/gha-k8s-toolbox@v1
# with:
# action: helm-publish
# chart_app_version: v0-${{ env.GH_SHORT_SHA }}.${{ matrix.network.chain_id }}net
# chart_path: .internal-ci/helm/full-service
# chart_repo: ${{ env.CHART_REPO }}
# chart_repo_password: ${{ secrets.HARBOR_PASSWORD }}
# chart_repo_username: ${{ secrets.HARBOR_USERNAME }}
# chart_version: v0-${{ env.GH_SHORT_SHA }}.${{ matrix.network.chain_id }}net
# - name: Publish helm chart full-service-mirror
# uses: mobilecoinofficial/gha-k8s-toolbox@v1
# with:
# action: helm-publish
# chart_app_version: v0-${{ env.GH_SHORT_SHA }}.${{ matrix.network.chain_id }}net
# chart_path: .internal-ci/helm/full-service-mirror
# chart_repo: ${{ env.CHART_REPO }}
# chart_repo_password: ${{ secrets.HARBOR_PASSWORD }}
# chart_repo_username: ${{ secrets.HARBOR_USERNAME }}
# chart_version: v0-${{ env.GH_SHORT_SHA }}.${{ matrix.network.chain_id }}net
# build binaries:
# testnet, mainnet
# linux amd64 arm64
# macos intel, apple
# containers:
# linux arm64, amd64
# test:
# lint
# docker (hadolint)
# shellcheck
# actionlint
# helm lint
# rust/cargo fmt
# rust/cargo clippy
# rust/cargo sort
# unit
# integration - testnet, mainnet