mirror of
https://github.com/sst/opencode.git
synced 2025-07-08 00:25:00 +00:00
CI (#43)
* sync * ci test * ci test * tag * sync * sync * ci * sync * enable cgo * sync * add back brew * switch to main
This commit is contained in:
parent
cded7ee9fd
commit
289f6af3de
5 changed files with 189 additions and 0 deletions
34
.github/workflows/build.yml
vendored
Normal file
34
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
name: build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- run: git fetch --force --tags
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ">=1.23.2"
|
||||||
|
|
||||||
|
- run: go mod download
|
||||||
|
- uses: goreleaser/goreleaser-action@v6
|
||||||
|
with:
|
||||||
|
distribution: goreleaser
|
||||||
|
version: latest
|
||||||
|
args: build --snapshot --clean
|
37
.github/workflows/release.yml
vendored
Normal file
37
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "*"
|
||||||
|
|
||||||
|
concurrency: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
goreleaser:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- run: git fetch --force --tags
|
||||||
|
|
||||||
|
- uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: ">=1.23.2"
|
||||||
|
|
||||||
|
- run: go mod download
|
||||||
|
- uses: goreleaser/goreleaser-action@v6
|
||||||
|
with:
|
||||||
|
distribution: goreleaser
|
||||||
|
version: latest
|
||||||
|
args: release --clean
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
|
||||||
|
AUR_KEY: ${{ secrets.AUR_KEY }}
|
72
.goreleaser.yml
Normal file
72
.goreleaser.yml
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
version: 2
|
||||||
|
project_name: opencode
|
||||||
|
before:
|
||||||
|
hooks:
|
||||||
|
builds:
|
||||||
|
- env:
|
||||||
|
goos:
|
||||||
|
- linux
|
||||||
|
- darwin
|
||||||
|
main: ./main.go
|
||||||
|
|
||||||
|
archives:
|
||||||
|
- format: tar.gz
|
||||||
|
# this name template makes the OS and Arch compatible with the results of uname.
|
||||||
|
name_template: >-
|
||||||
|
opencode-
|
||||||
|
{{- if eq .Os "darwin" }}mac-
|
||||||
|
{{- else if eq .Os "windows" }}windows-
|
||||||
|
{{- else if eq .Os "linux" }}linux-{{end}}
|
||||||
|
{{- if eq .Arch "amd64" }}x86_64
|
||||||
|
{{- else if eq .Arch "#86" }}i386
|
||||||
|
{{- else }}{{ .Arch }}{{ end }}
|
||||||
|
{{- if .Arm }}v{{ .Arm }}{{ end }}
|
||||||
|
# use zip for windows archives
|
||||||
|
format_overrides:
|
||||||
|
- goos: windows
|
||||||
|
format: zip
|
||||||
|
checksum:
|
||||||
|
name_template: "checksums.txt"
|
||||||
|
snapshot:
|
||||||
|
name_template: "0.0.0-{{ .Timestamp }}"
|
||||||
|
aurs:
|
||||||
|
- name: opencode
|
||||||
|
homepage: "https://github.com/opencode-ai/opencode"
|
||||||
|
description: "Deploy anything"
|
||||||
|
maintainers:
|
||||||
|
- "opencode <noreply@opencode.ai>"
|
||||||
|
license: "MIT"
|
||||||
|
private_key: "{{ .Env.AUR_KEY }}"
|
||||||
|
git_url: "ssh://aur@aur.archlinux.org/opencode-bin.git"
|
||||||
|
provides:
|
||||||
|
- opencode
|
||||||
|
conflicts:
|
||||||
|
- opencode
|
||||||
|
package: |-
|
||||||
|
install -Dm755 ./opencode "${pkgdir}/usr/bin/opencode"
|
||||||
|
brews:
|
||||||
|
- repository:
|
||||||
|
owner: opencode-ai
|
||||||
|
name: homebrew-tap
|
||||||
|
nfpms:
|
||||||
|
- maintainer: opencode
|
||||||
|
description: terminal based agent that can build anything
|
||||||
|
formats:
|
||||||
|
- deb
|
||||||
|
- rpm
|
||||||
|
file_name_template: >-
|
||||||
|
{{ .ProjectName }}-
|
||||||
|
{{- if eq .Os "darwin" }}mac
|
||||||
|
{{- else }}{{ .Os }}{{ end }}-{{ .Arch }}
|
||||||
|
|
||||||
|
changelog:
|
||||||
|
sort: asc
|
||||||
|
filters:
|
||||||
|
exclude:
|
||||||
|
- "^docs:"
|
||||||
|
- "^doc:"
|
||||||
|
- "^test:"
|
||||||
|
- "^ci:"
|
||||||
|
- "^ignore:"
|
||||||
|
- "^example:"
|
||||||
|
- "^wip:"
|
43
scripts/release
Executable file
43
scripts/release
Executable file
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Parse command line arguments
|
||||||
|
minor=false
|
||||||
|
while [ "$#" -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
--minor) minor=true; shift 1;;
|
||||||
|
*) echo "Unknown parameter: $1"; exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
git fetch --force --tags
|
||||||
|
|
||||||
|
# Get the latest Git tag
|
||||||
|
latest_tag=$(git tag --sort=committerdate | grep -E '[0-9]' | tail -1)
|
||||||
|
|
||||||
|
# If there is no tag, exit the script
|
||||||
|
if [ -z "$latest_tag" ]; then
|
||||||
|
echo "No tags found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Latest tag: $latest_tag"
|
||||||
|
|
||||||
|
# Split the tag into major, minor, and patch numbers
|
||||||
|
IFS='.' read -ra VERSION <<< "$latest_tag"
|
||||||
|
|
||||||
|
if [ "$minor" = true ]; then
|
||||||
|
# Increment the minor version and reset patch to 0
|
||||||
|
minor_number=${VERSION[1]}
|
||||||
|
let "minor_number++"
|
||||||
|
new_version="${VERSION[0]}.$minor_number.0"
|
||||||
|
else
|
||||||
|
# Increment the patch version
|
||||||
|
patch_number=${VERSION[2]}
|
||||||
|
let "patch_number++"
|
||||||
|
new_version="${VERSION[0]}.${VERSION[1]}.$patch_number"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "New version: $new_version"
|
||||||
|
|
||||||
|
git tag $new_version
|
||||||
|
git push --tags
|
3
scripts/snapshot
Executable file
3
scripts/snapshot
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
goreleaser build --clean --snapshot --skip validate
|
Loading…
Add table
Add a link
Reference in a new issue