-
Notifications
You must be signed in to change notification settings - Fork 94
feat: adds dev/release tag pipelines #911
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
af1d829
563d846
b0c0c80
88592f5
4f39c10
6024a79
12c746d
f04a0aa
b594b47
5fe3583
7b2737b
d15d143
374efc2
4d4babd
50e27c5
aa21029
632ceb9
ecbd775
a39dbcd
99a2fe4
f1dc17d
798f94d
1e234a7
6fa736e
076ad72
c191df6
ebf006a
fe6ec9d
1276cff
a6bc0e0
a945c19
7680d46
35382e6
5abd7e4
ea71c89
d392e7f
426972d
f3786f7
4e678b1
14f3269
c9b145d
e930efc
14cf0e1
c32289e
704f378
ca2c19d
42001da
d0e9c5c
22273c1
99cdb69
c6ed51d
bb27cd2
022d4de
59aca22
35b5fa8
bc6c878
2210b03
4f3370f
1fa2cb1
6452530
9d15cab
7dce2da
fa82faf
204b300
89be2ff
a03aae8
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
name: Auth-React Tests - L1 | ||
|
||
on: | ||
pull_request: | ||
types: | ||
- opened | ||
- reopened | ||
- synchronize | ||
push: | ||
tags: | ||
- dev-v[0-9]+.[0-9]+.[0-9]+ | ||
|
||
# Only one instance of this workflow will run on the same ref (PR/Branch/Tag) | ||
# Previous runs will be cancelled. | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
define-versions: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
fdiVersions: ${{ steps.versions.outputs.fdiVersions }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: supertokens/get-supported-versions-action@main | ||
id: versions | ||
with: | ||
has-fdi: true | ||
|
||
setup-auth-react: | ||
runs-on: ubuntu-latest | ||
needs: define-versions | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
fdi-version: ${{ fromJSON(needs.define-versions.outputs.fdiVersions) }} | ||
|
||
outputs: | ||
AUTH_REACT__LOG_DIR: ${{ steps.envs.outputs.AUTH_REACT__LOG_DIR }} | ||
AUTH_REACT__SCREENSHOT_DIR: ${{ steps.envs.outputs.AUTH_REACT__SCREENSHOT_DIR }} | ||
AUTH_REACT__NODE_PORT: ${{ steps.envs.outputs.AUTH_REACT__NODE_PORT }} | ||
AUTH_REACT__APP_SERVER: ${{ steps.envs.outputs.AUTH_REACT__NODE_PORT }} | ||
AUTH_REACT__TEST_MODE: ${{ steps.envs.outputs.AUTH_REACT__TEST_MODE }} | ||
AUTH_REACT__PORT: ${{ steps.envs.outputs.AUTH_REACT__PORT }} | ||
specs: ${{ steps.envs.outputs.specs }} | ||
fdiVersions: ${{ needs.define-versions.outputs.fdiVersions }} | ||
|
||
steps: | ||
- uses: supertokens/get-versions-action@main | ||
id: versions | ||
with: | ||
driver-name: node | ||
fdi-version: ${{ matrix.fdi-version }} | ||
env: | ||
SUPERTOKENS_API_KEY: ${{ secrets.SUPERTOKENS_API_KEY }} | ||
|
||
- uses: supertokens/auth-react-testing-action/setup@main | ||
id: envs | ||
with: | ||
auth-react-version: ${{ github.sha }} | ||
node-sdk-version: ${{ steps.versions.outputs.nodeTag }} | ||
fdi-version: ${{ matrix.fdi-version }} | ||
use-common-app-and-test-server: "true" | ||
|
||
launch-test-workflow: | ||
uses: ./.github/workflows/auth-react-test-2.yml | ||
needs: setup-auth-react | ||
name: FDI ${{ matrix.fdi-version }} | ||
strategy: | ||
max-parallel: 1 # This is important to avoid ddos GHA API | ||
fail-fast: false # Don't fail fast to avoid locking TF State | ||
matrix: | ||
fdi-version: ${{ fromJSON(needs.setup-auth-react.outputs.fdiVersions) }} | ||
with: | ||
fdi-version: ${{ matrix.fdi-version }} | ||
specs: ${{ needs.setup-auth-react.outputs.specs }} | ||
AUTH_REACT__LOG_DIR: ${{ needs.setup-auth-react.outputs.AUTH_REACT__LOG_DIR }} | ||
AUTH_REACT__SCREENSHOT_DIR: ${{ needs.setup-auth-react.outputs.AUTH_REACT__SCREENSHOT_DIR }} | ||
AUTH_REACT__APP_SERVER: ${{ needs.setup-auth-react.outputs.AUTH_REACT__APP_SERVER }} | ||
AUTH_REACT__NODE_PORT: ${{ needs.setup-auth-react.outputs.AUTH_REACT__NODE_PORT }} | ||
AUTH_REACT__TEST_MODE: ${{ needs.setup-auth-react.outputs.AUTH_REACT__TEST_MODE }} | ||
AUTH_REACT__PORT: ${{ needs.setup-auth-react.outputs.AUTH_REACT__PORT }} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
name: Auth-React Tests - L2 | ||
on: | ||
workflow_call: | ||
inputs: | ||
fdi-version: | ||
description: "FDI Version" | ||
required: true | ||
type: string | ||
|
||
specs: | ||
description: "Spec Files" | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__LOG_DIR: | ||
description: AUTH_REACT__LOG_DIR | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__SCREENSHOT_DIR: | ||
description: AUTH_REACT__SCREENSHOT_DIR | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__APP_SERVER: | ||
description: AUTH_REACT__APP_SERVER | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__NODE_PORT: | ||
description: AUTH_REACT__NODE_PORT | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__TEST_MODE: | ||
description: AUTH_REACT__TEST_MODE | ||
required: true | ||
type: string | ||
|
||
AUTH_REACT__PORT: | ||
description: AUTH_REACT__PORT | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
|
||
strategy: | ||
max-parallel: 10 | ||
fail-fast: false | ||
matrix: | ||
spec: ${{ fromJSON(inputs.specs) }} | ||
|
||
env: | ||
SUPERTOKENS_CORE_PORT: 3567 | ||
SUPERTOKENS_CORE_HOST: localhost | ||
TEST_MODE: testing | ||
# Auth react setup envs | ||
AUTH_REACT__LOG_DIR: ${{ inputs.AUTH_REACT__LOG_DIR }} | ||
AUTH_REACT__SCREENSHOT_DIR: ${{ inputs.AUTH_REACT__SCREENSHOT_DIR }} | ||
AUTH_REACT__NODE_PORT: ${{ inputs.AUTH_REACT__NODE_PORT }} | ||
AUTH_REACT__APP_SERVER: ${{ inputs.AUTH_REACT__NODE_PORT }} | ||
AUTH_REACT__TEST_MODE: ${{ inputs.AUTH_REACT__TEST_MODE }} | ||
AUTH_REACT__PORT: ${{ inputs.AUTH_REACT__PORT }} | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
path: supertokens-auth-react | ||
|
||
- name: Start core | ||
run: docker compose up --wait | ||
working-directory: supertokens-auth-react | ||
|
||
- uses: supertokens/auth-react-testing-action@main | ||
name: test ${{ matrix.spec }} for ${{ inputs.fdi-version }} | ||
with: | ||
fdi-version: ${{ inputs.fdi-version }} | ||
check-name-suffix: "[FDI=${{ inputs.fdi-version }}][Spec=${{ matrix.spec }}]" | ||
path: supertokens-auth-react | ||
spec: ${{ matrix.spec }} |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,153 @@ | ||||||
name: "Dev Tag Pipeline" | ||||||
|
||||||
on: | ||||||
workflow_dispatch: | ||||||
inputs: | ||||||
branch: | ||||||
description: The branch to create the dev tag on | ||||||
type: string | ||||||
required: true | ||||||
|
||||||
permissions: | ||||||
contents: write | ||||||
|
||||||
jobs: | ||||||
setup: | ||||||
runs-on: ubuntu-latest | ||||||
|
||||||
outputs: | ||||||
packageVersion: ${{ steps.versions.outputs.packageVersion }} | ||||||
packageVersionXy: ${{ steps.versions.outputs.packageVersionXy }} | ||||||
packageLockVersion: ${{ steps.versions.outputs.packageLockVersion }} | ||||||
packageLockVersionXy: ${{ steps.versions.outputs.packageLockVersionXy }} | ||||||
newestVersion: ${{ steps.versions.outputs.newestVersion }} | ||||||
targetBranch: ${{ steps.versions.outputs.targetBranch }} | ||||||
devTag: ${{ steps.versions.outputs.devTag }} | ||||||
releaseTag: ${{ steps.versions.outputs.releaseTag }} | ||||||
|
||||||
steps: | ||||||
- uses: actions/checkout@v4 | ||||||
with: | ||||||
ref: ${{ inputs.branch }} | ||||||
# Need a complete fetch to make the master merge check work | ||||||
fetch-depth: 0 | ||||||
fetch-tags: true | ||||||
token: ${{ secrets.ALL_REPO_PAT }} | ||||||
|
||||||
- name: Setup git | ||||||
run: | | ||||||
# NOTE: The user email is {user.id}+{user.login}@users.noreply.github.com. | ||||||
# See users API: https://api.github.com/users/github-actions%5Bbot%5D | ||||||
git config user.name "github-actions[bot]" | ||||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||||||
|
||||||
git fetch origin master | ||||||
|
||||||
- name: Check if branch needs master merge | ||||||
run: | | ||||||
if [[ $(git log origin/master ^HEAD) != "" ]]; then | ||||||
echo "You need to merge master into this branch." | ||||||
exit 1 | ||||||
fi | ||||||
|
||||||
- name: Populate variables | ||||||
id: versions | ||||||
run: | | ||||||
. ./hooks/populate-hook-constants.sh | ||||||
|
||||||
echo "packageVersion=$packageVersion" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "packageVersionXy=$packageVersionXy" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "packageLockVersion=$packageLockVersion" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "packageLockVersionXy=$packageLockVersionXy" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "newestVersion=$newestVersion" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "targetBranch=$targetBranch" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
|
||||||
echo "devTag=dev-v$packageLockVersion" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "releaseTag=v$packageLockVersion" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
|
||||||
- name: Check tag and branch correctness | ||||||
run: | | ||||||
if [[ "${{ steps.versions.outputs.packageVersion }}" != "${{ steps.versions.outputs.packageLockVersion }}" ]] | ||||||
then | ||||||
echo "The package version and package lock version do not match." | ||||||
exit 1 | ||||||
fi | ||||||
|
||||||
if [[ "${{ steps.versions.outputs.packageVersion }}" != ${{ inputs.branch }}* ]] | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The branch comparison has a quoting issue that could lead to shell interpretation problems. The right side of the comparison should be quoted: if [[ "${{ steps.versions.outputs.packageVersion }}" != "${{ inputs.branch }}"* ]] This ensures that any special characters in the branch name are treated as literals rather than being interpreted by the shell.
Suggested change
Spotted by Diamond |
||||||
then | ||||||
echo "Adding tag to wrong branch" | ||||||
exit 1 | ||||||
fi | ||||||
|
||||||
if git rev-parse ${{ steps.versions.outputs.releaseTag }} >/dev/null 2>&1 | ||||||
then | ||||||
echo "The released version of this tag already exists." | ||||||
exit 1 | ||||||
fi | ||||||
|
||||||
- name: Delete tag if already tagged | ||||||
run: | | ||||||
git tag --delete ${{ steps.versions.outputs.devTag }} || true | ||||||
git push --delete origin ${{ steps.versions.outputs.devTag }} || true | ||||||
|
||||||
- name: Install dependencies | ||||||
run: npm install | ||||||
|
||||||
- name: Build docs | ||||||
run: | | ||||||
npm run build-pretty | ||||||
npm run build-docs | ||||||
|
||||||
- name: Commit doc changes | ||||||
run: | | ||||||
git add --all | ||||||
git commit --allow-empty -nm "doc: update docs for ${{ steps.versions.outputs.releaseTag }} tag" | ||||||
git push | ||||||
|
||||||
- name: Create and push tag | ||||||
run: | | ||||||
# NOTE: The user email is {user.id}+{user.login}@users.noreply.github.com. | ||||||
# See users API: https://api.github.com/users/github-actions%5Bbot%5D | ||||||
git config user.name "github-actions[bot]" | ||||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||||||
|
||||||
git tag ${{ steps.versions.outputs.devTag }} | ||||||
git push --tags --follow-tags | ||||||
|
||||||
mark-dev-tag-as-not-passed: | ||||||
runs-on: ubuntu-latest | ||||||
needs: | ||||||
- setup | ||||||
|
||||||
steps: | ||||||
- uses: actions/checkout@v4 | ||||||
with: | ||||||
ref: ${{ needs.setup.outputs.devTag }} | ||||||
fetch-tags: true | ||||||
|
||||||
- id: versions | ||||||
uses: supertokens/get-supported-versions-action@main | ||||||
with: | ||||||
has-cdi: false | ||||||
has-fdi: true | ||||||
has-web-js: true | ||||||
|
||||||
- id: escape-versions | ||||||
run: | | ||||||
echo "fdiVersions=$(sed 's/"/\\"/g' <<< '${{ steps.versions.outputs.fdiVersions }}')" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
echo "webJsInterfaceVersion=$(sed 's/"/\\"/g' <<< '${{ steps.versions.outputs.webJsInterfaceVersion }}')" | tee -a "$GITHUB_OUTPUT" "$GITHUB_ENV" | ||||||
|
||||||
- run: | | ||||||
./hooks/populate-hook-constants.sh | ||||||
|
||||||
curl --fail-with-body -X PUT \ | ||||||
https://api.supertokens.io/0/frontend \ | ||||||
-H 'Content-Type: application/json' \ | ||||||
-H 'api-version: 1' \ | ||||||
-d "{ | ||||||
\"password\": \"${{ secrets.SUPERTOKENS_API_KEY }}\", | ||||||
\"version\":\"${{ needs.setup.outputs.packageVersion }}\", | ||||||
\"name\": \"auth-react\", | ||||||
\"frontendDriverInterfaces\": ${{ steps.escape-versions.outputs.fdiVersions }}, | ||||||
\"webJsInterface\": \"${{ steps.escape-versions.outputs.webJsInterfaceVersion }}\" | ||||||
}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider adding a step to ensure the script is executable before sourcing it:
chmod +x ./hooks/populate-hook-constants.sh . ./hooks/populate-hook-constants.sh
This prevents potential permission issues after checkout, as Git doesn't always preserve executable permissions across systems.
Spotted by Diamond
Is this helpful? React 👍 or 👎 to let us know.