From c6a5ea5f113c60b8379673c8c08bf1f828a9c7e6 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 26 Aug 2020 14:02:40 +0100 Subject: [PATCH 1/2] workflows: don't test paths on `master`. This avoids weirdness like the merged PR commits being pushed to scheduled opened PRs after merging. It also avoids wasting resources. --- .github/workflows/docker.yml | 2 ++ .github/workflows/doctor.yml | 2 ++ .github/workflows/spdx.yml | 2 ++ .github/workflows/tapioca.yml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f7fbf0ac0f..d0bf09009f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -4,6 +4,8 @@ on: paths: - .github/workflows/docker.yml - Dockerfile + branches-ignore: + - master release: types: - published diff --git a/.github/workflows/doctor.yml b/.github/workflows/doctor.yml index 757a558d1f..c7baad301f 100644 --- a/.github/workflows/doctor.yml +++ b/.github/workflows/doctor.yml @@ -8,6 +8,8 @@ on: - Library/Homebrew/extend/os/diagnostic.rb - Library/Homebrew/extend/os/mac/diagnostic.rb - Library/Homebrew/os/mac/xcode.rb + branches-ignore: + - master env: HOMEBREW_DEVELOPER: 1 HOMEBREW_NO_AUTO_UPDATE: 1 diff --git a/.github/workflows/spdx.yml b/.github/workflows/spdx.yml index 4c59e7cb17..10b27c24f3 100644 --- a/.github/workflows/spdx.yml +++ b/.github/workflows/spdx.yml @@ -3,6 +3,8 @@ on: push: paths: - .github/workflows/spdx.yml + branches-ignore: + - master schedule: - cron: '0 */12 * * *' jobs: diff --git a/.github/workflows/tapioca.yml b/.github/workflows/tapioca.yml index b5c519fe9e..0343566d56 100644 --- a/.github/workflows/tapioca.yml +++ b/.github/workflows/tapioca.yml @@ -3,6 +3,8 @@ on: push: paths: - .github/workflows/tapioca.yml + branches-ignore: + - master schedule: - cron: '0 */12 * * *' jobs: From 9ae020834736dab32fc12d3a9e5b2e09352ca12f Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 26 Aug 2020 14:24:58 +0100 Subject: [PATCH 2/2] workflows: improve scheduled behaviour. --- .github/workflows/spdx.yml | 22 +++++++++++++++++----- .github/workflows/tapioca.yml | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/.github/workflows/spdx.yml b/.github/workflows/spdx.yml index 10b27c24f3..e26da352db 100644 --- a/.github/workflows/spdx.yml +++ b/.github/workflows/spdx.yml @@ -27,14 +27,26 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - git fetch origin master - git reset origin/master - git checkout -B spdx-update + git fetch origin + + BRANCH="spdx-update" + echo "::set-output name=branch::${BRANCH}" + + if git ls-remote --exit-code --heads origin "$BRANCH"; then + git checkout "$BRANCH" + git reset origin/master + else + git checkout -B "$BRANCH" origin/master + BRANCH_EXISTS="1" + fi if brew update-license-data --fail-if-not-changed; then git add "$GITHUB_WORKSPACE/Library/Homebrew/data/spdx" git commit -m "spdx: update license data." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/master/.github/workflows/spdx.yml)." echo "::set-output name=committed::true" + if [ -n "$BRANCH_EXISTS" ]; then + echo "::set-output name=pull_request::true" + fi fi - name: Push commits @@ -42,11 +54,11 @@ jobs: uses: Homebrew/actions/git-try-push@master with: token: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} - branch: spdx-update + branch: ${{ steps.update.outputs.branch }} force: true - name: Open a pull request - if: steps.update.outputs.committed == 'true' + if: steps.update.outputs.pull_request == 'true' run: hub pull-request --no-edit env: GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} diff --git a/.github/workflows/tapioca.yml b/.github/workflows/tapioca.yml index 0343566d56..a2561d18d7 100644 --- a/.github/workflows/tapioca.yml +++ b/.github/workflows/tapioca.yml @@ -35,9 +35,18 @@ jobs: - name: Update Tapioca definitions id: update run: | - git fetch origin master - git reset origin/master - git checkout -B tapioca-update + git fetch origin + + BRANCH="tapioca-update" + echo "::set-output name=branch::${BRANCH}" + + if git ls-remote --exit-code --heads origin "$BRANCH"; then + git checkout "$BRANCH" + git reset origin/master + else + git checkout -B "$BRANCH" origin/master + BRANCH_EXISTS="1" + fi # TODO: replace with `brew typecheck` cd "$GITHUB_WORKSPACE/Library/Homebrew" @@ -49,6 +58,9 @@ jobs: git add "$GITHUB_WORKSPACE/Library/Homebrew/sorbet" git commit -m "sorbet: update RBI files using Tapioca." -m "Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/blob/master/.github/workflows/tapioca.yml)." echo "::set-output name=committed::true" + if [ -n "$BRANCH_EXISTS" ]; then + echo "::set-output name=pull_request::true" + fi fi - name: Push commits @@ -56,11 +68,11 @@ jobs: uses: Homebrew/actions/git-try-push@master with: token: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} - branch: tapioca-update + branch: ${{ steps.update.outputs.branch }} force: true - name: Open a pull request - if: steps.update.outputs.committed == 'true' + if: steps.update.outputs.pull_request == 'true' run: hub pull-request --no-edit env: GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}