chore: dual publish #34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Publish to NPM & Brew | ||
on: | ||
workflow_call: | ||
inputs: | ||
release-tag: | ||
type: string | ||
required: true | ||
is-prerelease: | ||
type: string | ||
required: true | ||
jobs: | ||
publish: | ||
name: Publish All the Things | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write | ||
id-token: write | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Install Node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: lts/* | ||
registry-url: "https://registry.npmjs.org" | ||
- name: Verify `jq` is installed | ||
run: | | ||
if ! jq --version 2>/dev/null; then | ||
echo "jq not installed, required for extracting package names." | ||
exit 1 | ||
fi | ||
- name: Generate Packages (deprecated) | ||
id: generate-packages | ||
run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
RELEASE_TAG: ${{ inputs.release-tag }} | ||
PRERELEASE: ${{ inputs.is-prerelease }} | ||
- name: Generate Packages | ||
id: generate-packages | ||
run: node packages/@postgres-language-server/cli/scripts/generate-packages.mjs | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
RELEASE_TAG: ${{ inputs.release-tag }} | ||
PRERELEASE: ${{ inputs.is-prerelease }} | ||
- name: Publish npm packages as nightly (deprecated) | ||
if: inputs.is-prerelease == 'true' | ||
run: | | ||
for package in packages/@postgrestools/*; do | ||
npm publish "$package" --tag nightly --access public --provenance | ||
done | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # | ||
- name: Publish npm packages as nightly (deprecated) | ||
if: inputs.is-prerelease == 'true' | ||
run: | | ||
for package in packages/@postgres-language-server/*; do | ||
npm publish "$package" --tag nightly --access public --provenance | ||
done | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # | ||
- name: Publish npm packages as latest (deprecated) | ||
if: inputs.is-prerelease != 'true' | ||
run: | | ||
for package in packages/@postgrestools/*; do | ||
version="${{ inputs.release-tag }}" | ||
npm_package_name=$(jq -r ".name" "$package/package.json") | ||
if npm view "$npm_package_name@$version" version 2>/dev/null; then | ||
echo "Package $npm_package_name@$version already exists, skipping..." | ||
else | ||
echo "Publishing $npm_package_name@$version..." | ||
npm publish "$package" --tag latest --access public --provenance | ||
fi | ||
done | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||
- name: Publish npm packages as latest | ||
if: inputs.is-prerelease != 'true' | ||
run: | | ||
for package in packages/@postgres-language-server/*; do | ||
version="${{ inputs.release-tag }}" | ||
npm_package_name=$(jq -r ".name" "$package/package.json") | ||
if npm view "$npm_package_name@$version" version 2>/dev/null; then | ||
echo "Package $npm_package_name@$version already exists, skipping..." | ||
else | ||
echo "Publishing $npm_package_name@$version..." | ||
npm publish "$package" --tag latest --access public --provenance | ||
fi | ||
done | ||
env: | ||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |