name: Publish npm packages
on:
push:
tags:
- '**[0-9]+.[0-9]+.[0-9]+*'
permissions:
contents: read
id-token: write
jobs:
publish-npm-matrix:
runs-on: ubuntu-22.04
env:
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Wait for release artifacts
run: |
TAG="${GITHUB_REF_NAME}"
mkdir -p dist/release-assets
for attempt in $(seq 1 30); do
if gh release download "$TAG" \
--repo "${{ github.repository }}" \
--pattern "codex-threadripper-aarch64-apple-darwin.tar.xz" \
--pattern "codex-threadripper-aarch64-unknown-linux-gnu.tar.xz" \
--pattern "codex-threadripper-x86_64-apple-darwin.tar.xz" \
--pattern "codex-threadripper-x86_64-unknown-linux-gnu.tar.xz" \
--pattern "codex-threadripper-x86_64-pc-windows-msvc.zip" \
--dir dist/release-assets; then
exit 0
fi
rm -rf dist/release-assets/*
sleep 10
done
echo "Release artifacts for $TAG did not appear in time"
exit 1
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 24
registry-url: https://registry.npmjs.org
- name: Build npm package matrix
run: |
TAG="${GITHUB_REF_NAME}"
VERSION="${TAG#v}"
node scripts/build-npm-matrix.mjs \
--version "$VERSION" \
--release-tag "$TAG" \
--artifacts-dir dist/release-assets \
--output-dir dist/npm-packages
- name: Publish platform packages
run: |
jq -r '.platformPackages[].dir' dist/npm-packages/manifest.json | while read -r dir; do
npm publish "$dir" --access public --provenance
done
- name: Publish root package
run: |
ROOT_DIR="$(jq -r '.rootPackage.dir' dist/npm-packages/manifest.json)"
npm publish "$ROOT_DIR" --access public --provenance