update changelog #195
Workflow file for this run
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
| ############################################################################################## | |
| # | |
| # This Workflow is responsible for triggering release candidate builds (iOS & Android). | |
| # It runs on every commit pushed to a release branch, but only when the release PR | |
| # has the 'auto-rc-builds' label. | |
| # | |
| ############################################################################################## | |
| name: Auto RC builds | |
| on: | |
| push: | |
| branches: | |
| - 'release/*' | |
| jobs: | |
| validate-and-check-label: | |
| name: Validate branch and check PR label | |
| runs-on: ubuntu-latest | |
| outputs: | |
| semver: ${{ steps.extract-version.outputs.semver }} | |
| has-label: ${{ steps.check-label.outputs.has-label }} | |
| branch-name: ${{ steps.extract-version.outputs.branch-name }} | |
| pr-number: ${{ steps.check-label.outputs.pr-number }} | |
| permissions: | |
| pull-requests: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 1 | |
| - name: Extract semver from branch name | |
| id: extract-version | |
| run: | | |
| BRANCH_NAME="${{ github.ref_name }}" | |
| echo "Checking branch: $BRANCH_NAME" | |
| echo "branch-name=$BRANCH_NAME" >> "$GITHUB_OUTPUT" | |
| # Validate branch matches release/x.y.z format (semantic versioning) | |
| if [[ "$BRANCH_NAME" =~ ^release/[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
| VERSION="${BRANCH_NAME#release/}" | |
| echo "Valid release branch detected: $BRANCH_NAME (version: $VERSION)" | |
| echo "semver=$VERSION" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "Branch '$BRANCH_NAME' does not match release/x.y.z pattern. Skipping." | |
| echo "semver=" >> "$GITHUB_OUTPUT" | |
| exit 1 | |
| fi | |
| - name: Find PR and check for auto-rc-builds label | |
| id: check-label | |
| run: | | |
| BRANCH_NAME="${{ github.ref_name }}" | |
| echo "Looking for PR with head branch: $BRANCH_NAME" | |
| # Find PRs where the head branch matches our release branch | |
| PR_NUMBER=$(gh pr list --head "$BRANCH_NAME" --json number --jq '.[0].number' || echo "") | |
| if [[ -z "$PR_NUMBER" ]]; then | |
| echo "No PR found for branch $BRANCH_NAME. Skipping." | |
| echo "has-label=false" >> "$GITHUB_OUTPUT" | |
| exit 0 | |
| fi | |
| echo "Found PR #$PR_NUMBER" | |
| echo "pr-number=$PR_NUMBER" >> "$GITHUB_OUTPUT" | |
| # Check if PR has the auto-rc-builds label | |
| LABELS=$(gh pr view "$PR_NUMBER" --json labels --jq '.labels[].name' || echo "") | |
| if echo "$LABELS" | grep -qx "auto-rc-builds"; then | |
| echo "PR #$PR_NUMBER has 'auto-rc-builds' label. Proceeding with build." | |
| echo "has-label=true" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "PR #$PR_NUMBER does not have 'auto-rc-builds' label. Skipping build." | |
| echo "has-label=false" >> "$GITHUB_OUTPUT" | |
| fi | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| bump-version: | |
| uses: ./.github/workflows/update-latest-build-version.yml | |
| needs: validate-and-check-label | |
| if: needs.validate-and-check-label.outputs.has-label == 'true' | |
| with: | |
| base-branch: ${{ github.ref_name }} | |
| secrets: | |
| PR_TOKEN: ${{ secrets.PR_TOKEN }} | |
| permissions: | |
| id-token: write | |
| contents: write | |
| trigger-rc-build: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - validate-and-check-label | |
| - bump-version | |
| if: needs.validate-and-check-label.outputs.has-label == 'true' | |
| outputs: | |
| android-public-url: ${{ steps.rc-build.outputs.android-public-url }} | |
| bitrise-pipeline-url: ${{ steps.rc-build.outputs.bitrise-pipeline-url }} | |
| build-number: ${{ steps.rc-build.outputs.build-number }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.ref }} | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: '.nvmrc' | |
| cache: 'yarn' | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Trigger RC Build | |
| id: rc-build | |
| env: | |
| SEMVER: ${{ needs.validate-and-check-label.outputs.semver }} | |
| GH_REF_NAME: ${{ github.ref_name }} | |
| COMMIT_HASH: ${{ needs.bump-version.outputs.commit-hash }} | |
| BUILD_NUMBER: ${{ needs.bump-version.outputs.build-version }} | |
| BITRISE_APP_ID: ${{ secrets.BITRISE_APP_ID }} | |
| BITRISE_BUILD_TRIGGER_TOKEN: ${{ secrets.BITRISE_BUILD_TRIGGER_TOKEN }} | |
| BITRISE_API_TOKEN: ${{ secrets.BITRISE_API_TOKEN }} | |
| SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} | |
| run: ./.github/scripts/rc-builds.sh | |
| post-rc-build-comment: | |
| name: Post RC Build Comment | |
| runs-on: ubuntu-latest | |
| needs: | |
| - validate-and-check-label | |
| - trigger-rc-build | |
| if: always() && needs.trigger-rc-build.result == 'success' && needs.validate-and-check-label.outputs.pr-number != '' | |
| permissions: | |
| pull-requests: write | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version-file: '.nvmrc' | |
| cache: yarn | |
| - name: Install dependencies | |
| run: yarn install --immutable | |
| - name: Post RC Build Comment | |
| run: node scripts/post-rc-build-comment.mjs | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_REPOSITORY: ${{ github.repository }} | |
| PR_NUMBER: ${{ needs.validate-and-check-label.outputs.pr-number }} | |
| SEMVER: ${{ needs.validate-and-check-label.outputs.semver }} | |
| BUILD_NUMBER: ${{ needs.trigger-rc-build.outputs.build-number }} | |
| ANDROID_PUBLIC_URL: ${{ needs.trigger-rc-build.outputs.android-public-url }} | |
| BITRISE_PIPELINE_URL: ${{ needs.trigger-rc-build.outputs.bitrise-pipeline-url }} |