diff options
-rw-r--r-- | .buildkite/pipeline.yaml | 2 | ||||
-rw-r--r-- | .github/workflows/build.yml | 9 | ||||
-rw-r--r-- | .github/workflows/go.yml | 47 | ||||
-rwxr-xr-x | tools/go_branch.sh | 12 |
4 files changed, 39 insertions, 31 deletions
diff --git a/.buildkite/pipeline.yaml b/.buildkite/pipeline.yaml index f8bf00b50..93e4195d6 100644 --- a/.buildkite/pipeline.yaml +++ b/.buildkite/pipeline.yaml @@ -34,7 +34,7 @@ steps: label: ":golang: Go branch" commands: - tools/go_branch.sh - - git checkout go && git clean -f + - git checkout go && git clean -xf . - go build ./... # Release workflow. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 270aaf034..b0381a563 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,19 +9,14 @@ name: "Build" - master pull_request: branches: - - "**" + - master + - "feature/**" jobs: default: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/cache@v1 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-bazel-${{ hashFiles('WORKSPACE') }} - restore-keys: | - ${{ runner.os }}-bazel- - run: make - run: make build OPTIONS="--build_tag_filters nogo" TARGETS="//..." - run: make run TARGETS="//tools/github" ARGS="-path=bazel-bin/ -path=bazel-out/ nogo" diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 802fe5ce5..594dc7ffc 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -7,6 +7,10 @@ name: "Go" push: branches: - master + pull_request: + branches: + - master + - "feature/**" jobs: generate: @@ -19,31 +23,42 @@ jobs: else echo ::set-output name=has_token::false fi + - run: | + jq -nc '{"state": "pending", "context": "go tests"}' | \ + curl -sL -X POST -d @- \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "${{ github.event.pull_request.statuses_url }}" + if: github.event_name == 'pull_request' - uses: actions/checkout@v2 - if: steps.setup.outputs.has_token == 'true' + if: github.event_name == 'push' && steps.setup.outputs.has_token == 'true' with: fetch-depth: 0 token: '${{ secrets.GO_TOKEN }}' - uses: actions/checkout@v2 - if: steps.setup.outputs.has_token != 'true' + if: github.event_name == 'pull_request' || steps.setup.outputs.has_token != 'true' with: fetch-depth: 0 - uses: actions/setup-go@v2 with: - go-version: 1.14 - - uses: actions/cache@v1 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - uses: actions/cache@v1 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-bazel-${{ hashFiles('WORKSPACE') }} - restore-keys: | - ${{ runner.os }}-bazel- + go-version: 1.15 - run: tools/go_branch.sh - - run: | + - run: git checkout go && git clean -xf . && go build ./... + - if: github.event_name == 'push' + run: | git remote add upstream "https://github.com/${{ github.repository }}" git push upstream go:go + - if: ${{ success() && github.event_name == 'pull_request' }} + run: | + jq -nc '{"state": "success", "context": "go tests"}' | \ + curl -sL -X POST -d @- \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "${{ github.event.pull_request.statuses_url }}" + - if: ${{ failure() && github.event_name == 'pull_request' }} + run: | + jq -nc '{"state": "failure", "context": "go tests"}' | \ + curl -sL -X POST -d @- \ + -H "Content-Type: application/json" \ + -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ + "${{ github.event.pull_request.statuses_url }}" diff --git a/tools/go_branch.sh b/tools/go_branch.sh index 4b18c015f..026733d3c 100755 --- a/tools/go_branch.sh +++ b/tools/go_branch.sh @@ -37,11 +37,9 @@ readonly module origpwd othersrc # Build an amd64 & arm64 gopath. declare -r go_amd64="${tmp_dir}/amd64" declare -r go_arm64="${tmp_dir}/arm64" -rm -rf bazel-bin/gopath -make build BAZEL_OPTIONS="" TARGETS="//:gopath" +make build BAZEL_OPTIONS="" TARGETS="//:gopath" 2>/dev/null rsync --recursive --delete --copy-links bazel-bin/gopath/ "${go_amd64}" -rm -rf bazel-bin/gopath -make build BAZEL_OPTIONS=--config=cross-aarch64 TARGETS="//:gopath" +make build BAZEL_OPTIONS=--config=cross-aarch64 TARGETS="//:gopath" 2>/dev/null rsync --recursive --delete --copy-links bazel-bin/gopath/ "${go_arm64}" # Strip irrelevant files, i.e. use only arm64 files from the arm64 build. @@ -69,8 +67,8 @@ cross_check "${go_amd64}" "${go_arm64}" # Merge the two for a complete set of source files. declare -r go_merged="${tmp_dir}/merged" -rsync --recursive --update "${go_amd64}/" "${go_merged}" -rsync --recursive --update "${go_arm64}/" "${go_merged}" +rsync --recursive "${go_amd64}/" "${go_merged}" +rsync --recursive "${go_arm64}/" "${go_merged}" # Record the current working commit. declare head @@ -161,7 +159,7 @@ find . -type d -exec chmod 0755 {} \; # branch, then we have nothing to commit here. So allow empty commit. This can # occur when this script is run parallely (via pull_request and push events) # and the push workflow finishes before the pull_request workflow can run this. -git add . && git commit --allow-empty -m "Merge ${head} (automated)" +git add --all && git commit --allow-empty -m "Merge ${head} (automated)" # Push the branch back to the original repository. git remote add orig "${repo_orig}" && git push -f orig go:go |