Publish releases from GHA #18
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: 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 |