Skip to content

Merge pull request #61 from boxp/feat/codex-hooks-v0.114.0 #34

Merge pull request #61 from boxp/feat/codex-hooks-v0.114.0

Merge pull request #61 from boxp/feat/codex-hooks-v0.114.0 #34

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
jobs:
build:
permissions:
contents: read
strategy:
matrix:
include:
- os: ubuntu-latest
arch: amd64
platform: linux-amd64
- os: ubuntu-24.04-arm
arch: arm64
platform: linux-arm64
- os: macos-14
arch: arm64
platform: darwin-arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: graalvm/setup-graalvm@54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1 # v1
with:
java-version: '21'
distribution: 'graalvm'
native-image-job-reports: 'true'
- uses: DeLaGuardo/setup-clojure@cc67f8308550d0f18b0ba445c2476f84626a5d6a # 13.1
with:
cli: latest
- uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
with:
path: |
~/.m2/repository
~/.gitlibs
~/.clojure/.cpcache
key: ${{ runner.os }}-${{ matrix.arch }}-clojure-${{ hashFiles('deps.edn') }}
restore-keys: ${{ runner.os }}-${{ matrix.arch }}-clojure-
- name: Stamp version from tag
run: echo "${GITHUB_REF_NAME#v}" > resources/CEEKER_VERSION
- name: Build uberjar
run: clojure -T:build uber
- name: Build native image
run: |
native-image \
-jar target/ceeker.jar \
-o ceeker-${{ matrix.platform }}
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: ceeker-${{ matrix.platform }}
path: ceeker-${{ matrix.platform }}
release:
needs: build
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
path: artifacts
- name: Prepare release assets
run: |
mkdir -p release
for dir in artifacts/ceeker-*; do
name=$(basename "$dir")
cp "$dir/$name" "release/$name"
chmod +x "release/$name"
tar czf "release/${name}.tar.gz" -C release "$name"
# Remove raw binary — distribute tarball only
rm "release/$name"
done
- name: Generate checksums
working-directory: release
run: sha256sum *.tar.gz > checksums.txt
- name: Create GitHub Release
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
with:
generate_release_notes: true
files: |
release/*.tar.gz
release/checksums.txt
notify-homebrew-tap:
needs: release
runs-on: ubuntu-latest
concurrency:
group: notify-homebrew-tap-${{ github.ref_name }}
cancel-in-progress: false
permissions:
contents: read
steps:
- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Download release tarballs
env:
GH_TOKEN: ${{ github.token }}
run: |
mkdir -p tarballs
for platform in linux-amd64 linux-arm64 darwin-arm64; do
gh release download "$GITHUB_REF_NAME" \
--repo "$GITHUB_REPOSITORY" \
--pattern "ceeker-${platform}.tar.gz" \
--dir tarballs
done
- name: Compute SHA256 checksums
id: sha
run: |
for platform in linux-amd64 linux-arm64 darwin-arm64; do
file="tarballs/ceeker-${platform}.tar.gz"
if [ ! -f "$file" ]; then
echo "::error::Missing tarball: $file"
exit 1
fi
sha=$(sha256sum "$file" | awk '{print $1}')
key="sha_$(echo "$platform" | tr '-' '_')"
echo "${key}=${sha}" >> "$GITHUB_OUTPUT"
done
- name: Dispatch to homebrew-tap
env:
GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
VERSION: ${{ steps.version.outputs.version }}
TAG: ${{ github.ref_name }}
SHA_DARWIN_ARM64: ${{ steps.sha.outputs.sha_darwin_arm64 }}
SHA_LINUX_AMD64: ${{ steps.sha.outputs.sha_linux_amd64 }}
SHA_LINUX_ARM64: ${{ steps.sha.outputs.sha_linux_arm64 }}
SENDER: ${{ github.repository }}
run: |
jq -n \
--arg version "$VERSION" \
--arg tag "$TAG" \
--arg sha_darwin_arm64 "$SHA_DARWIN_ARM64" \
--arg sha_linux_amd64 "$SHA_LINUX_AMD64" \
--arg sha_linux_arm64 "$SHA_LINUX_ARM64" \
--arg sender "$SENDER" \
'{
event_type: "update-ceeker-formula",
client_payload: {
version: $version,
tag: $tag,
sha_darwin_arm64: $sha_darwin_arm64,
sha_linux_amd64: $sha_linux_amd64,
sha_linux_arm64: $sha_linux_arm64,
sender: $sender
}
}' | gh api repos/boxp/homebrew-tap/dispatches --method POST --input -