Refactor/remove mocks (#1005) #55
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: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- "**" | |
env: | |
DOCKER_BUILDKIT: 1 | |
MAIN_BRANCH: main | |
URL_DOCKER_REGISTRY: ghcr.io | |
DOCKER_IMAGE_AGENCY: ghcr.io/absaoss/vcxagencynode/vcxagency-node:2.6.0 | |
DOCKER_IMAGE_POOL: ghcr.io/hyperledger/aries-vcx/indy_pool_localhost:1.15.0 | |
DOCKER_REPO_LOCAL_VDRPROXY: vdrproxy | |
RUST_TOOLCHAIN_VERSON: 1.70.0 | |
NODE_VERSION: 18.x | |
jobs: | |
verify-code-formatting: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: nightly-2023-05-08 | |
components: rustfmt | |
override: true | |
- name: "Verify code formatting" | |
run: | | |
cargo +nightly-2023-05-08 fmt --check | |
workflow-setup: | |
runs-on: ubuntu-20.04 | |
outputs: | |
PUBLISH_VERSION: ${{ steps.run-info.outputs.publish-version }} | |
RELEASE: ${{ steps.run-info.outputs.release }} | |
PRERELEASE: ${{ steps.run-info.outputs.pre-release }} | |
BRANCH_NAME: ${{ steps.run-info.outputs.branch-name }} | |
IS_FORK: ${{ steps.run-info.outputs.is-fork }} | |
SKIP_NAPI_M1: ${{ steps.skip-info.outputs.skip-napi-m1 }} | |
SKIP_CI: ${{ steps.skip-info.outputs.skip-ci }} | |
DOCKER_IMG_CACHED_VDRPROXY: ${{ steps.docker-imgs.outputs.DOCKER_IMG_CACHED_VDRPROXY }} | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v1 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Construct CI run-info" | |
id: run-info | |
uses: ./.github/actions/construct-run-info | |
- name: "Detect CI skip steps" | |
id: skip-info | |
uses: ./.github/actions/detect-skip-info | |
- name: "Set outputs" | |
id: docker-imgs | |
run: | | |
set -x | |
HASH_DOCKERFILE_LIBVCX=${{ hashFiles('.github/ci/libvcx.dockerfile') }} | |
HASH_DOCKERFILE_VDRPROXY=${{ hashFiles('.github/ci/vdrproxy.dockerfile') }} | |
HASH_SRC_LIBVDRTOOLS=${{ hashFiles('libvdrtools') }} | |
HASH_SRC_LIBVCX=${{ hashFiles('libvcx') }} | |
HASH_SRC_ARIESVCX=${{ hashFiles('aries_vcx') }} | |
HASH_SRC_ARIESVCX_CORE=${{ hashFiles('aries_vcx_core') }} | |
HASH_SRC_AGENCYCLIENT=${{ hashFiles('agency_client') }} | |
HASH_SRC_DIDDOC=${{ hashFiles('diddoc') }} | |
HASH_SRC_MESSAGES=${{ hashFiles('messages') }} | |
SEED_HASH_ARIESVCX=${HASH_SRC_LIBVDRTOOLS:0:11}-${HASH_SRC_ARIESVCX_CORE:0:11}-${HASH_SRC_ARIESVCX:0:11}-${HASH_SRC_AGENCYCLIENT:0:11}-${HASH_SRC_DIDDOC:0:11}-${HASH_SRC_MESSAGES:0:11}} | |
HASH_ARIESVCX=$(echo -n "$SEED_HASH_ARIESVCX" | sha256sum | awk '{print $1}') | |
echo "DOCKER_IMG_CACHED_VDRPROXY=$DOCKER_REPO_LOCAL_VDRPROXY:$HASH_DOCKERFILE_VDRPROXY" >> $GITHUB_OUTPUT | |
workflow-setup-check: | |
runs-on: ubuntu-20.04 | |
needs: workflow-setup | |
steps: | |
- name: "Print outputs" | |
run: | | |
echo "PUBLISH_VERSION ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }}" | |
echo "RELEASE ${{ needs.workflow-setup.outputs.RELEASE }}" | |
echo "PRERELEASE ${{ needs.workflow-setup.outputs.PRERELEASE }}" | |
echo "BRANCH_NAME ${{ needs.workflow-setup.outputs.BRANCH_NAME }}" | |
echo "IS_FORK ${{ needs.workflow-setup.outputs.IS_FORK }}" | |
echo "SKIP_NAPI_M1 ${{ needs.workflow-setup.outputs.SKIP_NAPI_M1 }}" | |
echo "SKIP_CI ${{ needs.workflow-setup.outputs.SKIP_CI }}" | |
echo "DOCKER_IMG_CACHED_VDRPROXY ${{ needs.workflow-setup.outputs.DOCKER_IMG_CACHED_VDRPROXY }}" | |
workspace_clippy: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
components: clippy | |
- name: "Install dependencies" | |
shell: bash | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev | |
- name: "Verify clippy across the entire workspace with default features" | |
run: | | |
cargo clippy --tests --all-features | |
env: | |
RUSTFLAGS: -D warnings | |
aries_vcx_clippy: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
backend: ["vdrtools", "modular_libs", "vdr_proxy_ledger"] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
components: clippy | |
- name: "Install dependencies" | |
shell: bash | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev | |
- name: "Verify clippy across the entire workspace with default features" | |
run: | | |
cargo clippy -p aries-vcx --features legacy_proof,migration --features ${{ matrix.backend }} --no-default-features | |
env: | |
RUSTFLAGS: -D warnings | |
aries_vcx_core_clippy: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
backend: ["vdrtools_anoncreds", "modular_libs", "vdr_proxy_ledger"] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
components: clippy | |
- name: "Install dependencies" | |
shell: bash | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev | |
- name: "Verify clippy across the entire workspace with default features" | |
run: | | |
cargo clippy -p aries_vcx_core --features legacy_proof,vdrtools_wallet --features ${{ matrix.backend }} | |
env: | |
RUSTFLAGS: -D warnings | |
libvcx_core_clippy: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
backend: ["anoncreds_credx", "anoncreds_vdrtools"] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
components: clippy | |
- name: "Install dependencies" | |
shell: bash | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev | |
- name: "Verify clippy across the entire workspace with default features" | |
run: | | |
cargo clippy -p libvcx_core --features ${{ matrix.backend }} | |
env: | |
RUSTFLAGS: -D warnings | |
node_wrapper_clippy: | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
backend: ["anoncreds_credx", "anoncreds_vdrtools"] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
components: clippy | |
- name: "Install dependencies" | |
shell: bash | |
run: | | |
sudo apt-get update -y | |
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev | |
- name: "Verify clippy across the entire workspace with default features" | |
run: | | |
cargo clippy -p vcx-napi-rs --features ${{ matrix.backend }} | |
env: | |
RUSTFLAGS: -D warnings | |
########################################################################################## | |
############################## DOCKER BUILD ########################################## | |
# todo: move to indy-vdr repo | |
build-docker-vdrproxy: | |
needs: [ workflow-setup ] | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
runs-on: ubuntu-20.04 | |
env: | |
DOCKER_IMG_CACHED: ${{ needs.workflow-setup.outputs.DOCKER_IMG_CACHED_VDRPROXY }} | |
BRANCH_NAME: ${{ needs.workflow-setup.outputs.BRANCH_NAME }} | |
outputs: | |
image-name: ${{ steps.meta.outputs.tags }} | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Build and cache image" | |
uses: ./.github/actions/build-image | |
with: | |
docker-img: ${{ env.DOCKER_IMG_CACHED }} | |
dockerfile-path: ".github/ci/vdrproxy.dockerfile" | |
build-arg: "ALPINE_CORE_IMAGE=$DOCKER_IMG_CACHED_ALPINE_CORE" | |
branch-name: ${{ env.BRANCH_NAME }} | |
branch-main: ${{ env.MAIN_BRANCH }} | |
docker-repo-local-name: ${{ env.DOCKER_REPO_LOCAL_VDRPROXY }} | |
########################################################################################## | |
############################## DOCKER PUBLISH ######################################## | |
publish-docker-vdrproxy: | |
runs-on: ubuntu-20.04 | |
needs: [ workflow-setup, build-docker-vdrproxy ] | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
env: | |
DOCKER_IMG_CACHED: ${{ needs.workflow-setup.outputs.DOCKER_IMG_CACHED_VDRPROXY }} | |
PUBLISH_VERSION: ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }} | |
BRANCH_NAME: ${{ needs.workflow-setup.outputs.BRANCH_NAME }} | |
IS_FORK: ${{ needs.workflow-setup.outputs.IS_FORK }} | |
steps: | |
- name: "Git checkout" | |
if: ${{ env.IS_FORK == 'false' }} | |
uses: actions/checkout@v3 | |
- name: "Docker Login" | |
uses: azure/docker-login@v1 | |
with: | |
login-server: ${{ env.URL_DOCKER_REGISTRY }} | |
username: $GITHUB_ACTOR | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Publish versioned image" | |
if: ${{ env.IS_FORK == 'false' }} | |
uses: ./.github/actions/publish-image | |
with: | |
docker-img: ${{ env.DOCKER_IMG_CACHED }} | |
publish-version: ${{ env.PUBLISH_VERSION }} | |
# ########################################################################################## | |
# ############################### CODECOV ########################################### | |
code-coverage-aries-vcx-integration-modular-libs: | |
needs: workflow-setup | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust codecov environment" | |
uses: ./.github/actions/setup-codecov-rust | |
- name: "Run workspace tests: modular libs profile" | |
run: | | |
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' \ | |
RUST_TEST_THREADS=1 CARGO_INCREMENTAL=0 TEST_POOL_IP=127.0.0.1 cargo test --package aries-vcx -F 'modular_libs' -- --ignored; | |
mkdir -p /tmp/artifacts/coverage | |
grcov ./target/debug/ -s . -t lcov --llvm --branch --ignore-not-existing -o /tmp/artifacts/coverage/coverage.lcov | |
- name: "Upload coverage to Codecov" | |
uses: codecov/codecov-action@v2 | |
with: | |
directory: /tmp/artifacts/coverage | |
flags: unittests-aries-vcx | |
name: codecov-unit-aries-vcx | |
fail_ci_if_error: true | |
path_to_write_report: /tmp/artifacts/coverage/codecov_report.gz | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: code-coverage-report-unit-aries-vcx | |
path: /tmp/artifacts/coverage | |
########################################################################################## | |
############################### TESTING ########################################### | |
test-unit-workspace: | |
needs: workflow-setup | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
features: [ | |
"anoncreds_vdrtools", | |
"anoncreds_credx", | |
] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
skip-docker-setup: true | |
- name: "Run workspace unit tests" | |
run: RUST_TEST_THREADS=1 cargo test --workspace --lib --exclude aries-vcx-agent --exclude libvdrtools --exclude wallet_migrator --features ${{ matrix.features }} | |
test-integration-aries-vcx: | |
needs: workflow-setup | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
features: [ | |
"vdrtools", | |
"modular_libs" | |
] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Run aries-vcx integration tests" | |
run: RUST_TEST_THREADS=1 cargo test --manifest-path="aries_vcx/Cargo.toml" --features ${{ matrix.features }} -- --ignored; | |
test-integration-aries-vcx-mysql: | |
needs: workflow-setup | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Run aries-vcx tests: mysql_test" | |
run: RUST_TEST_THREADS=1 cargo test --manifest-path="aries_vcx/Cargo.toml" test_mysql -- --include-ignored; | |
test-integration-aries-vcx-vdrproxy: | |
needs: [workflow-setup, build-docker-vdrproxy] | |
runs-on: ubuntu-20.04 | |
env: | |
RUST_TEST_THREADS: 1 | |
VDR_PROXY_CLIENT_URL: http://127.0.0.1:3030 | |
DOCKER_IMAGE_VDRPROXY: ${{ needs.workflow-setup.outputs.DOCKER_IMG_CACHED_VDRPROXY }} | |
GENESIS_URL: https://raw.githubusercontent.com/AbsaOSS/sovrin-networks/master/genesis/127.0.0.1.ndjson | |
VDR_PROXY_PORT: 3030 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Load image" | |
uses: ./.github/actions/load-image | |
with: | |
docker-img: ${{ env.DOCKER_IMAGE_VDRPROXY }} | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
skip-vdrproxy-setup: false | |
- name: "Run aries-vcx tests: vdrproxy_test" | |
run: RUST_TEST_THREADS=1 cargo test --manifest-path="aries_vcx/Cargo.toml" -F vdr_proxy_ledger -- --ignored | |
- name: "Collect docker logs on failure" | |
if: failure() | |
uses: ./.github/actions/upload-docker-logs | |
with: | |
name: "docker-services-${{ github.job }}" | |
test-integration-aries-vcx-migration: | |
needs: workflow-setup | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Run aries-vcx tests: pool_tests agency_pool_tests" | |
run: | | |
cargo test --manifest-path="wallet_migrator/Cargo.toml"; | |
RUST_TEST_THREADS=1 CARGO_INCREMENTAL=0 TEST_POOL_IP=127.0.0.1 cargo test --manifest-path="aries_vcx/Cargo.toml" -F migration --test test_credential_issuance -- --include-ignored; | |
RUST_TEST_THREADS=1 CARGO_INCREMENTAL=0 TEST_POOL_IP=127.0.0.1 cargo test --manifest-path="aries_vcx/Cargo.toml" -F migration --test test_credential_retrieval -- --include-ignored; | |
RUST_TEST_THREADS=1 CARGO_INCREMENTAL=0 TEST_POOL_IP=127.0.0.1 cargo test --manifest-path="aries_vcx/Cargo.toml" -F migration --test test_proof_presentation -- --include-ignored; | |
RUST_TEST_THREADS=1 CARGO_INCREMENTAL=0 TEST_POOL_IP=127.0.0.1 cargo test --manifest-path="aries_vcx/Cargo.toml" -F migration --test test_revocations -- --include-ignored; | |
test-integration-libvcx: | |
needs: workflow-setup | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
features: [ | |
"anoncreds_vdrtools", | |
"anoncreds_credx" | |
] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Run libvcx_core integration tests" | |
run: | | |
RUST_TEST_THREADS=1 cargo test --features ${{ matrix.features }} --manifest-path="libvcx_core/Cargo.toml" -- --include-ignored; | |
test-integration-did-crate: | |
needs: workflow-setup | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup rust testing environment" | |
uses: ./.github/actions/setup-testing-rust | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
- name: "Run resolver tests" | |
run: | | |
RUST_TEST_THREADS=1 cargo test -p did_doc -p did_parser -p did_resolver -p did_resolver_registry -p did_resolver_sov -p did_resolver_web -p did_doc_sov -p did_key -p did_peer --test "*" | |
test-integration-node-wrapper: | |
needs: workflow-setup | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
node-version: [18.x] | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Setup NodeJS libvcx testing environment" | |
uses: ./.github/actions/setup-testing-nodejs | |
with: | |
rust-toolchain-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
node-version: ${{ matrix.node-version }} | |
- name: "Run wrapper integration tests" | |
run: (cd wrappers/node && npm run test:integration) | |
- name: "Install vcxagent-core dependencies" | |
run: (cd agents/node/vcxagent-core && npm install) | |
- name: "Run demo" | |
run: (cd agents/node/vcxagent-core && AGENCY_URL=http://localhost:8080 npm run demo) | |
- name: "Run demo with revocation" | |
run: (cd agents/node/vcxagent-core && AGENCY_URL=http://localhost:8080 npm run demo:revocation) | |
- name: "Run integration tests" | |
run: (cd agents/node/vcxagent-core && AGENCY_URL=http://localhost:8080 npm run test:integration) | |
########################################################################################## | |
############################ NPMJS PUBLISHING ####################################### | |
publish-node-wrapper: | |
runs-on: ubuntu-20.04 | |
needs: | |
- workflow-setup | |
- publish-napi | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
env: | |
PUBLISH_VERSION: ${{needs.workflow-setup.outputs.PUBLISH_VERSION}} | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Use Node.js 18" | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: "Publish package" | |
run: | | |
if [[ "$PUBLISH_VERSION" ]] | |
then | |
NPMJS_TOKEN=${{ secrets.NPMJS_TOKEN }} PUBLISH_VERSION=${{ env.PUBLISH_VERSION }} ./wrappers/node/publish.sh | |
else | |
echo "New version was not defined, skipping release." | |
fi | |
publish-agent-core: | |
runs-on: ubuntu-20.04 | |
needs: | |
- workflow-setup | |
- publish-node-wrapper | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
env: | |
NPMJS_TOKEN: ${{ secrets.NPMJS_TOKEN }} | |
PUBLISH_VERSION: ${{needs.workflow-setup.outputs.PUBLISH_VERSION}} | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v3 | |
- name: "Use Node.js 18" | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- name: "Release agent-core package" | |
run: | | |
if [[ "$PUBLISH_VERSION" ]] | |
then | |
NPMJS_TOKEN=${{ secrets.NPMJS_TOKEN }} PUBLISH_VERSION=${{ env.PUBLISH_VERSION }} ./agents/node/vcxagent-core/publish.sh | |
else | |
echo "New version was not defined, skipping release." | |
fi | |
build-napi: | |
needs: | |
- workflow-setup | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- host: ubuntu-20.04 | |
target: x86_64-unknown-linux-gnu | |
build: |- | |
set -e | |
sudo apt-get update -y | |
sudo apt-get install -y libssl-dev libzmq3-dev | |
npm run build:napi | |
strip *.node | |
- host: ubuntu-20.04 | |
target: x86_64-unknown-linux-musl | |
docker: ghcr.io/hyperledger/aries-vcx/napi-rs-alpine | |
build: |- | |
set -e | |
env | |
unset CC | |
unset CXX | |
cd wrappers/vcx-napi-rs | |
npm run build:napi | |
strip *.node | |
- host: macos-latest | |
target: x86_64-apple-darwin | |
build: | | |
brew install openssl zmq pkg-config | |
npm run build:napi | |
strip -x *.node | |
- host: macos-latest | |
target: aarch64-apple-darwin | |
skip: ${{ needs.workflow-setup.outputs.SKIP_NAPI_M1 }} | |
build: | | |
wget https://github.com/macports/macports-base/releases/download/v2.8.0/MacPorts-2.8.0-12-Monterey.pkg | |
sudo installer -pkg ./MacPorts-2.8.0-12-Monterey.pkg -target / | |
export PATH=/opt/local/bin:/opt/local/sbin:$PATH | |
sudo port install openssl +universal zmq +universal | |
export OPENSSL_DIR=/opt/local | |
export OPENSSL_INCLUDE_DIR=/opt/local/include/ | |
export OPENSSL_LIB_DIR=/opt/local/lib/ | |
export SODIUM_LIB_DIR=/opt/local/lib/ | |
export SODIUM_INCLUDE_DIR=/opt/local/include | |
export LIBZMQ_LIB_DIR=/opt/local/lib/ | |
export LIBZMQ_INCLUDE_DIR=/opt/local/include | |
export PKG_CONFIG_ALLOW_CROSS=1 | |
export PKG_CONFIG_SYSROOT_DIR=/ | |
export RUST_BACKTRACE=1 | |
npm run build:napi -- --target aarch64-apple-darwin | |
strip -x *.node | |
name: ${{ matrix.settings.target }} | |
runs-on: ${{ matrix.settings.host }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/build-napi | |
if: ${{ matrix.settings.skip != 'true' }} | |
with: | |
docker: ${{ matrix.settings.docker }} | |
target: ${{ matrix.settings.target }} | |
build: ${{ matrix.settings.build }} | |
node-version: ${{ env.NODE_VERSION }} | |
rust-version: ${{ env.RUST_TOOLCHAIN_VERSON }} | |
publish-napi: | |
runs-on: ubuntu-20.04 | |
needs: | |
- workflow-setup | |
- test-unit-workspace | |
- test-integration-libvcx | |
- test-integration-aries-vcx | |
- test-integration-aries-vcx-mysql | |
# - test-node-wrapper | |
- test-integration-node-wrapper | |
- workflow-setup | |
- build-napi | |
if: ${{ needs.workflow-setup.outputs.SKIP_CI != 'true' && needs.workflow-setup.outputs.IS_FORK == 'false' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: ./.github/actions/publish-napi | |
with: | |
publish-version: ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }} | |
npmjs-token: ${{ secrets.NPMJS_TOKEN }} | |
node-version: ${{ env.NODE_VERSION }} | |
########################################################################################## | |
############################## RELEASE ######################################### | |
make-release: | |
runs-on: ubuntu-20.04 | |
needs: | |
- workflow-setup | |
- test-unit-workspace | |
- test-integration-libvcx | |
- test-integration-aries-vcx | |
- test-integration-aries-vcx-mysql | |
# - test-node-wrapper | |
- test-integration-node-wrapper | |
if: ${{ needs.workflow-setup.outputs.RELEASE == 'true' || needs.workflow-setup.outputs.PRERELEASE == 'true' }} | |
outputs: | |
RELEASE_UPLOAD_URL: ${{ steps.create-release.outputs.upload_url }} | |
steps: | |
- name: "Git checkout" | |
uses: actions/checkout@v2 | |
- name: "Generate changelog" | |
uses: heinrichreimer/action-github-changelog-generator@v2.3 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
futureRelease: ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }} | |
releaseBranch: main | |
pullRequests: true | |
unreleased: false | |
unreleasedOnly: false | |
issuesWoLabels: true | |
prWoLabels: true | |
stripGeneratorNotice: true | |
stripHeaders: false | |
maxIssues: 50 | |
excludeLabels: duplicate,question,invalid,wontfix,changelog-excluded | |
breakingLabels: backwards-incompatible,breaking | |
deprecatedLabels: deprecated | |
headerLabel: "# Changelog" | |
breakingLabel: '### Breaking changes' | |
enhancementLabel: '### Enhancements' | |
bugsLabel: '### Bug fixes' | |
deprecatedLabel: '### Deprecations' | |
removedLabel: '### Removals' | |
securityLabel: '### Security fixes' | |
issuesLabel: '### Other issues' | |
prLabel: '### Other pull requests' | |
addSections: '{"ci":{"prefix":"### CI changes","labels":["ci"]},"wrappers":{"prefix":"### Wrapper changes","labels":["wrappers"]},"agents":{"prefix":"### Changes to agents","labels":["agents"]},"features":{"prefix":"### Features","labels":["features"]},"hotfix":{"prefix":"### Hotfixes","labels":["hotfix"]},"security":{"prefix":"### Security fixes","labels":["security"]},"refactoring":{"prefix":"### Refactoring","labels":["refactoring"]},"tests":{"prefix":"### Tests","labels":["tests"]},"update":{"prefix":"### Updates","labels":["update"]}}' | |
excludeTagsRegex: '^((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))+)?)$' | |
- name: "Create a new release" | |
id: create-release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }} | |
release_name: Release ${{ needs.workflow-setup.outputs.PUBLISH_VERSION }} | |
body_path: ./CHANGELOG.md | |
draft: ${{ needs.workflow-setup.outputs.PRERELEASE == 'true' }} | |
prerelease: ${{ needs.workflow-setup.outputs.PRERELEASE == 'true' }} |