Skip to content

Update dependency commander to v11 (#89) #94

Update dependency commander to v11 (#89)

Update dependency commander to v11 (#89) #94

Workflow file for this run

name: Release
on:
push:
branches: ['main']
jobs:
preconditions:
runs-on: ubuntu-latest
outputs:
repo_name: ${{ steps.repo_ids.outputs.REPO_NAME }}
org_name: ${{ steps.repo_ids.outputs.ORG_NAME }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Check Github token
run: |
if [ -z "${{ secrets.GITHUB_TOKEN }}"]; then
echo "Must provide a GITHUB_TOKEN secret in order to run release workflow"
exit 1
fi
- name: Check npmjs token
run: |
if [ -z "${{ secrets.NPMJS_TOKEN }}"]; then
echo "Must provide a NPMJS_TOKEN secret in order to run release workflow"
exit 1
fi
- name: Get repository identifiers
id: repo_ids
run: |
REPO_NAME=$(echo "${{ github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
ORG_NAME=$(echo "${{ github.event.repository.owner.name }}" | tr '[:upper:]' '[:lower:]')
echo "REPO_NAME=$REPO_NAME" >> $GITHUB_OUTPUT
echo "ORG_NAME=$ORG_NAME" >> $GITHUB_OUTPUT
lint:
name: Run lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@master
with:
node-version: 18.x
- name: Use npm latest
run: npm install -g npm@latest
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Lint
run: npm run lint
dependency-check:
name: Run dependency check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@master
with:
node-version: 18.x
- name: Use npm latest
run: npm install -g npm@latest
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Dependency Check
run: npm run depcheck
tests:
name: Run tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@master
with:
node-version: 18.x
- name: Use npm latest
run: npm install -g npm@latest
- name: Cache Node.js modules
uses: actions/cache@v3
with:
path: ~/.npm # npm cache files are stored in `~/.npm` on Linux/macOS
key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.OS }}-node-
${{ runner.OS }}-
- name: Install Packages
run: npm ci
- name: Setup dependencies
run: docker-compose up -d
- name: Sleep
uses: kibertoad/wait-action@1.0.1
with:
time: '30s'
- name: Run unit tests
run: npm run test:unit
- name: Run integration tests
run: npm run test
check-version:
name: 'Check version'
runs-on: ubuntu-latest
outputs:
is_new_version: ${{ steps.get_version.outputs.IS_NEW_VERSION }}
version: ${{ steps.get_version.outputs.VERSION }}
build_date: ${{ steps.get_version.outputs.BUILD_DATE }}
is_prerelease: ${{ steps.get_version.outputs.IS_PRERELEASE }}
steps:
- uses: actions/checkout@v3
- run: git fetch --depth=1 --tags origin
- name: Install yq
run: sudo snap install yq
- name: Check Build Version
id: get_version
run: ./scripts/check-version.sh
shell: bash
- name: Skipping release as version has not increased
if: steps.get_version.outputs.IS_NEW_VERSION != 'true'
shell: bash
run: |
echo "Skipping release as current version has already been published"
publish-gh:
name: 'Publish Github package'
needs:
- preconditions
- lint
- dependency-check
- tests
- check-version
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '16.x'
registry-url: 'https://npm.pkg.github.com'
scope: '@digicatapult'
- name: Install packages
run: npm ci
- name: Publish to github packages
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-npm:
name: 'Publish package to NPMJS'
needs:
- preconditions
- lint
- dependency-check
- tests
- check-version
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18.x'
registry-url: 'https://registry.npmjs.org'
scope: '@digicatapult'
- name: Install packages
run: npm ci
- name: Build
run: npm run build
- name: Publish to npmjs packages
run: npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }}
publish:
name: 'Publish release'
needs: [preconditions, lint, dependency-check, tests, check-version]
runs-on: ubuntu-latest
if: ${{ needs.check-version.outputs.is_new_version == 'true' }}
steps:
- uses: actions/checkout@v3
- name: Build release version
uses: softprops/action-gh-release@v1
with:
token: '${{ secrets.GITHUB_TOKEN }}'
tag_name: ${{ needs.check-version.outputs.version }}
prerelease: false
name: ${{ needs.check-version.outputs.version }}
generate_release_notes: true
- name: Delete release latest
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const { owner, repo } = context.repo
try {
await github.rest.git.deleteRef({ owner, repo, ref: 'tags/latest' })
}
catch (err) {
if (err.status !== 422) throw err
}
- name: Build release latest
uses: softprops/action-gh-release@v1
with:
token: '${{ secrets.GITHUB_TOKEN }}'
tag_name: latest
prerelease: false
name: Latest ${{ needs.check-version.outputs.version }}
generate_release_notes: true