From ad5753420e380ea53c6b6e7561226baa2fbe719a Mon Sep 17 00:00:00 2001 From: David Blane <32327139+dblane-digicatapult@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:14:51 +0000 Subject: [PATCH] Chore/use centralised templates (#87) * Switching workflows --- .github/workflows/release.yml | 165 ++++++---------------------------- .github/workflows/test.yml | 89 +++--------------- package-lock.json | 4 +- package.json | 2 +- 4 files changed, 41 insertions(+), 219 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 14616ee..12a8d08 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,142 +1,29 @@ -name: Release - +name: Release (NPM) on: push: - branches: ["main"] - + 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@v4 - with: - fetch-depth: 0 - - name: Check 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: 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 - - static-checks: - name: Run Static Analysis Checks - strategy: - matrix: - command: [lint, depcheck, check] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20.x - - name: Cache Node.js modules - uses: actions/cache@v4 - 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 ${{ matrix.command }} - - tests: - name: Run tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20.x - - name: Cache Node.js modules - uses: actions/cache@v4 - 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: Run 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@v4 - - name: Check version - id: get_version - uses: digicatapult/check-version@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - publish-npm: - name: 'Publish package to NPMJS' - needs: - - static-checks - - tests - - check-version - runs-on: ubuntu-latest - if: ${{ needs.check-version.outputs.is_new_version == 'true' }} - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '20.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: [publish-npm, check-version] - runs-on: ubuntu-latest - if: ${{ needs.check-version.outputs.is_new_version == 'true' }} - - steps: - - uses: actions/checkout@v4 - # Build github release - - name: Build release version - uses: 'marvinpinto/action-automatic-releases@latest' - with: - repo_token: '${{ secrets.GITHUB_TOKEN }}' - automatic_release_tag: ${{ needs.check-version.outputs.version }} - prerelease: false - title: Release ${{ needs.check-version.outputs.version }} - - name: Build release latest - uses: 'marvinpinto/action-automatic-releases@latest' - with: - repo_token: '${{ secrets.GITHUB_TOKEN }}' - automatic_release_tag: latest - prerelease: false - title: Latest Release ${{ needs.check-version.outputs.version }} + static-checks-npm: + uses: digicatapult/shared-workflows/.github/workflows/static-checks-npm.yml@main + with: + matrix_commands: '["lint", "depcheck", "check"]' + tests-npm: + uses: digicatapult/shared-workflows/.github/workflows/tests-npm.yml@main + with: + tests: '["test"]' + docker_compose_file: "" + release-npm: + needs: [static-checks-npm, tests-npm] + uses: digicatapult/shared-workflows/.github/workflows/release-module-npm.yml@main + with: + npm_build: true + permissions: + contents: write + secrets: + REGISTRY_AUTH_TOKEN: ${{ secrets.NPMJS_TOKEN }} + release-github: + needs: [release-npm] + uses: digicatapult/shared-workflows/.github/workflows/release-github.yml@main + permissions: + contents: write + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d6ba78f..5694dc5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,81 +1,16 @@ -name: Lint and Test - +name: Test (NPM) on: push: - branches-ignore: ["main"] - + branches-ignore: ['main'] jobs: - - repo_ids: - 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@v4 - with: - fetch-depth: 0 - - 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 - - static-checks: - name: Run Static Analysis Checks - strategy: - matrix: - command: [lint, depcheck, check] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20.x - - name: Cache Node.js modules - uses: actions/cache@v4 - 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 ${{ matrix.command }} - - tests: - name: Run tests - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 20.x - - name: Cache Node.js modules - uses: actions/cache@v4 - 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: Run tests - run: npm run test - + static-checks-npm: + uses: digicatapult/shared-workflows/.github/workflows/static-checks-npm.yml@main + with: + matrix_commands: '["lint", "depcheck", "check"]' + tests-npm: + uses: digicatapult/shared-workflows/.github/workflows/tests-npm.yml@main + with: + tests: '["test"]' + docker_compose_file: "" check-version: - name: "Check version" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Check version - id: get_version - uses: digicatapult/check-version@v1 - with: - token: ${{ secrets.GITHUB_TOKEN }} + uses: digicatapult/shared-workflows/.github/workflows/check-version.yml@main \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3b73d9c..da2b85d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@digicatapult/tsoa-oauth-express", - "version": "0.1.69", + "version": "0.1.70", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@digicatapult/tsoa-oauth-express", - "version": "0.1.69", + "version": "0.1.70", "license": "Apache-2.0", "dependencies": { "jsonwebtoken": "^9.0.2", diff --git a/package.json b/package.json index a02d7ca..301dfad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@digicatapult/tsoa-oauth-express", - "version": "0.1.69", + "version": "0.1.70", "description": "Authentication handler for TSOA using OAuth2 JWT tokens", "main": "build/index.js", "type": "commonjs",