use specific fns instead of massive paths obj #778
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 "******************************" | |
# Checkout the repo | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Install npm | |
run: npm i -g npm@$(cat package.json | jq -r .engines.npm) | |
- 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 }}- | |
- run: npm install | |
- run: npm run removePolkadotJSWarnings | |
# 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 | |
# create the provider image | |
- name: Build provider image | |
run: | | |
docker build -f ./docker/images/provider.dockerfile . -t prosopo/provider:dev | |
# 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 10s | |
docker logs $CONTAINER >& provider.log | |
echo $(cat provider.log) | |
grep -oE "Version: \".*\"" provider.log || exit 1 |