diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 886b45a..efbc17e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,198 +1,147 @@ name: Release -on: - push: - branches: ['main'] +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@v4 - 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 - static-checks: - name: Run Static Analysis Checks - strategy: - fail-fast: false - 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: Checks - run: npm run ${{ matrix.command }} - tests: - name: Run tests - strategy: - fail-fast: false - matrix: - command: ['test'] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '8.0.x' - - 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 wasm tools - run: dotnet workload install wasm-tools - - name: Install Packages - run: npm ci - - name: Build - run: npm run build - - name: Run tests - run: npm run ${{ matrix.command }} - 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-gh: - name: 'Publish Github package' - needs: - - preconditions - - static-checks - - tests - - check-version - runs-on: ubuntu-latest - if: ${{ needs.check-version.outputs.is_new_version == 'true' }} + 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 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - 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 }} + 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 }} - publish-npm: - name: 'Publish package to NPMJS' - needs: - - preconditions - - static-checks - - tests - - check-version - runs-on: ubuntu-latest - if: ${{ needs.check-version.outputs.is_new_version == 'true' }} + 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 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '18.x' - registry-url: 'https://registry.npmjs.org' - scope: '@digicatapult' - - uses: actions/setup-dotnet@v4 - with: - dotnet-version: '8.0.x' - - name: Install wasm tools - run: dotnet workload install wasm-tools - - 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 }} + 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 }} - publish: - name: 'Publish release' - needs: [publish-npm, publish-gh] - runs-on: ubuntu-latest - if: ${{ needs.check-version.outputs.is_new_version == 'true' }} + steps: + - uses: actions/checkout@v4 + - name: Check version + id: get_version + uses: digicatapult/check-version@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} - steps: - - uses: actions/checkout@v4 + 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' }} - - name: Build release version - uses: softprops/action-gh-release@v2 - 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@v7 - 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@v2 - with: - token: '${{ secrets.GITHUB_TOKEN }}' - tag_name: latest - prerelease: false - name: Latest ${{ needs.check-version.outputs.version }} - generate_release_notes: true + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + registry-url: 'https://registry.npmjs.org' + scope: '@digicatapult' + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + - name: Install wasm tools + run: dotnet workload install wasm-tools + - 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 }} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8e862d7..8dc100e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@digicatapult/dtdl-parser", - "version": "0.0.19", + "version": "0.0.21", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@digicatapult/dtdl-parser", - "version": "0.0.19", + "version": "0.0.21", "license": "Apache-2.0", "devDependencies": { "@eslint/eslintrc": "^3.1.0", diff --git a/package.json b/package.json index 57cd45f..6571344 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@digicatapult/dtdl-parser", - "version": "0.0.19", + "version": "0.0.21", "description": "JS tool to parse DTDL defined Ontologies", "main": "build/index.js", "type": "module",