Feat/openmedia hotstandby heartbeat logic #349
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: Node CI - Lint and Test | |
on: | |
push: | |
branches: | |
- '**' | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
pull_request: | |
jobs: | |
lint: | |
name: Lint and Type check | |
runs-on: ubuntu-latest | |
timeout-minutes: 3 | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '16' | |
- name: Cache node_modules | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} | |
- name: Prepare Environment | |
run: yarn | |
env: | |
CI: true | |
- name: Type check | |
run: yarn build | |
env: | |
CI: true | |
- name: Lint | |
run: | | |
yarn lint | |
env: | |
CI: true | |
test: | |
name: Test on node ${{ matrix.node_version }} and ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
node_version: ['14', '16', '18', '20'] | |
os: [ubuntu-latest] # [windows-latest, macOS-latest] | |
timeout-minutes: 5 | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js ${{ matrix.node_version }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node_version }} | |
- name: Cache node_modules | |
uses: actions/cache@v4 | |
with: | |
path: '**/node_modules' | |
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} | |
- name: Prepare Environment | |
run: | | |
yarn | |
yarn build | |
env: | |
CI: true | |
- name: Run unit tests | |
run: | | |
yarn test -- --maxWorkers=2 --forceExit --coverage | |
env: | |
CI: true | |
- name: Send coverage | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
validate-dependencies: | |
name: Validate production dependencies | |
runs-on: ubuntu-latest | |
continue-on-error: false | |
timeout-minutes: 5 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Use Node.js 16 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
- name: Prepare Environment | |
run: | | |
yarn install | |
env: | |
CI: true | |
- name: Validate dependencies | |
run: | | |
yarn validate:dependencies | |
env: | |
CI: true | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 | |
# only run for tags | |
if: contains(github.ref, 'refs/tags/') | |
needs: | |
- test | |
- lint | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
persist-credentials: false | |
- name: Use Node.js 16 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 16 | |
- name: Check release is desired | |
id: do-publish | |
run: | | |
if [ -z "${{ secrets.NPM_TOKEN }}" ]; then | |
echo "No Token" | |
else | |
cd packages/connector | |
PACKAGE_NAME=@mos-connection/connector | |
PUBLISHED_VERSION=$(yarn npm info --json $PACKAGE_NAME | jq -c '.version' -r) | |
THIS_VERSION=$(node -p "require('./package.json').version") | |
# Simple bash helper to comapre version numbers | |
verlte() { | |
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ] | |
} | |
verlt() { | |
[ "$1" = "$2" ] && return 1 || verlte $1 $2 | |
} | |
if verlt $PUBLISHED_VERSION $THIS_VERSION | |
then | |
echo "Publishing latest" | |
echo "tag=latest" >> $GITHUB_OUTPUT | |
else | |
echo "Publishing hotfix" | |
echo "tag=hotfix" >> $GITHUB_OUTPUT | |
fi | |
fi | |
- name: Prepare Environment | |
if: ${{ steps.do-publish.outputs.tag }} | |
run: | | |
yarn install | |
env: | |
CI: true | |
- name: Build | |
if: ${{ steps.do-publish.outputs.tag }} | |
run: | | |
yarn build | |
env: | |
CI: true | |
- name: Publish to NPM | |
if: ${{ steps.do-publish.outputs.tag }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc | |
yarn lerna publish from-package --tag-version-prefix='' --dist-tag ${{ steps.do-publish.outputs.tag }} --yes --no-verify-access | |
env: | |
CI: true |