test: esm variant of integration tests #3813
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: Lint and Test | |
on: | |
push: | |
branches: | |
- develop | |
- master | |
tags: | |
- '*' | |
paths-ignore: | |
- '**/*.md' | |
- 'LICENSE' | |
- 'Dockerfile' | |
- 'docker-compose.yml' | |
- 'dc.build.node.yml' | |
- '.github/**' | |
- '!.github/workflows/tests.yml' | |
pull_request: | |
branches: | |
- develop | |
- master | |
env: | |
TESTCONTAINERS_WATCHER_IMG: testcontainers/ryuk:0.3.2 | |
jobs: | |
check_skip: | |
runs-on: ubuntu-latest | |
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && github.repository == 'kiltprotocol/sdk-js'" | |
steps: | |
- name: Not Skipped | |
run: echo "Not Skipped" | |
build: | |
runs-on: ubuntu-latest | |
needs: check_skip | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
cache: 'yarn' | |
- name: yarn install | |
run: yarn install --immutable | |
- name: yarn build | |
run: yarn build | |
- name: zip build | |
run: zip -r build.zip . | |
- name: upload build | |
uses: actions/upload-artifact@v3 | |
with: | |
name: build | |
path: build.zip | |
lint: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: unzip | |
run: unzip build.zip -d . | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: lint | |
run: yarn lint | |
- name: check dependency duplication | |
run: if ! yarn dedupe --check; then echo "::warning ::Dependencies may be deduplicated"; fi; | |
test: | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
node-version: [16, 18] | |
required: ['required'] | |
include: | |
- node-version: 20 | |
required: 'optional' | |
continue-on-error: ${{ matrix.required == 'optional' }} | |
steps: | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: unzip | |
run: unzip build.zip -d . | |
- name: unit tests | |
run: yarn test:ci | |
cache_imgs: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v3 | |
- name: make sure testcontainers image is in cache | |
uses: ./.github/actions/cached-image-pull | |
with: | |
image: ${{ env.TESTCONTAINERS_WATCHER_IMG }} | |
integration_test: | |
runs-on: ubuntu-latest | |
needs: cache_imgs | |
strategy: | |
matrix: | |
image: ['latest-master', 'latest-develop', 'latest'] | |
required: ['optional'] | |
continue-on-error: ${{ matrix.required == 'optional' }} | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: unzip | |
run: unzip build.zip -d . | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Log out node version | |
run: node --version | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: eu-central-1 | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v1 | |
- name: pull image | |
env: | |
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
ECR_REPOSITORY: kilt/prototype-chain | |
IMAGE_TAG: ${{ matrix.image }} | |
run: | | |
docker pull $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | |
echo "TESTCONTAINERS_NODE_IMG=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_ENV | |
- name: get cached testcontainers image | |
uses: ./.github/actions/cached-image-pull | |
with: | |
image: ${{ env.TESTCONTAINERS_WATCHER_IMG }} | |
- name: run integration tests (cjs) | |
timeout-minutes: 60 | |
run: yarn test:integration -b | |
- name: run integration tests (esm) | |
timeout-minutes: 60 | |
run: yarn test:integration:esm -b | |
bundle_cache: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: unzip | |
run: unzip build.zip -d . | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: yarn bundle | |
run: yarn bundle | |
- name: upload bundle artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: checked-nonmin-bundle | |
path: packages/sdk-js/dist/sdk-js.umd.js | |
bundle_test: | |
runs-on: ubuntu-latest | |
needs: [cache_imgs, bundle_cache] | |
strategy: | |
matrix: | |
image: ['latest-master', 'latest'] | |
required: ['optional'] | |
include: | |
- image: 'latest-develop' | |
required: 'required' | |
continue-on-error: ${{ matrix.required == 'optional' }} | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: build | |
- name: unzip | |
run: unzip build.zip -d . | |
- uses: actions/download-artifact@v3 | |
with: | |
name: checked-nonmin-bundle | |
path: packages/sdk-js/dist | |
- uses: actions/setup-node@v3 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v2 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
aws-region: eu-central-1 | |
- name: Login to Amazon ECR | |
id: login-ecr | |
uses: aws-actions/amazon-ecr-login@v1 | |
- run: basename /packages/sdk-js/dist/ | |
- name: pull node image | |
env: | |
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | |
ECR_REPOSITORY: kilt/prototype-chain | |
IMAGE_TAG: ${{ matrix.image }} | |
run: | | |
docker pull $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG | |
echo "TESTCONTAINERS_NODE_IMG=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_ENV | |
- name: get cached testcontainers image | |
uses: ./.github/actions/cached-image-pull | |
with: | |
image: ${{ env.TESTCONTAINERS_WATCHER_IMG }} | |
- name: prepare bundle tests | |
run: | | |
yarn test:ci:bundle:preparation | |
- name: run bundle tests | |
timeout-minutes: 60 | |
run: | | |
yarn test:bundle |