From 288c977596ed3f6eaf2149fdcabffa415c8e5e50 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Mon, 22 Sep 2025 01:45:23 -0400 Subject: [PATCH] ci: snapshot builds --- .github/workflows/snapshot.yml | 50 +++++++++++++++++++++++++++++ packages/opencode/script/publish.ts | 22 +++++++------ 2 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/snapshot.yml diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml new file mode 100644 index 00000000..0cc6faf7 --- /dev/null +++ b/.github/workflows/snapshot.yml @@ -0,0 +1,50 @@ +name: snapshot + +on: + push: + branches: + - dev + - opentui + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + publish: + 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.24.0" + cache: true + cache-dependency-path: go.sum + + - uses: oven-sh/setup-bun@v2 + with: + bun-version: 1.2.21 + + - name: Cache ~/.bun + id: cache-bun + uses: actions/cache@v3 + with: + path: ~/.bun + key: ${{ runner.os }}-bun-1-2-21-${{ hashFiles('bun.lock') }} + restore-keys: | + ${{ runner.os }}-bun-1-2-21- + + - name: Install dependencies + run: bun install + + - name: Publish + run: | + ./packages/opencode/script/publish.ts + env: + OPENCODE_SNAPSHOT: true + OPENCODE_TAG: ${{ github.ref_name }} + GITHUB_TOKEN: ${{ secrets.SST_GITHUB_TOKEN }} + NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/packages/opencode/script/publish.ts b/packages/opencode/script/publish.ts index a0c3e139..996ec46e 100755 --- a/packages/opencode/script/publish.ts +++ b/packages/opencode/script/publish.ts @@ -5,10 +5,14 @@ import { $ } from "bun" import pkg from "../package.json" -const dry = process.env["OPENCODE_DRY"] === "true" -const version = process.env["OPENCODE_VERSION"]! const snapshot = process.env["OPENCODE_SNAPSHOT"] === "true" -const npmTag = snapshot ? "snapshot" : "latest" +let version = process.env["OPENCODE_VERSION"] +const tag = process.env["OPENCODE_TAG"] ?? (snapshot ? "snapshot" : "latest") +if (!version && snapshot) { + version = `0.0.0-${tag}-${new Date().toISOString().slice(0, 16).replace(/[-:T]/g, "")}` + process.env["OPENCODE_VERSION"] = version +} +if (!version) throw new Error("OPENCODE_VERSION is required") console.log(`publishing ${version}`) @@ -41,12 +45,10 @@ await Bun.file(`./dist/${pkg.name}/package.json`).write( 2, ), ) -if (!dry) { - for (const [name] of Object.entries(binaries)) { - await $`cd dist/${name} && chmod 777 -R . && bun publish --access public --tag ${npmTag}` - } - await $`cd ./dist/${pkg.name} && bun publish --access public --tag ${npmTag}` +for (const [name] of Object.entries(binaries)) { + await $`cd dist/${name} && chmod 777 -R . && bun publish --access public --tag ${tag}` } +await $`cd ./dist/${pkg.name} && bun publish --access public --tag ${tag}` if (!snapshot) { for (const key of Object.keys(binaries)) { @@ -142,7 +144,7 @@ if (!snapshot) { await $`cd ./dist/aur-${pkg} && makepkg --printsrcinfo > .SRCINFO` await $`cd ./dist/aur-${pkg} && git add PKGBUILD .SRCINFO` await $`cd ./dist/aur-${pkg} && git commit -m "Update to v${version}"` - if (!dry) await $`cd ./dist/aur-${pkg} && git push` + await $`cd ./dist/aur-${pkg} && git push` } // Homebrew formula @@ -201,5 +203,5 @@ if (!snapshot) { await Bun.file("./dist/homebrew-tap/opencode.rb").write(homebrewFormula) await $`cd ./dist/homebrew-tap && git add opencode.rb` await $`cd ./dist/homebrew-tap && git commit -m "Update to v${version}"` - if (!dry) await $`cd ./dist/homebrew-tap && git push` + await $`cd ./dist/homebrew-tap && git push` }