Procaptcha token #1546
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: provider_image | |
on: | |
pull_request: | |
branches: [main] | |
paths: | |
- 'docker/**' | |
- 'dev/**' | |
- 'packages/**' | |
- 'contracts/**' | |
- '.github/workflows/provider_image.yml' | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
GH_TOKEN: ${{ github.token }} | |
jobs: | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Print contexts | |
env: | |
GITHUB_CONTEXT: ${{ toJson(github) }} | |
ENV_CONTEXT: ${{ toJson(env) }} | |
VARS_CONTEXT: ${{ toJson(vars) }} | |
JOB_CONTEXT: ${{ toJson(job) }} | |
STEPS_CONTEXT: ${{ toJson(steps) }} | |
RUNNER_CONTEXT: ${{ toJson(runner) }} | |
SECRETS_CONTEXT: ${{ toJson(secrets) }} | |
STRATEGY_CONTEXT: ${{ toJson(strategy) }} | |
MATRIX_CONTEXT: ${{ toJson(matrix) }} | |
NEEDS_CONTEXT: ${{ toJson(needs) }} | |
INPUTS_CONTEXT: ${{ toJson(inputs) }} | |
run: | | |
echo "******************************" | |
echo "github:" "$GITHUB_CONTEXT" | |
echo "******************************" | |
echo "env:" "$ENV_CONTEXT" | |
echo "******************************" | |
echo "vars:" "$VARS_CONTEXT" | |
echo "******************************" | |
echo "job:" "$JOB_CONTEXT" | |
echo "******************************" | |
echo "steps:" "$STEPS_CONTEXT" | |
echo "******************************" | |
echo "runner:" "$RUNNER_CONTEXT" | |
echo "******************************" | |
echo "secrets:" "$SECRETS_CONTEXT" | |
echo "******************************" | |
echo "strategy:" "$STRATEGY_CONTEXT" | |
echo "******************************" | |
echo "matrix:" "$MATRIX_CONTEXT" | |
echo "******************************" | |
echo "needs:" "$NEEDS_CONTEXT" | |
echo "******************************" | |
echo "inputs:" "$INPUTS_CONTEXT" | |
echo "******************************" | |
- uses: actions/checkout@v3 | |
- run: mkdir -p protocol/cargo-cache | |
- run: mkdir -p protocol/target | |
- run: mkdir -p node_modules | |
- run: mkdir -p ~/.cache/Cypress | |
- name: Restore cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
protocol/cargo-cache | |
protocol/target | |
node_modules | |
~/.cache/Cypress | |
# note that restoring a cache in github is a pain. The trailing '-' matches any string after the '-', therefore 'abc-' would match a cache named 'abc-1234' or 'abc-5678', etc. | |
# the problem is 'abc-' will not match a cache named 'abc'! So if you're using wildcard cache name selectors like this, you need a field that changes as the suffix to become the wildcard | |
# here we're setting the key to an unused cache key so it falls back to the wildcard selector in `restore-keys` | |
key: some-unused-cache-key | |
restore-keys: | | |
project-cache-${{ runner.os }}-${{ runner.arch }}- | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- run: npm i -g npm@$(cat package.json | jq -r .engines.npm) | |
- run: npm ci | |
# build the packages | |
- name: Build packages | |
run: | | |
cd dev/scripts | |
npm run build | |
# build the cli production bundle | |
- name: Build cli production bundle | |
run: | | |
cp ./dev/scripts/env.production ./packages/cli/.env.production | |
cp ./dev/scripts/env.production ./.env.production | |
NODE_ENV=production npm run -w @prosopo/cli bundle:prod | |
# Add support for more platforms with QEMU (optional) | |
# https://github.com/docker/setup-qemu-action | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
# We cannot create the images in a single step because the output of buildx is not compatible with | |
# `docker load`. https://stackoverflow.com/a/72952846/1178971 | |
# create the provider image for AMD64 | |
- name: Build the Provider Container | |
id: build_docker_provider_amd64 | |
continue-on-error: true | |
uses: docker/build-push-action@v5 | |
with: | |
context: ${{github.workspace}} | |
file: ${{github.workspace}}/docker/images/provider.dockerfile | |
platforms: linux/amd64 | |
push: false | |
tags: prosopo/provider:dev | |
outputs: type=docker,dest=provider-amd64.tar | |
# create the provider image for ARM64 | |
- name: Build the Provider Container | |
id: build_docker_provider_arm64 | |
continue-on-error: true | |
uses: docker/build-push-action@v5 | |
with: | |
context: ${{github.workspace}} | |
file: ${{github.workspace}}/docker/images/provider.dockerfile | |
platforms: linux/arm64 | |
push: false | |
tags: prosopo/provider:dev | |
outputs: type=docker,dest=provider-arm64.tar | |
# load the AMD64 image | |
- name: Load the Provider Container | |
run: docker load -i provider-amd64.tar | |
# Generate a mnemonic for the provider image | |
- name: Generate mnemonic and add to env file | |
run: | | |
PROSOPO_ROOT_DIR=$(pwd) NODE_ENV=production node dev/scripts/dist/scripts/generateMnemonic.js --env | |
# Check that the version command works when running the bundle in the provider image | |
- name: Check provider bundle runs | |
run: | | |
CONTAINER=$(docker run -d -v "./.env.production:/usr/src/app/.env.production" prosopo/provider:dev /bin/sh -c 'NODE_ENV=production npx provider version') | |
sleep 20s | |
docker logs $CONTAINER >& provider.log | |
echo $(cat provider.log) | |
grep -oE "Version: \".*\"" provider.log || (echo $(cat provider.log) && exit 1) |