fix: trusted publishing #139
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: Build-Test-Release | |
| on: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| build-test-release: | |
| runs-on: windows-latest | |
| permissions: | |
| contents: write | |
| pages: write | |
| id-token: write | |
| # Many steps are duplicated in buildAndTest.yml. Changes made here may need to be made in both | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| # Keep in sync with the version specified for volta in the root package.json | |
| node-version: 22 | |
| registry-url: https://registry.npmjs.org/ | |
| - name: Install dependencies | |
| run: npm install | |
| - name: Install playwright browsers for e2e tests | |
| run: npx playwright install chromium --with-deps | |
| # Extract new messages, upload to Crowdin, download latest translations | |
| - name: Extract messages | |
| run: npm run l10n:extract | |
| - name: Upload source strings to Crowdin | |
| run: npm run l10n:upload | |
| env: | |
| ETHNOLIB_CROWDIN_TOKEN: ${{ secrets.ETHNOLIB_CROWDIN_TOKEN }} | |
| - name: Download translations from Crowdin | |
| run: npm run l10n:download | |
| env: | |
| ETHNOLIB_CROWDIN_TOKEN: ${{ secrets.ETHNOLIB_CROWDIN_TOKEN }} | |
| - name: Update locales list | |
| run: npm run l10n:update-locales | |
| - name: Compile messages | |
| run: npm run l10n:compile | |
| # We've configured nx to update version numbers in the primary package.json files (rather than in the dist builds to be published) | |
| # Therefore this step must be done before build so that the new version numbers are copied to dist/package.json | |
| - name: Update version numbers in the persistent package.json files | |
| run: npx nx release version | |
| - name: Build package | |
| run: npx nx build @ethnolib/language-chooser-react-mui | |
| # find-language is a dependency of language-chooser-react-mui so it will have been built in the build step | |
| - name: Run unit tests | |
| run: npx nx run-many --all --target=test | |
| - name: Run e2e tests | |
| run: npx nx run-many --all --target=e2e | |
| - name: Set name and email for git so we can commit and tag | |
| run: | | |
| git config user.name "Github Actions" | |
| git config user.email "no-reply@ethnolib-build.com" | |
| - name: Publish | |
| env: | |
| NPM_CONFIG_PROVENANCE: true | |
| run: npx nx release --yes | |
| - name: Push the release commit (with version number update and changelog) | |
| run: git push | |
| - name: Push the release tag | |
| run: git push --tags | |
| - name: Build storybook | |
| run: npx nx build-storybook @ethnolib/language-chooser-react-mui | |
| - name: Upload for deploy to github pages | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: components/language-chooser/react/language-chooser-react-mui/storybook-static | |
| - name: Deploy to GitHub Pages | |
| uses: actions/deploy-pages@v4 | |
| with: | |
| token: ${{ github.token }} |