diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..3677a314f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,50 @@ +name: build + +on: + workflow_dispatch: + push: + branches: + - dev + +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 + - uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - run: | + npm config set //registry.npmjs.org/:_authToken $NODE_AUTH_TOKEN + npm whoami + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + + - run: git fetch --force --tags + + - uses: actions/setup-go@v5 + with: + go-version: ">=1.23.2" + + - name: Go Mod + run: go mod download + + # TODO remove temporary workaround + - run: bun i --frozen-lockfile + - run: git reset --hard + - run: cd platform && bun tsc --noEmit + - run: ./platform/scripts/build + - uses: goreleaser/goreleaser-action@v6 + with: + distribution: goreleaser + version: latest + args: build --snapshot --clean diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..c308dfaa5 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,39 @@ +name: release + +on: + workflow_dispatch: + push: + branches: + - opencode + 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.GITHUB_TOKEN }} + AUR_KEY: ${{ secrets.AUR_KEY }} diff --git a/.goreleaser.yml b/.goreleaser.yml index 643775718..0b3072616 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,22 +1,20 @@ version: 2 -project_name: sst +project_name: opencode before: hooks: - - go mod tidy - - go test ./cmd/... ./pkg/... builds: - env: - CGO_ENABLED=0 goos: - linux - darwin - main: ./cmd/sst + main: ./main.go archives: - format: tar.gz # this name template makes the OS and Arch compatible with the results of uname. name_template: >- - sst- + opencode- {{- if eq .Os "darwin" }}mac- {{- else if eq .Os "windows" }}windows- {{- else if eq .Os "linux" }}linux-{{end}} @@ -33,20 +31,20 @@ checksum: snapshot: name_template: "0.0.0-{{ .Timestamp }}" aurs: - - homepage: "https://github.com/sst/sst" + - homepage: "https://github.com/opencode-ai/opencode" description: "Deploy anything" private_key: "{{ .Env.AUR_KEY }}" - git_url: "ssh://aur@aur.archlinux.org/sst-bin.git" + git_url: "ssh://aur@aur.archlinux.org/opencode.git" license: "MIT" package: |- - install -Dm755 ./sst "${pkgdir}/usr/bin/sst" + install -Dm755 ./opencode "${pkgdir}/usr/bin/opencode" brews: - repository: - owner: sst + owner: opencode-ai name: homebrew-tap nfpms: - - maintainer: sst - description: the sst cli + - maintainer: opencode + description: terminal based agent that can build anything formats: - deb - rpm @@ -55,14 +53,6 @@ nfpms: {{- if eq .Os "darwin" }}mac {{- else }}{{ .Os }}{{ end }}-{{ .Arch }} -# scoop: -# bucket: -# owner: sst -# name: scoop-bucket -# homepage: "https://github.com/sst/ion" -# description: "sst cli" -# license: Apache 2.0 - changelog: sort: asc filters: diff --git a/scripts/release b/scripts/release new file mode 100755 index 000000000..19c0888b2 --- /dev/null +++ b/scripts/release @@ -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 diff --git a/scripts/snapshot b/scripts/snapshot new file mode 100755 index 000000000..03cad73f5 --- /dev/null +++ b/scripts/snapshot @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -e +export DOCKER_PUSH=true +./platform/scripts/build +goreleaser build --clean --snapshot --skip validate +cd sdk/js +bun run release