Skip to content

Release 0.4.0

Release 0.4.0 #183

Workflow file for this run

name: Push
on:
push: {}
pull_request:
branches: [ main ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch: {}
jobs:
test-node:
name: Run Tests+Examples (Node ${{ matrix.node_version }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node_version: [ '16.x', '18.x', '20.x', '22.x' ]
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with: { submodules: 'recursive', fetch-depth: 0 }
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
- name: Install NPM
run: npm install
- name: Run Tests
run: ./test/runtests
- name: Run Examples
run: ./test/runexamples
test-docker:
name: Run Examples (Docker)
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with: { submodules: 'recursive', fetch-depth: 0 }
- name: Build Image
run: |
docker build -t dctest .
- name: Install NPM (for schema validation)
run: npm install
- name: Run Examples
env:
DCTEST_IMAGE: dctest
run: ./test/runexamples
# Decide if a release is necessary, do any release linting/checks
check-release:
needs: [ test-node, test-docker ]
name: Check Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '.')
outputs:
RELEASE_VERSION: ${{ steps.get-version.outputs.RELEASE_VERSION }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with: { submodules: 'recursive', fetch-depth: 0 }
- id: get-version
name: Get release version
run: |
echo "RELEASE_VERSION=$(jq -r .version package.json)" | tee "$GITHUB_ENV" | tee "$GITHUB_OUTPUT"
- name: Check git tag matches release version
run: |
[ "refs/tags/v${RELEASE_VERSION}" == "${{ github.ref }}" ]
release-npm:
needs: [ check-release ]
name: Release NPM
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with: { submodules: 'recursive', fetch-depth: 0 }
# Setup .npmrc file to publish to npm
- uses: actions/setup-node@v4
with:
node-version: '20.x'
registry-url: 'https://registry.npmjs.org'
scope: '@lonocloud'
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
release-docker-hub:
needs: [ check-release ]
name: Release Docker Hub
runs-on: ubuntu-latest
env:
RELEASE_VERSION: ${{ needs.check-release.outputs.RELEASE_VERSION }}
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Checkout Repository
uses: actions/checkout@v4
with: { submodules: 'recursive', fetch-depth: 0 }
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: lonocloud/dctest:${{ env.RELEASE_VERSION }}
- name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: lonocloud/dctest:latest