name: tidy-check-generate on: workflow_dispatch: push: branches: - main - "release/**" pull_request: jobs: tidycheck: name: tidy, check and generate runs-on: ubuntu-22.04 steps: - name: Checkout uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }} # No token available for forks, so we can't push changes token: ${{ !github.event.pull_request.head.repo.fork && secrets.CI_COMMIT_PUSH_PR || '' }} - name: Run Bazel tidy shell: bash run: bazelisk run //:tidy - name: Check if untidy id: untidy shell: bash run: | diff=$(git diff) if [[ -z "$diff" ]]; then echo "Everything is tidy." echo "untidy=false" >> "$GITHUB_OUTPUT" exit 0 fi echo "Detected changes after tidy" echo "untidy=true" >> "$GITHUB_OUTPUT" - name: Run Bazel generate shell: bash run: bazelisk run //:generate - name: Check if ungenerated id: ungenerated shell: bash run: | diff=$(git diff) if [[ -z "$diff" ]]; then echo "Everything is tidy." echo "ungenerated=false" >> "$GITHUB_OUTPUT" exit 0 fi echo "Detected changes after tidy" echo "ungenerated=true" >> "$GITHUB_OUTPUT" - name: Check if tidy or generate made modifications id: modified shell: bash run: | diff=$(git diff) if [[ -z "$diff" ]]; then echo "Everything is tidy and generated." exit 0 fi cat << EOF >> "${GITHUB_STEP_SUMMARY}" \`\`\`diff ${diff} \`\`\` EOF if [[ "${{ steps.untidy.outputs.untidy }}" == "true" ]] && [[ "${{ steps.ungenerated.outputs.ungenerated }}" == "true" ]]; then suggestCmd="'bazel run //:generate' &&' bazel run //:tidy'" elif [[ "${{ steps.untidy.outputs.untidy }}" == "true" ]]; then suggestCmd="'bazel run //:tidy'" elif [[ "${{ steps.ungenerated.outputs.ungenerated }}" == "true" ]]; then suggestCmd="'bazel run //:generate'" fi echo "::error::The repo is not tidy. Please run ${suggestCmd} and commit the changes." exit 1 - name: Run Bazel check shell: bash run: bazelisk run //:check # The following steps are only executed if the previous tidy check failed # and the action runs on an renovat branche. In this case, we tidy all # modules again and commit the changes, so the user doesn't need to do it. - name: Push changes if: | failure() && (steps.modified.conclusion == 'failure') && startsWith(github.head_ref, 'renovate/') && !github.event.pull_request.head.repo.fork shell: bash run: | git config --global user.name "edgelessci" git config --global user.email "edgelessci@users.noreply.github.com" git commit -am "deps: tidy all modules" git push