name: Fix formatting on a PR on: workflow_dispatch: inputs: pr: description: "Pull request number. Used to pull the proper branch ref, including on forks." type: number required: false comment-id: description: "Optional. The comment-id of the slash command. Used to update the comment with the status." required: false # These must be declared, but they are unused and ignored. # TODO: Infer 'repo' and 'gitref' from PR number on other workflows, so we can remove these. repo: description: "Repo (Ignored)" required: false default: "airbytehq/airbyte" gitref: description: "Ref (Ignored)" required: false run-name: "Fix formatting on PR #${{ github.event.inputs.pr }}" concurrency: group: ${{ github.workflow }}-${{ github.event.inputs.pr }} # Cancel any previous runs on the same branch if they are still in progress cancel-in-progress: true jobs: format-fix: name: "Run airbyte-ci format fix all" runs-on: ubuntu-latest steps: - name: Get job variables id: job-vars env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} shell: bash run: | PR_JSON=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.inputs.pr }}) echo "repo=$(echo "$PR_JSON" | jq -r .head.repo.full_name)" >> $GITHUB_OUTPUT echo "branch=$(echo "$PR_JSON" | jq -r .head.ref)" >> $GITHUB_OUTPUT echo "run-url=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> $GITHUB_OUTPUT - name: Checkout Airbyte uses: actions/checkout@v3 with: repository: ${{ steps.job-vars.outputs.repo }} ref: ${{ steps.job-vars.outputs.branch }} fetch-depth: 1 # Important that token is a PAT so that CI checks are triggered again. # Without this we would be forever waiting on required checks to pass. token: ${{ secrets.GH_PAT_APPROVINGTON_OCTAVIA }} - name: Append comment with job run link # If comment-id is not provided, this will create a new # comment with the job run link. id: first-comment-action uses: peter-evans/create-or-update-comment@v4 with: comment-id: ${{ github.event.inputs.comment-id }} issue-number: ${{ github.event.inputs.pr }} body: | > Format-fix job started... [Check job output.][1] [1]: ${{ steps.job-vars.outputs.run-url }} - name: Run airbyte-ci format fix all uses: ./.github/actions/run-airbyte-ci continue-on-error: true with: context: "manual" gcs_credentials: ${{ secrets.METADATA_SERVICE_PROD_GCS_CREDENTIALS }} sentry_dsn: ${{ secrets.SENTRY_AIRBYTE_CI_DSN }} github_token: ${{ secrets.GH_PAT_MAINTENANCE_OCTAVIA }} subcommand: "format fix all" dagger_cloud_token: ${{ secrets.DAGGER_CLOUD_TOKEN_CACHE_2 }} # This is helpful in the case that we change a previously committed generated file to be ignored by git. - name: Remove any files that have been gitignored run: git ls-files -i -c --exclude-from=.gitignore | xargs -r git rm --cached # Check for changes in git - name: Check for changes id: git-diff run: | git diff --quiet && echo "No changes to commit" || echo "::set-output name=changes::true" shell: bash # Commit changes (if any) - name: Commit changes id: commit-step if: steps.git-diff.outputs.changes == 'true' run: | git config --global user.name "Octavia Squidington III" git config --global user.email "octavia-squidington-iii@users.noreply.github.com" git add . git commit -m "chore: auto-fix lint and format issues" echo "sha=$(git rev-parse HEAD)" >> $GITHUB_OUTPUT - name: Push changes to '(${{ steps.job-vars.outputs.repo }})' if: steps.git-diff.outputs.changes == 'true' run: | git remote add contributor https://github.com/${{ steps.job-vars.outputs.repo }}.git git push contributor HEAD:${{ steps.job-vars.outputs.branch }} - name: Append success comment uses: peter-evans/create-or-update-comment@v4 if: steps.git-diff.outputs.changes == 'true' with: comment-id: ${{ steps.first-comment-action.outputs.comment-id }} reactions: hooray body: | > ✅ Changes applied successfully. (${{ steps.commit-step.outputs.sha }}) - name: Append success comment (no-op) uses: peter-evans/create-or-update-comment@v4 if: steps.git-diff.outputs.changes != 'true' with: comment-id: ${{ steps.first-comment-action.outputs.comment-id }} reactions: "+1" body: | > 🟦 Job completed successfully (no changes). - name: Append failure comment uses: peter-evans/create-or-update-comment@v4 if: failure() with: comment-id: ${{ steps.first-comment-action.outputs.comment-id }} reactions: confused body: | > ❌ Job failed.