mirror of
https://github.com/different-ai/openwork
synced 2026-04-26 01:25:10 +02:00
chore(build): default OpenCode to latest
Stop pinning OpenCode in package metadata and resolve the latest release during sidecar bundling/runtime, while still allowing OPENCODE_VERSION to pin for reproducible builds.
This commit is contained in:
28
.github/workflows/build-desktop.yml
vendored
28
.github/workflows/build-desktop.yml
vendored
@@ -60,23 +60,35 @@ jobs:
|
||||
- name: Download OpenCode sidecar
|
||||
shell: bash
|
||||
env:
|
||||
OPENCODE_VERSION: 1.1.36
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
version="${OPENCODE_VERSION}"
|
||||
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
||||
latest=$(curl -fsSL \
|
||||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
version="${OPENCODE_VERSION:-}"
|
||||
if [ -z "$version" ] || [ "$version" = "latest" ]; then
|
||||
latest=""
|
||||
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
||||
latest=$(curl -fsSL \
|
||||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
else
|
||||
latest=$(curl -fsSL \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
fi
|
||||
if [ -n "$latest" ]; then
|
||||
version="$latest"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
echo "Unable to resolve OpenCode version (set OPENCODE_VERSION to pin)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
opencode_asset="opencode-linux-x64-baseline.tar.gz"
|
||||
url="https://github.com/anomalyco/opencode/releases/download/v${version}/${opencode_asset}"
|
||||
tmp_dir="$RUNNER_TEMP/opencode"
|
||||
|
||||
29
.github/workflows/ci-tests.yml
vendored
29
.github/workflows/ci-tests.yml
vendored
@@ -35,23 +35,36 @@ jobs:
|
||||
- name: Install OpenCode CLI
|
||||
shell: bash
|
||||
env:
|
||||
OPENCODE_VERSION: 1.1.36
|
||||
GITHUB_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
set -euo pipefail
|
||||
version="${OPENCODE_VERSION}"
|
||||
|
||||
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
||||
latest=$(curl -fsSL \
|
||||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
version="${OPENCODE_VERSION:-}"
|
||||
|
||||
if [ -z "$version" ] || [ "$version" = "latest" ]; then
|
||||
latest=""
|
||||
if [ -n "${GITHUB_TOKEN:-}" ]; then
|
||||
latest=$(curl -fsSL \
|
||||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
else
|
||||
latest=$(curl -fsSL \
|
||||
-H "X-GitHub-Api-Version: 2022-11-28" \
|
||||
https://api.github.com/repos/anomalyco/opencode/releases/latest \
|
||||
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
|
||||
fi
|
||||
if [ -n "$latest" ]; then
|
||||
version="$latest"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$version" ]; then
|
||||
echo "Unable to resolve OpenCode version (set OPENCODE_VERSION to pin)." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
curl -fsSL https://opencode.ai/install | bash -s -- --version "$version"
|
||||
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
|
||||
|
||||
|
||||
44
.github/workflows/prerelease.yml
vendored
44
.github/workflows/prerelease.yml
vendored
@@ -157,7 +157,49 @@ jobs:
|
||||
id: opencode-version
|
||||
shell: bash
|
||||
run: |
|
||||
node -e "const pkg=require('./packages/desktop/package.json'); if (!pkg.opencodeVersion) { throw new Error('opencodeVersion missing'); } console.log('version=' + pkg.opencodeVersion);" >> "$GITHUB_OUTPUT"
|
||||
node <<'NODE' >> "$GITHUB_OUTPUT"
|
||||
const fs = require('fs');
|
||||
|
||||
async function resolveLatest() {
|
||||
const res = await fetch('https://api.github.com/repos/anomalyco/opencode/releases/latest', {
|
||||
headers: {
|
||||
'Accept': 'application/vnd.github+json',
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
});
|
||||
if (!res.ok) throw new Error(`Failed to resolve latest OpenCode version (HTTP ${res.status})`);
|
||||
const data = await res.json();
|
||||
const tag = (typeof data.tag_name === 'string' ? data.tag_name : '').trim();
|
||||
let v = tag.startsWith('v') ? tag.slice(1) : tag;
|
||||
v = v.trim();
|
||||
if (!v) throw new Error('OpenCode latest release tag missing');
|
||||
return v;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const pkg = JSON.parse(fs.readFileSync('./packages/desktop/package.json', 'utf8'));
|
||||
const configuredRaw = (process.env.OPENCODE_VERSION || pkg.opencodeVersion || '').toString().trim();
|
||||
if (configuredRaw && configuredRaw.toLowerCase() !== 'latest') {
|
||||
const normalized = configuredRaw.startsWith('v') ? configuredRaw.slice(1) : configuredRaw;
|
||||
const resolved = normalized.trim();
|
||||
if (process.env.GITHUB_ENV) {
|
||||
fs.appendFileSync(process.env.GITHUB_ENV, `OPENCODE_VERSION=${resolved}\n`);
|
||||
}
|
||||
console.log('version=' + resolved);
|
||||
return;
|
||||
}
|
||||
const latest = await resolveLatest();
|
||||
if (process.env.GITHUB_ENV) {
|
||||
fs.appendFileSync(process.env.GITHUB_ENV, `OPENCODE_VERSION=${latest}\n`);
|
||||
}
|
||||
console.log('version=' + latest);
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
NODE
|
||||
|
||||
- name: Download OpenCode sidecar
|
||||
shell: bash
|
||||
|
||||
44
.github/workflows/release-macos-aarch64.yml
vendored
44
.github/workflows/release-macos-aarch64.yml
vendored
@@ -320,7 +320,49 @@ jobs:
|
||||
id: opencode-version
|
||||
shell: bash
|
||||
run: |
|
||||
node -e "const pkg=require('./packages/desktop/package.json'); if (!pkg.opencodeVersion) { throw new Error('opencodeVersion missing'); } console.log('version=' + pkg.opencodeVersion);" >> "$GITHUB_OUTPUT"
|
||||
node <<'NODE' >> "$GITHUB_OUTPUT"
|
||||
const fs = require('fs');
|
||||
|
||||
async function resolveLatest() {
|
||||
const res = await fetch('https://api.github.com/repos/anomalyco/opencode/releases/latest', {
|
||||
headers: {
|
||||
'Accept': 'application/vnd.github+json',
|
||||
'X-GitHub-Api-Version': '2022-11-28',
|
||||
},
|
||||
});
|
||||
if (!res.ok) throw new Error(`Failed to resolve latest OpenCode version (HTTP ${res.status})`);
|
||||
const data = await res.json();
|
||||
const tag = (typeof data.tag_name === 'string' ? data.tag_name : '').trim();
|
||||
let v = tag.startsWith('v') ? tag.slice(1) : tag;
|
||||
v = v.trim();
|
||||
if (!v) throw new Error('OpenCode latest release tag missing');
|
||||
return v;
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const pkg = JSON.parse(fs.readFileSync('./packages/desktop/package.json', 'utf8'));
|
||||
const configuredRaw = (process.env.OPENCODE_VERSION || pkg.opencodeVersion || '').toString().trim();
|
||||
if (configuredRaw && configuredRaw.toLowerCase() !== 'latest') {
|
||||
const normalized = configuredRaw.startsWith('v') ? configuredRaw.slice(1) : configuredRaw;
|
||||
const resolved = normalized.trim();
|
||||
if (process.env.GITHUB_ENV) {
|
||||
fs.appendFileSync(process.env.GITHUB_ENV, `OPENCODE_VERSION=${resolved}\n`);
|
||||
}
|
||||
console.log('version=' + resolved);
|
||||
return;
|
||||
}
|
||||
const latest = await resolveLatest();
|
||||
if (process.env.GITHUB_ENV) {
|
||||
fs.appendFileSync(process.env.GITHUB_ENV, `OPENCODE_VERSION=${latest}\n`);
|
||||
}
|
||||
console.log('version=' + latest);
|
||||
}
|
||||
|
||||
main().catch((err) => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
NODE
|
||||
|
||||
- name: Download OpenCode sidecar
|
||||
shell: bash
|
||||
|
||||
Reference in New Issue
Block a user