mirror of
https://github.com/alexgo-io/stacks-blockchain-api.git
synced 2026-01-12 16:53:19 +08:00
962 lines
28 KiB
YAML
962 lines
28 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- develop
|
|
- beta
|
|
- nakamoto
|
|
tags-ignore:
|
|
- "**"
|
|
paths-ignore:
|
|
- "**/CHANGELOG.md"
|
|
- "**/package.json"
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Lint ESLint
|
|
run: npm run lint:eslint
|
|
|
|
- name: Lint Prettier
|
|
run: npm run lint:prettier
|
|
|
|
- name: Lint Unused Exports
|
|
run: npm run lint:unused-exports
|
|
|
|
lint-docs:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: ./docs
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Build schema & docs
|
|
run: npm run build
|
|
|
|
- name: Validate generated types
|
|
run: tsc index.d.ts
|
|
|
|
- name: Lint JSON
|
|
run: npm run lint:json
|
|
|
|
- name: Lint YAML
|
|
run: npm run lint:yaml
|
|
|
|
- name: Lint OpenAPI
|
|
run: npm run lint:openapi
|
|
|
|
- name: Validate schemas
|
|
run: npm run validate:schemas
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Install client deps
|
|
working-directory: client
|
|
run: npm ci --audit=false
|
|
|
|
- name: Install docs deps
|
|
working-directory: docs
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy -- -d
|
|
npm run devenv:logs -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: npm run test
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-event-replay:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
docker compose -f docker/docker-compose.dev.postgres.yml up -d
|
|
npm run devenv:logs -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run RPC tests
|
|
run: npm run test:event-replay
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-rpc:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run RPC tests
|
|
run: npm run test:rpc
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-btc-faucet:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy -- -d
|
|
npm run devenv:logs -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run btc faucet tests
|
|
run: npm run test:btc-faucet
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-bns:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run bns tests
|
|
run: npm run test:bns
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-subnets:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: '.nvmrc'
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy:subnets -- -d
|
|
npm run devenv:logs:subnets -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: npm run test:subnets
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop:subnets
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: always()
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-bns-e2e:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run bns tests
|
|
run: npm run test:bns-e2e
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-2_4:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
suite:
|
|
[
|
|
block-zero-handling,
|
|
faucet-stx,
|
|
pox-3-btc-address-formats,
|
|
pox-3-delegate-aggregation,
|
|
pox-3-delegate-stacking,
|
|
pox-3-delegate-revoked-stacking,
|
|
pox-3-stack-extend-increase,
|
|
pox-3-rosetta-btc-addr-types,
|
|
pox-3-rosetta-cycle-phases,
|
|
pox-3-rosetta-segwit,
|
|
pox-3-burnchain-stack-stx,
|
|
pox-3-burnchain-delegate-stx,
|
|
]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: npm run test:2.4 -- --testPathPattern "${{ matrix.suite }}"
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-rosetta:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: npm run test:rosetta
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-rosetta-construction:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0" >> $GITHUB_ENV
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: npm run test:rosetta-construction
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-rosetta-cli-data:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0">> $GITHUB_ENV
|
|
|
|
- name: Setup cli enviroment variable
|
|
run: |
|
|
echo STACKS_BLOCKCHAIN_API_HOST=0.0.0.0>> .env
|
|
echo STACKS_CORE_PROXY_HOST=0.0.0.0 >> .env
|
|
echo STACKS_CORE_RPC_HOST=0.0.0.0 >> .env
|
|
echo STACKS_CORE_EVENT_HOST=0.0.0.0 >> .env
|
|
echo BTC_RPC_HOST=http://0.0.0.0 >> .env
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: sudo npm run test:rosetta-cli:data
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
test-rosetta-cli-construction:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Use Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Cache node modules
|
|
uses: actions/cache@v3
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: |
|
|
~/.npm
|
|
**/node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-build-${{ env.cache-name }}-
|
|
${{ runner.os }}-build-
|
|
${{ runner.os }}-
|
|
|
|
- name: Install deps
|
|
run: npm ci --audit=false
|
|
|
|
- name: Setup env vars
|
|
run: echo "STACKS_CORE_EVENT_HOST=http://0.0.0.0">> $GITHUB_ENV
|
|
|
|
- name: Setup cli enviroment variable
|
|
run: |
|
|
echo STACKS_BLOCKCHAIN_API_HOST=0.0.0.0>> .env
|
|
echo STACKS_CORE_PROXY_HOST=0.0.0.0 >> .env
|
|
echo STACKS_CORE_RPC_HOST=0.0.0.0 >> .env
|
|
echo STACKS_CORE_EVENT_HOST=0.0.0.0 >> .env
|
|
echo BTC_RPC_HOST=http://0.0.0.0 >> .env
|
|
|
|
- name: Setup integration environment
|
|
run: |
|
|
sudo ufw disable
|
|
npm run devenv:deploy-krypton -- -d
|
|
npm run devenv:logs-krypton -- --no-color &> docker-compose-logs.txt &
|
|
|
|
- name: Run tests
|
|
run: sudo npm run test:rosetta-cli:construction
|
|
|
|
- name: Print integration environment logs
|
|
run: cat docker-compose-logs.txt
|
|
if: failure()
|
|
|
|
- name: Teardown integration environment
|
|
run: npm run devenv:stop-krypton
|
|
if: always()
|
|
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
if: always()
|
|
|
|
- name: Upload coverage to Coveralls
|
|
uses: coverallsapp/github-action@master
|
|
if: ${{ false }}
|
|
with:
|
|
github-token: ${{ secrets.github_token }}
|
|
flag-name: run-${{ github.job }}
|
|
parallel: true
|
|
|
|
build-publish:
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- lint
|
|
- lint-docs
|
|
- test
|
|
- test-2_4
|
|
- test-bns
|
|
- test-rosetta
|
|
- test-rosetta-cli-construction
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
token: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
fetch-depth: 0
|
|
persist-credentials: false
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: ".nvmrc"
|
|
|
|
- name: Semantic Release
|
|
uses: cycjimmy/semantic-release-action@v3
|
|
id: semantic
|
|
# Only run on non-PR events or only PRs that aren't from forks
|
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GH_TOKEN || secrets.GITHUB_TOKEN }}
|
|
NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
|
|
SEMANTIC_RELEASE_PACKAGE: ${{ github.event.repository.name }}
|
|
with:
|
|
semantic_version: 19
|
|
extra_plugins: |
|
|
@semantic-release/changelog@6.0.3
|
|
@semantic-release/git@10.0.1
|
|
@semantic-release/exec@6.0.3
|
|
conventional-changelog-conventionalcommits@6.1.0
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Docker Meta
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: |
|
|
blockstack/${{ github.event.repository.name }}
|
|
hirosystems/${{ github.event.repository.name }}
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=ref,event=pr
|
|
type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
|
type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
|
type=raw,value=latest,enable={{is_default_branch}}
|
|
|
|
- name: Docker Standalone Meta
|
|
id: meta_standalone
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: |
|
|
blockstack/${{ github.event.repository.name }}-standalone
|
|
hirosystems/${{ github.event.repository.name }}-standalone
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=ref,event=pr
|
|
type=semver,pattern={{version}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
|
type=semver,pattern={{major}}.{{minor}},value=${{ steps.semantic.outputs.new_release_version }},enable=${{ steps.semantic.outputs.new_release_version != '' }}
|
|
type=raw,value=latest,enable={{is_default_branch}}
|
|
|
|
- name: Login to DockerHub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
|
|
|
- name: Build/Tag/Push Image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
# Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks)
|
|
push: ${{ (github.ref != 'refs/heads/master' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
|
|
|
|
- name: Build/Tag/Push Standalone Image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
build-args: |
|
|
STACKS_API_VERSION=${{ github.head_ref || github.ref_name }}
|
|
file: docker/rosetta.Dockerfile
|
|
tags: ${{ steps.meta_standalone.outputs.tags }}
|
|
labels: ${{ steps.meta_standalone.outputs.labels }}
|
|
# Only push if (there's a new release on main branch, or if building a non-main branch) and (Only run on non-PR events or only PRs that aren't from forks)
|
|
push: ${{ (github.ref != 'refs/heads/master' || steps.semantic.outputs.new_release_version != '') && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }}
|
|
|
|
- name: API Discord notification
|
|
if: steps.semantic.outputs.new_release_version != ''
|
|
uses: Ilshidur/action-discord@master
|
|
env:
|
|
DISCORD_WEBHOOK: ${{ secrets.DISCORD_API_WEBHOOK }}
|
|
DISCORD_USERNAME: Hiro Team
|
|
DISCORD_AVATAR: "https://i.imgur.com/z9Iy6ug.png"
|
|
DISCORD_EMBEDS: |
|
|
[{
|
|
"title": "API Release: ${{ steps.semantic.outputs.new_release_version }}",
|
|
"url": "https://github.com/hirosystems/stacks-blockchain-api/releases/tag/v${{ steps.semantic.outputs.new_release_version }}"
|
|
}]
|
|
with:
|
|
args: ":rocket: A new version (${{ steps.semantic.outputs.new_release_version }}) of the Stacks Blockchain API is available on Github!"
|