Skip to content

Commit 289f6af

Browse files
authored
CI (#43)
* sync * ci test * ci test * tag * sync * sync * ci * sync * enable cgo * sync * add back brew * switch to main
1 parent cded7ee commit 289f6af

File tree

5 files changed

+189
-0
lines changed

5 files changed

+189
-0
lines changed

.github/workflows/build.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: build
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
9+
concurrency: ${{ github.workflow }}-${{ github.ref }}
10+
11+
permissions:
12+
contents: write
13+
packages: write
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v3
20+
with:
21+
fetch-depth: 0
22+
23+
- run: git fetch --force --tags
24+
25+
- uses: actions/setup-go@v5
26+
with:
27+
go-version: ">=1.23.2"
28+
29+
- run: go mod download
30+
- uses: goreleaser/goreleaser-action@v6
31+
with:
32+
distribution: goreleaser
33+
version: latest
34+
args: build --snapshot --clean

.github/workflows/release.yml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: release
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
tags:
7+
- "*"
8+
9+
concurrency: ${{ github.workflow }}-${{ github.ref }}
10+
11+
permissions:
12+
contents: write
13+
packages: write
14+
15+
jobs:
16+
goreleaser:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v3
20+
with:
21+
fetch-depth: 0
22+
23+
- run: git fetch --force --tags
24+
25+
- uses: actions/setup-go@v5
26+
with:
27+
go-version: ">=1.23.2"
28+
29+
- run: go mod download
30+
- uses: goreleaser/goreleaser-action@v6
31+
with:
32+
distribution: goreleaser
33+
version: latest
34+
args: release --clean
35+
env:
36+
GITHUB_TOKEN: ${{ secrets.HOMEBREW_GITHUB_TOKEN }}
37+
AUR_KEY: ${{ secrets.AUR_KEY }}

.goreleaser.yml

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
version: 2
2+
project_name: opencode
3+
before:
4+
hooks:
5+
builds:
6+
- env:
7+
goos:
8+
- linux
9+
- darwin
10+
main: ./main.go
11+
12+
archives:
13+
- format: tar.gz
14+
# this name template makes the OS and Arch compatible with the results of uname.
15+
name_template: >-
16+
opencode-
17+
{{- if eq .Os "darwin" }}mac-
18+
{{- else if eq .Os "windows" }}windows-
19+
{{- else if eq .Os "linux" }}linux-{{end}}
20+
{{- if eq .Arch "amd64" }}x86_64
21+
{{- else if eq .Arch "#86" }}i386
22+
{{- else }}{{ .Arch }}{{ end }}
23+
{{- if .Arm }}v{{ .Arm }}{{ end }}
24+
# use zip for windows archives
25+
format_overrides:
26+
- goos: windows
27+
format: zip
28+
checksum:
29+
name_template: "checksums.txt"
30+
snapshot:
31+
name_template: "0.0.0-{{ .Timestamp }}"
32+
aurs:
33+
- name: opencode
34+
homepage: "https://github.com/opencode-ai/opencode"
35+
description: "Deploy anything"
36+
maintainers:
37+
- "opencode <[email protected]>"
38+
license: "MIT"
39+
private_key: "{{ .Env.AUR_KEY }}"
40+
git_url: "ssh://[email protected]/opencode-bin.git"
41+
provides:
42+
- opencode
43+
conflicts:
44+
- opencode
45+
package: |-
46+
install -Dm755 ./opencode "${pkgdir}/usr/bin/opencode"
47+
brews:
48+
- repository:
49+
owner: opencode-ai
50+
name: homebrew-tap
51+
nfpms:
52+
- maintainer: opencode
53+
description: terminal based agent that can build anything
54+
formats:
55+
- deb
56+
- rpm
57+
file_name_template: >-
58+
{{ .ProjectName }}-
59+
{{- if eq .Os "darwin" }}mac
60+
{{- else }}{{ .Os }}{{ end }}-{{ .Arch }}
61+
62+
changelog:
63+
sort: asc
64+
filters:
65+
exclude:
66+
- "^docs:"
67+
- "^doc:"
68+
- "^test:"
69+
- "^ci:"
70+
- "^ignore:"
71+
- "^example:"
72+
- "^wip:"

scripts/release

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env bash
2+
3+
# Parse command line arguments
4+
minor=false
5+
while [ "$#" -gt 0 ]; do
6+
case "$1" in
7+
--minor) minor=true; shift 1;;
8+
*) echo "Unknown parameter: $1"; exit 1;;
9+
esac
10+
done
11+
12+
git fetch --force --tags
13+
14+
# Get the latest Git tag
15+
latest_tag=$(git tag --sort=committerdate | grep -E '[0-9]' | tail -1)
16+
17+
# If there is no tag, exit the script
18+
if [ -z "$latest_tag" ]; then
19+
echo "No tags found"
20+
exit 1
21+
fi
22+
23+
echo "Latest tag: $latest_tag"
24+
25+
# Split the tag into major, minor, and patch numbers
26+
IFS='.' read -ra VERSION <<< "$latest_tag"
27+
28+
if [ "$minor" = true ]; then
29+
# Increment the minor version and reset patch to 0
30+
minor_number=${VERSION[1]}
31+
let "minor_number++"
32+
new_version="${VERSION[0]}.$minor_number.0"
33+
else
34+
# Increment the patch version
35+
patch_number=${VERSION[2]}
36+
let "patch_number++"
37+
new_version="${VERSION[0]}.${VERSION[1]}.$patch_number"
38+
fi
39+
40+
echo "New version: $new_version"
41+
42+
git tag $new_version
43+
git push --tags

scripts/snapshot

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
goreleaser build --clean --snapshot --skip validate

0 commit comments

Comments
 (0)