Port batch log streaming onto streamOnce and follow #87
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
| name: Go | |
| on: | |
| push: | |
| branches: [master] | |
| tags: ['v*'] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| jobs: | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| - run: go build ./... | |
| - run: go vet ./... | |
| - run: go test ./... | |
| release: | |
| name: Release | |
| needs: [test] | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: go.mod | |
| # The -X path must be the full module path of the package holding the | |
| # variable. An -X for a symbol that does not exist is silently ignored, so | |
| # a wrong path leaves every released binary reporting an empty version. | |
| - name: Build release binaries | |
| env: | |
| VALAR_VERSION: ${{ github.ref_name }} | |
| run: | | |
| set -eu | |
| mkdir -p dist | |
| for target in linux/amd64 linux/arm linux/arm64 darwin/amd64 darwin/arm64; do | |
| os="${target%/*}" | |
| arch="${target#*/}" | |
| CGO_ENABLED=0 GOOS="$os" GOARCH="$arch" go build \ | |
| -a -tags netgo \ | |
| -ldflags "-X github.com/valar/cli/cmd.version=${VALAR_VERSION} -s -w -extldflags \"-static\"" \ | |
| -o "dist/valar_${os}_${arch}" . | |
| done | |
| - name: Verify the version was stamped | |
| run: | | |
| set -eu | |
| got="$(./dist/valar_linux_amd64 --version)" | |
| case "$got" in | |
| *"${GITHUB_REF_NAME#v}"*) ;; | |
| *) echo "binary reports '$got', expected it to contain ${GITHUB_REF_NAME#v}"; exit 1 ;; | |
| esac | |
| - name: Publish release | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| gh release create "${GITHUB_REF_NAME}" dist/* \ | |
| --title "${GITHUB_REF_NAME}" \ | |
| --generate-notes | |
| homebrew: | |
| name: Update homebrew-tap | |
| needs: [release] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Configure deploy key | |
| env: | |
| DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }} | |
| run: | | |
| set -eu | |
| mkdir -p ~/.ssh | |
| ssh-keyscan github.com >> ~/.ssh/known_hosts | |
| install -m 600 /dev/stdin ~/.ssh/id_deploy <<< "${DEPLOY_KEY}" | |
| # sed writes through a temporary file: redirecting into the file being | |
| # read truncates it before it is opened. | |
| - name: Bump formula | |
| env: | |
| GIT_SSH_COMMAND: ssh -i ~/.ssh/id_deploy -o IdentitiesOnly=yes | |
| run: | | |
| set -eu | |
| git config --global user.email "action@github.com" | |
| git config --global user.name "GitHub Actions" | |
| git clone git@github.com:valar/homebrew-tap.git tap | |
| cd tap | |
| url="https://github.com/valar/cli/archive/refs/tags/${GITHUB_REF_NAME}.tar.gz" | |
| sha="$(curl -sSL "$url" | sha256sum | cut -d' ' -f1)" | |
| tmp="$(mktemp)" | |
| sed -e "s|url \".*\"|url \"${url}\"|" \ | |
| -e "s|sha256 \".*\"|sha256 \"${sha}\"|" \ | |
| Formula/valar.rb > "$tmp" | |
| mv "$tmp" Formula/valar.rb | |
| if git diff --quiet; then | |
| echo "formula already up to date" | |
| exit 0 | |
| fi | |
| git commit -am "Bump valar to ${GITHUB_REF_NAME}" | |
| git push |