Skip to content

Publish releases from GHA #18

Publish releases from GHA

Publish releases from GHA #18

Workflow file for this run

name: Push
on:
push: {}
pull_request:
branches: [ main ]
workflow_dispatch: {}
jobs:
compose-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: npm install
run: npm install
- name: Startup compose example
timeout-minutes: 2
run: time docker compose -p dcmon-test -f examples/docker-compose.yaml up -d
- name: dcmon
timeout-minutes: 5
run: |
time ./dcmon --no-tui --show-events all dcmon-test ./examples/checks.yaml
- name: dcmon final state
if: always()
timeout-minutes: 1
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: 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