Merge pull request #2650 from code-yeongyu/fix/openagent-platform-publish
fix(release): add oh-my-openagent dual-publish to platform and main workflows
This commit is contained in:
@@ -59,20 +59,39 @@ jobs:
|
|||||||
- name: Check if already published
|
- name: Check if already published
|
||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
PKG_NAME="oh-my-opencode-${{ matrix.platform }}"
|
|
||||||
VERSION="${{ inputs.version }}"
|
VERSION="${{ inputs.version }}"
|
||||||
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/${PKG_NAME}/${VERSION}")
|
|
||||||
# Convert platform name for output (replace - with _)
|
|
||||||
PLATFORM_KEY="${{ matrix.platform }}"
|
PLATFORM_KEY="${{ matrix.platform }}"
|
||||||
PLATFORM_KEY="${PLATFORM_KEY//-/_}"
|
PLATFORM_KEY="${PLATFORM_KEY//-/_}"
|
||||||
if [ "$STATUS" = "200" ]; then
|
|
||||||
|
# Check oh-my-opencode
|
||||||
|
OC_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/oh-my-opencode-${{ matrix.platform }}/${VERSION}")
|
||||||
|
# Check oh-my-openagent
|
||||||
|
OA_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/oh-my-openagent-${{ matrix.platform }}/${VERSION}")
|
||||||
|
|
||||||
|
echo "oh-my-opencode-${{ matrix.platform }}@${VERSION}: ${OC_STATUS}"
|
||||||
|
echo "oh-my-openagent-${{ matrix.platform }}@${VERSION}: ${OA_STATUS}"
|
||||||
|
|
||||||
|
if [ "$OC_STATUS" = "200" ]; then
|
||||||
|
echo "skip_opencode=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "✓ oh-my-opencode-${{ matrix.platform }}@${VERSION} already published"
|
||||||
|
else
|
||||||
|
echo "skip_opencode=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "→ oh-my-opencode-${{ matrix.platform }}@${VERSION} needs publishing"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$OA_STATUS" = "200" ]; then
|
||||||
|
echo "skip_openagent=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "✓ oh-my-openagent-${{ matrix.platform }}@${VERSION} already published"
|
||||||
|
else
|
||||||
|
echo "skip_openagent=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "→ oh-my-openagent-${{ matrix.platform }}@${VERSION} needs publishing"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Skip build only if BOTH are already published
|
||||||
|
if [ "$OC_STATUS" = "200" ] && [ "$OA_STATUS" = "200" ]; then
|
||||||
echo "skip=true" >> $GITHUB_OUTPUT
|
echo "skip=true" >> $GITHUB_OUTPUT
|
||||||
echo "skip_${PLATFORM_KEY}=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "✓ ${PKG_NAME}@${VERSION} already published"
|
|
||||||
else
|
else
|
||||||
echo "skip=false" >> $GITHUB_OUTPUT
|
echo "skip=false" >> $GITHUB_OUTPUT
|
||||||
echo "skip_${PLATFORM_KEY}=false" >> $GITHUB_OUTPUT
|
|
||||||
echo "→ ${PKG_NAME}@${VERSION} needs publishing"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Update version in package.json
|
- name: Update version in package.json
|
||||||
@@ -207,23 +226,38 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
platform: [darwin-arm64, darwin-x64, darwin-x64-baseline, linux-x64, linux-x64-baseline, linux-arm64, linux-x64-musl, linux-x64-musl-baseline, linux-arm64-musl, windows-x64, windows-x64-baseline]
|
platform: [darwin-arm64, darwin-x64, darwin-x64-baseline, linux-x64, linux-x64-baseline, linux-arm64, linux-x64-musl, linux-x64-musl-baseline, linux-arm64-musl, windows-x64, windows-x64-baseline]
|
||||||
steps:
|
steps:
|
||||||
- name: Check if oh-my-opencode already published
|
- name: Check if already published
|
||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
PKG_NAME="oh-my-opencode-${{ matrix.platform }}"
|
|
||||||
VERSION="${{ inputs.version }}"
|
VERSION="${{ inputs.version }}"
|
||||||
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/${PKG_NAME}/${VERSION}")
|
|
||||||
if [ "$STATUS" = "200" ]; then
|
OC_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/oh-my-opencode-${{ matrix.platform }}/${VERSION}")
|
||||||
echo "skip=true" >> $GITHUB_OUTPUT
|
OA_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/oh-my-openagent-${{ matrix.platform }}/${VERSION}")
|
||||||
echo "✓ ${PKG_NAME}@${VERSION} already published, skipping"
|
|
||||||
|
if [ "$OC_STATUS" = "200" ]; then
|
||||||
|
echo "skip_opencode=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "✓ oh-my-opencode-${{ matrix.platform }}@${VERSION} already published"
|
||||||
else
|
else
|
||||||
echo "skip=false" >> $GITHUB_OUTPUT
|
echo "skip_opencode=false" >> $GITHUB_OUTPUT
|
||||||
echo "→ ${PKG_NAME}@${VERSION} will be published"
|
fi
|
||||||
|
|
||||||
|
if [ "$OA_STATUS" = "200" ]; then
|
||||||
|
echo "skip_openagent=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "✓ oh-my-openagent-${{ matrix.platform }}@${VERSION} already published"
|
||||||
|
else
|
||||||
|
echo "skip_openagent=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Need artifact if either package needs publishing
|
||||||
|
if [ "$OC_STATUS" = "200" ] && [ "$OA_STATUS" = "200" ]; then
|
||||||
|
echo "skip_all=true" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "skip_all=false" >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Download artifact
|
- name: Download artifact
|
||||||
id: download
|
id: download
|
||||||
if: steps.check.outputs.skip != 'true'
|
if: steps.check.outputs.skip_all != 'true'
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
@@ -231,7 +265,7 @@ jobs:
|
|||||||
path: .
|
path: .
|
||||||
|
|
||||||
- name: Extract artifact
|
- name: Extract artifact
|
||||||
if: steps.check.outputs.skip != 'true' && steps.download.outcome == 'success'
|
if: steps.check.outputs.skip_all != 'true' && steps.download.outcome == 'success'
|
||||||
run: |
|
run: |
|
||||||
PLATFORM="${{ matrix.platform }}"
|
PLATFORM="${{ matrix.platform }}"
|
||||||
mkdir -p packages/${PLATFORM}
|
mkdir -p packages/${PLATFORM}
|
||||||
@@ -247,13 +281,13 @@ jobs:
|
|||||||
ls -la packages/${PLATFORM}/bin/
|
ls -la packages/${PLATFORM}/bin/
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
if: steps.check.outputs.skip != 'true' && steps.download.outcome == 'success'
|
if: steps.check.outputs.skip_all != 'true' && steps.download.outcome == 'success'
|
||||||
with:
|
with:
|
||||||
node-version: "24"
|
node-version: "24"
|
||||||
registry-url: "https://registry.npmjs.org"
|
registry-url: "https://registry.npmjs.org"
|
||||||
|
|
||||||
- name: Publish ${{ matrix.platform }}
|
- name: Publish oh-my-opencode-${{ matrix.platform }}
|
||||||
if: steps.check.outputs.skip != 'true' && steps.download.outcome == 'success'
|
if: steps.check.outputs.skip_opencode != 'true' && steps.download.outcome == 'success'
|
||||||
run: |
|
run: |
|
||||||
cd packages/${{ matrix.platform }}
|
cd packages/${{ matrix.platform }}
|
||||||
|
|
||||||
@@ -267,3 +301,25 @@ jobs:
|
|||||||
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||||
NPM_CONFIG_PROVENANCE: true
|
NPM_CONFIG_PROVENANCE: true
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|
||||||
|
- name: Publish oh-my-openagent-${{ matrix.platform }}
|
||||||
|
if: steps.check.outputs.skip_openagent != 'true' && steps.download.outcome == 'success'
|
||||||
|
run: |
|
||||||
|
cd packages/${{ matrix.platform }}
|
||||||
|
|
||||||
|
# Rename package for oh-my-openagent
|
||||||
|
jq --arg name "oh-my-openagent-${{ matrix.platform }}" \
|
||||||
|
--arg desc "Platform-specific binary for oh-my-openagent (${{ matrix.platform }})" \
|
||||||
|
'.name = $name | .description = $desc | .bin = {"oh-my-openagent": (.bin | to_entries | .[0].value)}' \
|
||||||
|
package.json > tmp.json && mv tmp.json package.json
|
||||||
|
|
||||||
|
TAG_ARG=""
|
||||||
|
if [ -n "${{ inputs.dist_tag }}" ]; then
|
||||||
|
TAG_ARG="--tag ${{ inputs.dist_tag }}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
npm publish --access public --provenance $TAG_ARG
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||||
|
NPM_CONFIG_PROVENANCE: true
|
||||||
|
timeout-minutes: 15
|
||||||
|
|||||||
@@ -216,6 +216,49 @@ jobs:
|
|||||||
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||||
NPM_CONFIG_PROVENANCE: true
|
NPM_CONFIG_PROVENANCE: true
|
||||||
|
|
||||||
|
- name: Check if oh-my-openagent already published
|
||||||
|
id: check-openagent
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.version.outputs.version }}"
|
||||||
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/oh-my-openagent/${VERSION}")
|
||||||
|
if [ "$STATUS" = "200" ]; then
|
||||||
|
echo "skip=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "✓ oh-my-openagent@${VERSION} already published"
|
||||||
|
else
|
||||||
|
echo "skip=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Publish oh-my-openagent
|
||||||
|
if: steps.check-openagent.outputs.skip != 'true'
|
||||||
|
run: |
|
||||||
|
VERSION="${{ steps.version.outputs.version }}"
|
||||||
|
|
||||||
|
# Update package name to oh-my-openagent
|
||||||
|
jq '.name = "oh-my-openagent"' package.json > tmp.json && mv tmp.json package.json
|
||||||
|
|
||||||
|
# Update optionalDependencies to use oh-my-openagent naming
|
||||||
|
jq --arg v "$VERSION" '
|
||||||
|
.optionalDependencies = (
|
||||||
|
.optionalDependencies | to_entries |
|
||||||
|
map(.key = (.key | sub("^oh-my-opencode-"; "oh-my-openagent-")) | .value = $v) |
|
||||||
|
from_entries
|
||||||
|
)
|
||||||
|
' package.json > tmp.json && mv tmp.json package.json
|
||||||
|
|
||||||
|
TAG_ARG=""
|
||||||
|
if [ -n "${{ steps.version.outputs.dist_tag }}" ]; then
|
||||||
|
TAG_ARG="--tag ${{ steps.version.outputs.dist_tag }}"
|
||||||
|
fi
|
||||||
|
npm publish --access public --provenance $TAG_ARG || echo "::warning::oh-my-openagent publish failed"
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||||
|
NPM_CONFIG_PROVENANCE: true
|
||||||
|
|
||||||
|
- name: Restore package.json
|
||||||
|
if: steps.check-openagent.outputs.skip != 'true'
|
||||||
|
run: |
|
||||||
|
git checkout -- package.json
|
||||||
|
|
||||||
trigger-platform:
|
trigger-platform:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: publish-main
|
needs: publish-main
|
||||||
|
|||||||
Reference in New Issue
Block a user