diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index 7e77ed7..f1e8998 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -53,3 +53,79 @@ jobs: 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