Merge branch 'staging' into next #436
This file contains hidden or 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: Publish Web | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| package: | |
| description: 'Select the package you want to publish' | |
| required: true | |
| default: 'dialtone' | |
| type: 'choice' | |
| options: | |
| - dialtone | |
| - dialtone-css | |
| - dialtone-emojis | |
| - dialtone-icons | |
| - dialtone-tokens | |
| - dialtone-vue | |
| - eslint-plugin-dialtone | |
| - stylelint-plugin-dialtone | |
| - postcss-responsive-variations | |
| - dialtone-mcp-server | |
| push: | |
| branches: | |
| - production | |
| - alpha | |
| - beta | |
| - next | |
| paths: | |
| - '**/package.json' | |
| env: | |
| HUSKY: 0 | |
| jobs: | |
| variables-setup: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| current_branch: ${{ steps.branch-name.outputs.current_branch }} | |
| release_tag: ${{ steps.branch-name.outputs.current_branch == 'production' && 'latest' || steps.branch-name.outputs.current_branch }} | |
| steps: | |
| - name: Get branch name | |
| id: branch-name | |
| uses: tj-actions/branch-names@v8 | |
| filter-actions: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| packages: ${{ github.event_name == 'push' && steps.filter-path.outputs.changes || steps.filter-input.outputs.package }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Filter actions by path | |
| if: ${{ github.event_name == 'push' }} | |
| uses: dorny/paths-filter@v3 | |
| id: filter-path | |
| with: | |
| base: ${{ github.ref }} | |
| list-files: 'json' | |
| filters: | | |
| dialtone: | |
| - 'package.json' | |
| dialtone-css: | |
| - 'packages/dialtone-css/package.json' | |
| dialtone-emojis: | |
| - 'packages/dialtone-emojis/package.json' | |
| dialtone-icons: | |
| - 'packages/dialtone-icons/package.json' | |
| dialtone-tokens: | |
| - 'packages/dialtone-tokens/package.json' | |
| dialtone-vue: | |
| - 'packages/dialtone-vue/package.json' | |
| eslint-plugin-dialtone: | |
| - 'packages/eslint-plugin-dialtone/package.json' | |
| stylelint-plugin-dialtone: | |
| - 'packages/stylelint-plugin-dialtone/package.json' | |
| postcss-responsive-variations: | |
| - 'packages/postcss-responsive-variations/package.json' | |
| dialtone-mcp-server: | |
| - 'packages/dialtone-mcp-server/package.json' | |
| - name: Filter actions by input | |
| if: ${{ github.event_name == 'workflow_dispatch' }} | |
| id: filter-input | |
| run: | | |
| echo 'package=["${{ github.event.inputs.package }}"]' >> $GITHUB_OUTPUT | |
| check-dialpad-member: | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Will prevent the rest of the steps from running on fail | |
| - name: Check if user is a dialpad member | |
| uses: octokit/request-action@v2.x | |
| with: | |
| route: GET /orgs/dialpad/members/${{ github.actor }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.DIALTONE_CI_TOKEN }} | |
| publish: | |
| needs: [ variables-setup, check-dialpad-member, filter-actions ] | |
| if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && needs.filter-actions.outputs.packages != '[]') }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package: ${{ fromJSON(needs.filter-actions.outputs.packages) }} | |
| registry: [ npm, GitHub ] | |
| include: | |
| - registry: GitHub | |
| registry_url: //npm.pkg.github.com/ | |
| - registry: npm | |
| registry_url: //registry.npmjs.org/ | |
| runs-on: ubuntu-latest | |
| permissions: | |
| packages: write | |
| id-token: write | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Environment | |
| uses: ./.github/actions/setup-environment | |
| - name: Configure npm registry for publishing | |
| if: matrix.registry == 'npm' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".nvmrc" | |
| registry-url: "https://registry.npmjs.org" | |
| - name: Remove @dialpad scope configuration for npm | |
| if: matrix.registry == 'npm' | |
| run: | | |
| # Remove @dialpad scope configuration to use default npm registry instead of GitHub Packages | |
| npm config delete @dialpad:registry || true | |
| - name: Configure GitHub Packages for publishing | |
| if: matrix.registry == 'GitHub' | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: ".nvmrc" | |
| registry-url: "https://npm.pkg.github.com" | |
| scope: "@dialpad" | |
| - name: Configure @dialpad scope for GitHub Packages | |
| if: matrix.registry == 'GitHub' | |
| run: | | |
| # Set @dialpad scope to use GitHub Packages instead of npm | |
| npm config set @dialpad:registry https://npm.pkg.github.com/ | |
| - name: Delay job to avoid npm rate limits | |
| if: matrix.package == 'dialtone-vue' | |
| run: sleep 15s | |
| shell: bash | |
| # Publish npm/GitHub | |
| - name: Publish ${{ matrix.package }}@${{ env.RELEASE_TAG }} | |
| env: | |
| RELEASE_TAG: ${{ needs.variables-setup.outputs.release_tag }} | |
| NODE_AUTH_TOKEN: ${{ matrix.registry == 'GitHub' && secrets.GITHUB_TOKEN || '' }} | |
| run: > | |
| pnpm nx run ${{ matrix.package }}:publish | |
| --publish-branch=${{ needs.variables-setup.outputs.current_branch }} | |
| --tag=${{ env.RELEASE_TAG }} |