Skip to content

feat(oidc): control dpop injection (release) (#1342) #1417

feat(oidc): control dpop injection (release) (#1342)

feat(oidc): control dpop injection (release) (#1342) #1417

Workflow file for this run

# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
name: React Oidc CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
env:
PNPM_VERSION: 8.5.1
NODE_VERSION: 18
jobs:
skip_ci:
runs-on: ubuntu-latest
outputs:
canSkip: ${{ steps.check.outputs.canSkip }}
steps:
- id: check
uses: Legorooj/skip-ci@main
tests:
runs-on: ubuntu-latest
if: needs.skip_ci.outputs.canSkip != 'true' && github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v2
name: Install pnpm
with:
version: ${{ env.PNPM_VERSION }}
run_install: false
- name: pnpm i
run: pnpm i --frozen-lockfile
working-directory: ./packages/react-oidc
- name: pnpm prepare
run: pnpm run prepare
working-directory: ./packages/react-oidc
- name: pnpm test
run: pnpm test -- --run
working-directory: ./packages/react-oidc
- name: pnpm install
run: pnpm i --frozen-lockfile
working-directory: ./packages/oidc-client
- name: pnpm prepare
run: pnpm run prepare
working-directory: ./packages/oidc-client
build:
permissions:
contents: write
environment: react-oidc
runs-on: ubuntu-latest
if: needs.skip_ci.outputs.canSkip != 'true' && !github.event.pull_request.head.repo.fork
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.GIT_TOKEN }}
fetch-depth: 0
- name: Determine Alpha, Beta or Release
id: which_tag
run: |
if [[ ${{ github.ref }} == refs/pull* ]]; then
last_commit_message=$(curl -s "https://api.github.com/repos/${GITHUB_REPOSITORY}/pulls/${{ github.event.number }}/commits" | jq -r '.[-1].commit.message')
else
last_commit_message=$(git log --format=%B -n 1)
fi
echo "last commit message is: $last_commit_message"
# Check if last comment and with "(alpha)", "(beta)" or "(release)"
if [[ $last_commit_message == *alpha* ]]; then
echo "tag=alpha" >> $GITHUB_OUTPUT
fi
if [[ $last_commit_message == *beta* ]]; then
echo "tag=beta" >> $GITHUB_OUTPUT
fi
if [[ $last_commit_message == *release* ]]; then
echo "tag=release" >> $GITHUB_OUTPUT
fi
- name: Bump version and push tag
id: tag_release
if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release'
uses: mathieudutour/github-tag-action@v6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Bump version and push tag
id: tag_version
if: steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
uses: mathieudutour/github-tag-action@v6.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
dry_run: true
- name: Compute new version number to publish
id: tag
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
if [[ '${{ steps.which_tag.outputs.tag }}' == 'release' ]]; then
version=${{ steps.tag_release.outputs.new_version }}
else
version=${{ steps.tag_version.outputs.new_version }}
fi
if [[ '${{ steps.which_tag.outputs.tag }}' = 'release' ]]; then
echo "new_version=$version" >> $GITHUB_OUTPUT
fi
if [[ '${{ steps.which_tag.outputs.tag }}' = 'alpha' ]]; then
echo "new_version=$version-alpha.${{ github.run_number }}" >> $GITHUB_OUTPUT
fi
if [[ '${{ steps.which_tag.outputs.tag }}' = 'beta' ]]; then
echo "new_version=$version-beta.${{ github.run_number }}" >> $GITHUB_OUTPUT
fi
- uses: actions/setup-node@v2
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v2
name: Install pnpm
with:
version: ${{ env.PNPM_VERSION }}
run_install: false
# oidc-client-service-worker
- name: pnpm version ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: pnpm version ${{ steps.tag.outputs.new_version }}
working-directory: ./packages/oidc-client-service-worker
- name: update version.ts ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts
working-directory: ./packages/oidc-client-service-worker/src
- name: pnpm ci
run: pnpm i --frozen-lockfile
working-directory: ./packages/oidc-client-service-worker
- name: pnpm prepare
run: pnpm run prepare
working-directory: ./packages/oidc-client-service-worker
- name: pnpm test
run: pnpm test -- --run
working-directory: ./packages/oidc-client-service-worker
# oidc-client
- name: pnpm version ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
set -e
pnpm version ${{ steps.tag.outputs.new_version }} || true
cat package.json
working-directory: ./packages/oidc-client
- name: update version.ts ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
echo "export default '${{ steps.tag.outputs.new_version }}';" > version.ts
working-directory: ./packages/oidc-client/src
- name: pnpm ci
run: pnpm i --frozen-lockfile
working-directory: ./packages/oidc-client
- name: pnpm prepare
run: pnpm run prepare
working-directory: ./packages/oidc-client
# React-oidc
- name: pnpm version ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
set -e
pnpm version ${{ steps.tag.outputs.new_version }} || true
cat package.json
working-directory: ./packages/react-oidc
- name: pnpm i
run: pnpm i --frozen-lockfile
working-directory: ./packages/react-oidc
- name: pnpm prepare
run: pnpm run prepare
working-directory: ./packages/react-oidc
- name: pnpm test
run: pnpm test -- --run
working-directory: ./packages/react-oidc
# oidc-client-service-worker
- id: publish-oidc-client-service-worker
uses: JS-DevTools/npm-publish@v1
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
with:
token: ${{ secrets.NPM_TOKEN }}
package: ./packages/oidc-client-service-worker/package.json
# oidc-client
- name: replace workspace:* by ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json
cat package.json
working-directory: ./packages/oidc-client
- id: publish-oidc-client
uses: JS-DevTools/npm-publish@v1
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
with:
token: ${{ secrets.NPM_TOKEN }}
package: ./packages/oidc-client/package.json
- name: replace ${{ steps.tag.outputs.new_version }} by workspace:*
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json
cat package.json
working-directory: ./packages/oidc-client
# react-oidc
- name: replace workspace:* by ${{ steps.tag.outputs.new_version }}
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
sed -i 's/workspace:\*/${{ steps.tag.outputs.new_version }}/g' package.json
cat package.json
working-directory: ./packages/react-oidc
- id: publish-react
uses: JS-DevTools/npm-publish@v1
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
with:
token: ${{ secrets.NPM_TOKEN }}
package: ./packages/react-oidc/package.json
- name: replace ${{ steps.tag.outputs.new_version }} by workspace:*
if: (github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release') || steps.which_tag.outputs.tag == 'alpha' || steps.which_tag.outputs.tag == 'beta'
run: |
sed -i 's/"@axa-fr\/oidc-client-service-worker": "[^"]*"/"@axa-fr\/oidc-client-service-worker": "workspace:*"/g' package.json
sed -i 's/"@axa-fr\/oidc-client": "[^"]*"/"@axa-fr\/oidc-client": "workspace:*"/g' package.json
cat package.json
working-directory: ./packages/react-oidc
- name: Commit and push
if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release'
run: |
git config --global user.name "GitHub"
git config --global user.email "github-action@bot.com"
git add .
git commit -m "[skip ci] Update to version ${{ steps.tag.outputs.new_version }} in package.json"
git tag ${{ steps.tag.outputs.new_version }}
git push --set-upstream origin "HEAD:main" --follow-tags -f
chmod +x ./bin/generate-changelog.sh
./bin/generate-changelog.sh
git add .
git commit -m "[skip ci] Generate changelog to version ${{ steps.tag.outputs.new_version }}"
git push --set-upstream origin "HEAD:main" --follow-tags -f
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
if: github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.head.repo.fork
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.organization=axaguildev
-Dsonar.projectKey=AxaGuilDEv_react-oidc
-Dsonar.exclusions=**/*.spec.js,**/*.stories.js,Scripts/**,**/*.scss,**/__snapshots__/**,**/*[Tt]ests.cs,**/node_modules/**,**/ClientApp/build/**,**/ClientApp/.storybook/**,**/ClientApp/storybook-static/**,**/obj/**,**/__mocks__/**,**/ClientApp/src/serviceWorker.ts
-Dsonar.javascript.lcov.reportPaths=**/coverage/lcov.info
- name: Create a GitHub release
uses: ncipollo/release-action@v1
if: github.ref == 'refs/heads/main' && steps.which_tag.outputs.tag == 'release'
with:
tag: ${{ steps.tag_release.outputs.new_tag }}
name: Release ${{ steps.tag_release.outputs.new_tag }}
body: ${{ steps.tag_release.outputs.changelog }}