Skip to content

Port batch log streaming onto streamOnce and follow #87

Port batch log streaming onto streamOnce and follow

Port batch log streaming onto streamOnce and follow #87

Workflow file for this run

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