diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index ac43699..c6fe9dc 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -31,3 +31,79 @@ jobs: run: | export FORCE_COLOR=1 ./dcmon --static-once dcmon-test ./examples/checks.yaml + + # Decide if a release is necessary, do any release linting/checks + check-release: + needs: [ compose-tests ] + 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: '' + + - 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/dcmon:${{ env.RELEASE_VERSION }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: lonocloud/dcmon:latest