Skip to content

Merge pull request #544 from interlay/dependabot/github_actions/docke… #1574

Merge pull request #544 from interlay/dependabot/github_actions/docke…

Merge pull request #544 from interlay/dependabot/github_actions/docke… #1574

Workflow file for this run

name: Continuous integration
permissions:
contents: write
on:
push:
branches:
- master
- dev
tags:
- '*'
pull_request:
jobs:
test:
name: Test Suite
runs-on: [self-hosted, linux]
strategy:
matrix:
metadata:
- parachain-metadata-interlay
- parachain-metadata-kintsugi
steps:
- uses: actions/checkout@v4
- run: git fetch --prune --unshallow
- name: Install System Dependencies
run: |
sudo apt-get update && sudo apt-get install -y \
cmake pkg-config libssl-dev git clang curl libc6-dev protobuf-compiler
- name: Set variables
run: |
echo "TOOLCHAIN=$(rustup show active-toolchain | cut -d " " -f1)" >> $GITHUB_ENV
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.TOOLCHAIN }}
components: rustfmt
- name: fmt
run: |
cargo fmt --all -- --check
- run: rustup component add clippy
- name: clippy
run: |
cargo clippy --release --workspace --features ${{ matrix.metadata }}
- name: check
run: |
cargo check --release --workspace --features ${{ matrix.metadata }}
- name: test
if: matrix.metadata == 'parachain-metadata-kintsugi'
env:
RUST_LOG: info,regalloc=warn
BITCOIN_RPC_URL: http://127.0.0.1:18443
BITCOIN_RPC_USER: rpcuser
BITCOIN_RPC_PASS: rpcpassword
ELECTRS_URL: http://localhost:3002
run: |
docker-compose up -d bitcoind bitcoin-cli electrs
cargo test --release --workspace --features ${{ matrix.metadata }} --features uses-bitcoind
- name: build
run: |
cargo build --release --workspace --features ${{ matrix.metadata }}
- name: upload artifacts - vault
uses: actions/upload-artifact@v4
with:
name: vault-${{ matrix.metadata }}
path: target/release/vault
retention-days: 10
- name: upload artifacts - oracle
uses: actions/upload-artifact@v4
with:
name: oracle-${{ matrix.metadata }}
path: target/release/oracle
retention-days: 10
- name: upload artifacts - faucet
uses: actions/upload-artifact@v4
with:
name: faucet-${{ matrix.metadata }}
path: target/release/faucet
retention-days: 10
- name: upload artifacts - runner
if: matrix.metadata == 'parachain-metadata-kintsugi'
uses: actions/upload-artifact@v4
with:
name: runner
path: target/release/runner
retention-days: 10
build_docker:
if: ${{ github.ref_type == 'tag' || contains(fromJson('["master", "dev", "gha-release"]'), github.head_ref || github.ref_name) }}
needs: [test]
runs-on: [self-hosted, linux]
strategy:
matrix:
client: ["oracle", "vault", "faucet"]
metadata:
- parachain-metadata-interlay
- parachain-metadata-kintsugi
steps:
- uses: actions/checkout@v4
- name: Prepare
id: prep
run: |
TS=$(date +%s)
echo "branch_name=$(echo ${GITHUB_REF##*/})" >> $GITHUB_OUTPUT
echo "tag=$(echo ${{ matrix.client }}-${{ matrix.metadata }}-)" >> $GITHUB_OUTPUT
echo "ts=$TS" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v4
with:
name: ${{ matrix.client }}-${{ matrix.metadata }}
path: artifacts/
- run: |
mkdir -p ./target/release/
mv ./artifacts/${{ matrix.client }} ./target/release/${{ matrix.client }}-${{ matrix.metadata }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup docker context for buildx
id: buildx-context
run: |
docker context create builders
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
endpoint: builders
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login to Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: docker.io/interlayhq/interbtc-clients
tags: |
type=sha,prefix=${{ steps.prep.outputs.branch_name }}-,suffix=-${{ steps.prep.outputs.ts }}
type=ref,event=branch,prefix=${{ matrix.client }}-${{ matrix.metadata }}-
type=ref,event=tag,prefix=${{ matrix.client }}-${{ matrix.metadata }}-
- name: Build and push
id: docker_build
uses: docker/build-push-action@v6
with:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
context: .
file: .deploy/Dockerfile
build-args: |
BINARY=${{ matrix.client }}-${{ matrix.metadata }}
PROFILE=release
build_docker_combined:
if: ${{ github.ref_type == 'tag' || contains(fromJson('["master", "dev", "gha-release"]'), github.head_ref || github.ref_name) }}
needs: [test]
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- name: Prepare
id: prep
run: |
TS=$(date +%s)
echo "branch_name=$(echo ${GITHUB_REF##*/})" >> $GITHUB_OUTPUT
echo "ts=$TS" >> $GITHUB_OUTPUT
- uses: actions/download-artifact@v4
with:
path: artifacts/
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup docker context for buildx
id: buildx-context
run: |
docker context create builders
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
endpoint: builders
- name: Available platforms
run: echo ${{ steps.buildx.outputs.platforms }}
- name: Login to Dockerhub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: docker.io/interlayhq/interbtc-clients
tags: |
type=sha,prefix=${{ steps.prep.outputs.branch_name }}-,suffix=-${{ steps.prep.outputs.ts }}
- name: Build and push
id: docker_build
uses: docker/build-push-action@v6
with:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64
context: .
file: .deploy/Dockerfile-combined
publish-draft-release:
if: ${{ github.ref_type == 'tag' }}
runs-on: [self-hosted, linux]
needs: [test]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: artifacts
- run: |
cd ./artifacts
# flatten folder structure
mkdir _out
find ./ -type f -exec sh -c 'mv {} _out/$(dirname {})' \;
# remove empty folders
find ./ -type d -empty -delete
# calc checksums
cd _out && find . -type f -print0 | xargs -0 sha256sum > ../sha256sums.txt && cd ..
mv _out/* ./
cd ..
git-chglog --output CHANGELOG.md $GITHUB_REF_NAME
- name: Release
uses: softprops/action-gh-release@v2
with:
body_path: CHANGELOG.md
draft: true
files: |
artifacts/**/*