fix(release): add PR label job as temporary fix for missing labels #27
This file contains 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: Release | |
on: | |
# Triggers the workflow on push events but only for default and protected branches | |
push: | |
branches: | |
- main | |
permissions: | |
contents: write | |
pull-requests: write | |
repository-projects: read | |
# only required for workflows in private repositories | |
actions: read | |
security-events: write | |
# required to fetch internal or private CodeQL packs | |
packages: read | |
concurrency: | |
group: release | |
jobs: | |
# This job creates the necessary labels for the release-please PRs | |
label-check: | |
name: Create release-please PR labels | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Add labels to the repository if not present | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh label create "autorelease: pending" -c FBCA04 -d "release-please PR tagging - Pending release" || true | |
gh label create "autorelease: tagged" -c D4C5F9 -d "release-please PR tagging - Ready for release" || true | |
gh label create "autorelease: snapshot" -c D4C5F9 -d "release-please PR tagging - Ready for release" || true | |
gh label create "autorelease: published" -c 0E8A16 -d "release-please PR tagging - Released" || true | |
# This job runs a simple E2E test with the latest FusionAuth and iOS version as a prerequisite for the prerelease-prep | |
initial-e2e-test: | |
name: Run Prerelease E2E Tests | |
uses: ./.github/workflows/e2e-test-fusionauth-latest-ios-latest.yml | |
# This job runs a MobSF scan as a prerequisite for the prerelease-prep | |
mobsf: | |
name: Run Prerelease MobSF Scan | |
uses: ./.github/workflows/mobsf.yml | |
# This job runs a SwiftLint scan as a prerequisite for the prerelease-prep | |
swiftlint: | |
name: Run Prerelease Swiftlint | |
uses: ./.github/workflows/swiftlint.yml | |
# This job runs a CodeQL package scan as a prerequisite for the prerelease-prep | |
codeql-package: | |
name: Run Prerelease CodeQL Package Scan | |
uses: ./.github/workflows/codeql-package.yml | |
# This job runs a CodeQL samples quickstart scan as a prerequisite for the prerelease-prep | |
codeql-samples-quickstart: | |
name: Run Prerelease CodeQL Samples Quickstart Scan | |
uses: ./.github/workflows/codeql-samples-quickstart.yml | |
# This job creates or finalizes a prerelease pull request and provides the necessary outputs for the subsequent jobs | |
prerelease-prep: | |
name: Create Prerelease Pull Request | |
runs-on: ubuntu-latest | |
needs: [ label-check, initial-e2e-test, mobsf, swiftlint, codeql-package, codeql-samples-quickstart ] | |
outputs: | |
releases_created: ${{ steps.release.outputs.releases_created }} | |
tag_name: ${{ steps.release.outputs.tag_name }} | |
steps: | |
- id: release | |
name: Run prerelease release-please | |
uses: googleapis/[email protected] | |
with: | |
config-file: ".github/prerelease-config.json" | |
manifest-file: ".github/prerelease-manifest.json" | |
# This job runs the E2E tests with FusionAuth Matrix as a prerequisite for the prerelease job | |
prerelease-e2e-test-fusionauth-matrix: | |
name: Run Prerelease E2E Tests with FusionAuth Matrix | |
if: ${{ needs.prerelease-prep.outputs.releases_created == 'true' && contains(needs.prerelease-prep.outputs.tag_name, 'rc') }} | |
needs: prerelease-prep | |
uses: ./.github/workflows/e2e-test-fusionauth-matrix-ios-latest.yml | |
# This job runs the E2E tests with iOS Matrix as a prerequisite for the prerelease job | |
prerelease-e2e-test-ios-matrix: | |
name: Run Prerelease E2E Tests with iOS Matrix | |
if: ${{ needs.prerelease-prep.outputs.releases_created == 'true' && contains(needs.prerelease-prep.outputs.tag_name, 'rc') }} | |
needs: prerelease-prep | |
uses: ./.github/workflows/e2e-test-fusionauth-latest-ios-matrix.yml | |
# This job runs creates the Prerelease and creates a subsequent Release Pull Request | |
prerelease: | |
name: Create Prerelease and Release Pull Request | |
runs-on: ubuntu-latest | |
if: ${{ needs.prerelease-prep.outputs.releases_created == 'true' && contains(needs.prerelease-prep.outputs.tag_name, 'rc') }} | |
needs: [ prerelease-prep, prerelease-e2e-test-fusionauth-matrix, prerelease-e2e-test-ios-matrix ] | |
steps: | |
- name: Pre Release Step | |
run: | | |
echo "Running pre-release step!" | |
- name: Run release release-please | |
uses: googleapis/[email protected] | |
with: | |
config-file: ".github/release-config.json" | |
manifest-file: ".github/release-manifest.json" | |
# This job creates the final release and Syncs the prerelease manifest | |
release: | |
name: Create Release | |
runs-on: ubuntu-latest | |
if: ${{ needs.prerelease-prep.outputs.releases_created == 'true' && !contains(needs.prerelease-prep.outputs.tag_name, 'rc') }} | |
needs: prerelease-prep | |
steps: | |
- name: Release Step | |
run: | | |
echo "Running release step!" | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Sync prerelease manifest | |
env: | |
MANIFEST_PATH: .github/prerelease-manifest.json | |
RELEASE_TAG: ${{ needs.prerelease-prep.outputs.tag_name }} | |
run: | | |
jq --arg tag "${RELEASE_TAG//v/}" '.["."] = $tag' $MANIFEST_PATH > temp.json \ | |
&& mv temp.json $MANIFEST_PATH | |
- name: Commit change | |
run: | | |
git config user.name "github-actions[bot]" | |
git config user.email "github-actions[bot]@users.noreply.github.com" | |
git add . $MANIFEST_PATH | |
git commit -m "chore: sync release manifests" | |
git push | |
# This job runs post-release steps | |
post-release: | |
name: Post Release Steps | |
runs-on: ubuntu-latest | |
needs: release | |
steps: | |
- name: Post Release Step | |
run: | | |
echo "Running post-release steps!" |