Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 9 additions & 133 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,121 +27,7 @@ jobs:
- name: Run tests
run: go test -v -race ./...

- name: Build binaries
run: |
VERSION=${GITHUB_REF_NAME}
COMMIT=$(git rev-parse --short HEAD)
DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
LDFLAGS="-s -w -X main.version=${VERSION} -X main.commit=${COMMIT} -X main.date=${DATE}"

mkdir -p dist

# Build for each platform
platforms=(
"linux/amd64"
"linux/arm64"
"darwin/amd64"
"darwin/arm64"
"windows/amd64"
"windows/arm64"
)

for platform in "${platforms[@]}"; do
GOOS=${platform%/*}
GOARCH=${platform#*/}

output_name="esq-${GOOS}-${GOARCH}"
if [ "$GOOS" = "windows" ]; then
output_name+=".exe"
fi

echo "Building $output_name..."
GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "${LDFLAGS}" -o "dist/${output_name}" ./cmd/esq
done

# Create archives
cd dist
for file in esq-*; do
if [[ "$file" == *.exe ]]; then
zip "${file%.exe}.zip" "$file"
rm "$file"
else
tar czf "${file}.tar.gz" "$file"
rm "$file"
fi
done

# Generate checksums
sha256sum * > checksums.txt

- name: Generate changelog
id: changelog
run: |
# Get previous tag
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")

if [ -n "$PREV_TAG" ]; then
echo "Generating changelog from $PREV_TAG to $GITHUB_REF_NAME"
CHANGELOG=$(git log --pretty=format:"- %s (%h)" "$PREV_TAG".."$GITHUB_REF_NAME" --no-merges)
else
echo "No previous tag found, including all commits"
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
fi

# Escape for GitHub Actions
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Create Release
uses: softprops/action-gh-release@v2
with:
name: ${{ github.ref_name }}
body: |
## What's Changed

${{ steps.changelog.outputs.changelog }}

## Installation

### Homebrew (macOS and Linux)
```bash
brew install enthus-appdev/tap/esq
```

### macOS (Apple Silicon)
```bash
curl -L https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/esq-darwin-arm64.tar.gz | tar xz
chmod +x esq-darwin-arm64
sudo mv esq-darwin-arm64 /usr/local/bin/esq
```

### macOS (Intel)
```bash
curl -L https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/esq-darwin-amd64.tar.gz | tar xz
chmod +x esq-darwin-amd64
sudo mv esq-darwin-amd64 /usr/local/bin/esq
```

### Linux (x64)
```bash
curl -L https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/esq-linux-amd64.tar.gz | tar xz
chmod +x esq-linux-amd64
sudo mv esq-linux-amd64 /usr/local/bin/esq
```

### Windows
Download `esq-windows-amd64.zip` and add to your PATH.

## Checksums

See `checksums.txt` for SHA256 checksums of all binaries.
files: |
dist/*
draft: false
prerelease: ${{ contains(github.ref_name, '-') }}

- name: Generate GitHub App token for tap bump
- name: Generate GitHub App token for tap
id: app-token
uses: actions/create-github-app-token@v2
with:
Expand All @@ -150,22 +36,12 @@ jobs:
owner: enthus-appdev
repositories: homebrew-tap

- name: Get GitHub App user ID
id: app-user
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
run: |
USER_ID=$(gh api "/users/${{ steps.app-token.outputs.app-slug }}[bot]" --jq .id)
echo "user-id=$USER_ID" >> "$GITHUB_OUTPUT"

- name: Bump Homebrew tap formula
uses: dawidd6/action-homebrew-bump-formula@v7
continue-on-error: true
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
token: ${{ steps.app-token.outputs.token }}
no_fork: true
tap: enthus-appdev/homebrew-tap
formula: esq
tag: ${{ github.ref_name }}
user_name: ${{ steps.app-token.outputs.app-slug }}[bot]
user_email: ${{ steps.app-user.outputs.user-id }}+${{ steps.app-token.outputs.app-slug }}[bot]@users.noreply.github.com
distribution: goreleaser
version: "~> v2"
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_TOKEN: ${{ steps.app-token.outputs.token }}
68 changes: 68 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
version: 2

project_name: esq

builds:
- main: ./cmd/esq
binary: esq
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
ldflags:
- -s -w
- -X main.version={{.Version}}
- -X main.commit={{.ShortCommit}}

archives:
- formats:
- tar.gz
format_overrides:
- goos: windows
formats:
- zip

checksum:
name_template: checksums.txt

changelog:
sort: asc

release:
github:
owner: enthus-appdev
name: esq-cli
header: |
## Installation

### Homebrew (macOS and Linux)
```bash
brew install enthus-appdev/tap/esq
```

### Binary download
Download the archive for your platform below, extract, and add to your PATH.

brews:
- name: esq
repository:
owner: enthus-appdev
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
directory: Formula
homepage: https://github.com/enthus-appdev/esq-cli
description: "Query and inspect Elasticsearch clusters across multiple environments"
license: MIT
commit_author:
name: enthus-appdev-tap-bumper[bot]
email: 275364917+enthus-appdev-tap-bumper[bot]@users.noreply.github.com
commit_msg_template: "chore(formula): bump {{ .ProjectName }} to {{ .Tag }}"
test: |
assert_match version.to_s, shell_output("#{bin}/esq --version")
install: |
bin.install "esq"
Loading