feat(build): add GitHub mirror CI and release workflows
ci / vet, staticcheck, test, build (push) Canceled after 0s
ci / vet, staticcheck, test, build (push) Canceled after 0s
Mirror the repository to github.com/k3nnyfr/glint and build releases there as well as on Gitea. - .github/workflows/ci.yml: vet, staticcheck, test, build - .github/workflows/release.yml: build the six platform binaries and publish a GitHub release on each v* tag - action.yml: download from GitHub releases and pick the binary matching the runner OS/arch instead of always linux-amd64 - README/INSTALL/CHANGELOG: document the mirror, Homebrew tap renamed to k3nnyfr/homebrew-glint Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
name: ci
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ci:
|
||||||
|
name: vet, staticcheck, test, build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: vet
|
||||||
|
run: go vet ./...
|
||||||
|
|
||||||
|
- name: staticcheck
|
||||||
|
run: go tool staticcheck ./...
|
||||||
|
|
||||||
|
- name: test
|
||||||
|
run: go test ./...
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
run: go build ./cmd/glint/...
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Build and publish release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version-file: go.mod
|
||||||
|
|
||||||
|
- name: Build binaries
|
||||||
|
env:
|
||||||
|
CGO_ENABLED: "0"
|
||||||
|
TAG: ${{ github.ref_name }}
|
||||||
|
run: |
|
||||||
|
mkdir -p dist
|
||||||
|
for target in linux/amd64 linux/arm64 darwin/amd64 darwin/arm64 windows/amd64 windows/arm64; do
|
||||||
|
os=${target%/*}
|
||||||
|
arch=${target#*/}
|
||||||
|
ext=""
|
||||||
|
[ "$os" = "windows" ] && ext=".exe"
|
||||||
|
GOOS=$os GOARCH=$arch go build -trimpath \
|
||||||
|
-ldflags="-s -w -X main.version=${TAG}" \
|
||||||
|
-o "dist/glint-${TAG}-${os}-${arch}${ext}" \
|
||||||
|
./cmd/glint/...
|
||||||
|
echo "built: glint-${TAG}-${os}-${arch}${ext}"
|
||||||
|
done
|
||||||
|
|
||||||
|
- name: Create release and upload assets
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
TAG: ${{ github.ref_name }}
|
||||||
|
run: |
|
||||||
|
gh release create "$TAG" dist/* \
|
||||||
|
--repo "$GITHUB_REPOSITORY" \
|
||||||
|
--title "$TAG" \
|
||||||
|
--notes "See [CHANGELOG.md](https://github.com/${GITHUB_REPOSITORY}/blob/${TAG}/CHANGELOG.md) for details."
|
||||||
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
This project uses [Semantic Versioning](https://semver.org).
|
This project uses [Semantic Versioning](https://semver.org).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- **GitHub mirror and release builds** — the repository is mirrored to [github.com/k3nnyfr/glint](https://github.com/k3nnyfr/glint). New `.github/workflows/ci.yml` (vet, staticcheck, test, build) and `.github/workflows/release.yml` build the six platform binaries and publish a GitHub release on each `v*` tag. The Gitea workflows in `.gitea/workflows/` are unchanged; Gitea ignores `.github/workflows/` when `.gitea/workflows/` exists.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- **GitHub Action downloads from GitHub releases** — `action.yml` now fetches the binary from `github.com/k3nnyfr/glint` releases instead of git.k3nny.fr, and picks the binary matching the runner OS (Linux, macOS, Windows) and architecture (x64, ARM64) instead of always using `linux-amd64`. Reference it as `k3nnyfr/glint@<tag>`.
|
||||||
|
- **Homebrew tap renamed** — documentation now points to `k3nnyfr/homebrew-glint`.
|
||||||
|
|
||||||
## [0.5.1] - 2026-07-30
|
## [0.5.1] - 2026-07-30
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
+8
-4
@@ -27,7 +27,11 @@ sudo mv glint /usr/local/bin/
|
|||||||
|
|
||||||
## Option 2 — Download a pre-built binary
|
## Option 2 — Download a pre-built binary
|
||||||
|
|
||||||
Pre-built binaries are attached to each [release](https://git.k3nny.fr/k3nny/glint/releases).
|
Pre-built binaries are attached to each release, on both
|
||||||
|
[git.k3nny.fr](https://git.k3nny.fr/k3nny/glint/releases) and the
|
||||||
|
[GitHub mirror](https://github.com/k3nnyfr/glint/releases). The examples below
|
||||||
|
use git.k3nny.fr; replace the base URL with
|
||||||
|
`https://github.com/k3nnyfr/glint/releases/download` to download from GitHub.
|
||||||
|
|
||||||
| Platform | File |
|
| Platform | File |
|
||||||
|----------|------|
|
|----------|------|
|
||||||
@@ -84,14 +88,14 @@ glint --version
|
|||||||
|
|
||||||
## Option 3 — Homebrew (macOS and Linux)
|
## Option 3 — Homebrew (macOS and Linux)
|
||||||
|
|
||||||
A Homebrew tap is available at `k3nny/glint`.
|
A Homebrew tap is available at `k3nnyfr/glint`.
|
||||||
|
|
||||||
> **First-time setup:** create a GitHub repository named `homebrew-glint`
|
> **First-time setup:** create a GitHub repository named `homebrew-glint`
|
||||||
> under your account and copy [`Formula/glint.rb`](Formula/glint.rb) into it.
|
> under the `k3nnyfr` account and copy [`Formula/glint.rb`](Formula/glint.rb) into it.
|
||||||
> Users then install via the tap as shown below.
|
> Users then install via the tap as shown below.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew tap k3nny/glint https://github.com/k3nny/homebrew-glint
|
brew tap k3nnyfr/glint https://github.com/k3nnyfr/homebrew-glint
|
||||||
brew install glint
|
brew install glint
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,8 @@ Use **glint** when you want fast, offline, dependency-free pipeline validation
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
glint is developed on [git.k3nny.fr/k3nny/glint](https://git.k3nny.fr/k3nny/glint) and mirrored to GitHub at [github.com/k3nnyfr/glint](https://github.com/k3nnyfr/glint). Release binaries are published on both.
|
||||||
|
|
||||||
See [INSTALL.md](INSTALL.md) for all options: pre-built binaries (Linux amd64/arm64, macOS Intel/Apple Silicon, Windows), Homebrew tap, and building from source.
|
See [INSTALL.md](INSTALL.md) for all options: pre-built binaries (Linux amd64/arm64, macOS Intel/Apple Silicon, Windows), Homebrew tap, and building from source.
|
||||||
|
|
||||||
Quick start (Linux/macOS, building from source):
|
Quick start (Linux/macOS, building from source):
|
||||||
@@ -72,7 +74,7 @@ sudo mv glint /usr/local/bin/
|
|||||||
Homebrew:
|
Homebrew:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
brew tap k3nny/glint https://github.com/k3nny/homebrew-glint
|
brew tap k3nnyfr/glint https://github.com/k3nnyfr/homebrew-glint
|
||||||
brew install glint
|
brew install glint
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -133,16 +135,17 @@ The component downloads the glint Linux binary, runs `glint check`, and respects
|
|||||||
|
|
||||||
### GitHub Actions
|
### GitHub Actions
|
||||||
|
|
||||||
Copy [`action.yml`](action.yml) from this repository, or mirror this repo to GitHub as `k3nny/glint` and reference it directly:
|
Reference the action from the GitHub mirror:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- uses: k3nny/glint@v0.3.0
|
- uses: k3nnyfr/glint@vX.Y.Z
|
||||||
with:
|
with:
|
||||||
file: .gitlab-ci.yml # optional, default: .gitlab-ci.yml
|
file: .gitlab-ci.yml # optional, default: .gitlab-ci.yml
|
||||||
args: '--format sarif' # optional
|
args: '--format sarif' # optional
|
||||||
|
version: latest # optional, default: latest
|
||||||
```
|
```
|
||||||
|
|
||||||
The action downloads the glint Linux binary into `$RUNNER_TEMP` and runs `glint check`. Only Linux runners are supported (matches the available release binary).
|
The action downloads the glint binary matching the runner (Linux, macOS or Windows; x64 or ARM64) from the GitHub releases into `$RUNNER_TEMP` and runs `glint check`. You can also copy [`action.yml`](action.yml) into your own repository and use it as a local action.
|
||||||
|
|
||||||
### VS Code extension
|
### VS Code extension
|
||||||
|
|
||||||
|
|||||||
+24
-8
@@ -1,8 +1,8 @@
|
|||||||
# GitHub Actions composite action — glint pipeline validator
|
# GitHub Actions composite action — glint pipeline validator
|
||||||
#
|
#
|
||||||
# To use this action, mirror this repository to GitHub as k3nny/glint, then:
|
# Usage (from the GitHub mirror at k3nnyfr/glint):
|
||||||
#
|
#
|
||||||
# - uses: k3nny/glint@v0.2.28
|
# - uses: k3nnyfr/glint@vX.Y.Z
|
||||||
# with:
|
# with:
|
||||||
# file: .gitlab-ci.yml # optional
|
# file: .gitlab-ci.yml # optional
|
||||||
#
|
#
|
||||||
@@ -22,7 +22,7 @@ branding:
|
|||||||
inputs:
|
inputs:
|
||||||
version:
|
version:
|
||||||
description: >-
|
description: >-
|
||||||
glint release tag to install (e.g. 'v0.2.28'). Defaults to 'latest'
|
glint release tag to install (e.g. 'v0.6.0'). Defaults to 'latest'
|
||||||
which resolves to the newest published release.
|
which resolves to the newest published release.
|
||||||
required: false
|
required: false
|
||||||
default: 'latest'
|
default: 'latest'
|
||||||
@@ -42,20 +42,36 @@ runs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
GLINT_VERSION: ${{ inputs.version }}
|
GLINT_VERSION: ${{ inputs.version }}
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
run: |
|
run: |
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
REPO="k3nnyfr/glint"
|
||||||
if [ "$GLINT_VERSION" = "latest" ]; then
|
if [ "$GLINT_VERSION" = "latest" ]; then
|
||||||
GLINT_VERSION=$(curl -sf \
|
GLINT_VERSION=$(curl -sf \
|
||||||
"https://git.k3nny.fr/api/v1/repos/k3nny/glint/releases?limit=1" \
|
-H "Authorization: Bearer $GH_TOKEN" \
|
||||||
|
"https://api.github.com/repos/${REPO}/releases/latest" \
|
||||||
| grep '"tag_name"' | head -1 | cut -d'"' -f4)
|
| grep '"tag_name"' | head -1 | cut -d'"' -f4)
|
||||||
fi
|
fi
|
||||||
|
case "$RUNNER_OS" in
|
||||||
|
Linux) OS=linux ;;
|
||||||
|
macOS) OS=darwin ;;
|
||||||
|
Windows) OS=windows ;;
|
||||||
|
*) echo "unsupported runner OS: $RUNNER_OS" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
case "$RUNNER_ARCH" in
|
||||||
|
X64) ARCH=amd64 ;;
|
||||||
|
ARM64) ARCH=arm64 ;;
|
||||||
|
*) echo "unsupported runner arch: $RUNNER_ARCH" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
EXT=""
|
||||||
|
[ "$OS" = "windows" ] && EXT=".exe"
|
||||||
DEST="$RUNNER_TEMP/glint-bin"
|
DEST="$RUNNER_TEMP/glint-bin"
|
||||||
mkdir -p "$DEST"
|
mkdir -p "$DEST"
|
||||||
URL="https://git.k3nny.fr/k3nny/glint/releases/download/${GLINT_VERSION}/glint-${GLINT_VERSION}-linux-amd64"
|
URL="https://github.com/${REPO}/releases/download/${GLINT_VERSION}/glint-${GLINT_VERSION}-${OS}-${ARCH}${EXT}"
|
||||||
curl -sfL "$URL" -o "$DEST/glint"
|
curl -sfL "$URL" -o "$DEST/glint${EXT}"
|
||||||
chmod +x "$DEST/glint"
|
chmod +x "$DEST/glint${EXT}"
|
||||||
echo "$DEST" >> "$GITHUB_PATH"
|
echo "$DEST" >> "$GITHUB_PATH"
|
||||||
"$DEST/glint" --version
|
"$DEST/glint${EXT}" --version
|
||||||
|
|
||||||
- name: Run glint check
|
- name: Run glint check
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|||||||
Reference in New Issue
Block a user