Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: publish to npm only if needed #432

Merged
merged 11 commits into from
Oct 2, 2023
32 changes: 2 additions & 30 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,7 @@ jobs:
run: npm run build --workspaces
- name: Set up npm
run: printf '%s\n' '//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}' registry=https://registry.npmjs.org/ always-auth=true >> .npmrc
- name: Publish utils
run: npm publish --workspace=packages/utils --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish Ledger
run: npm publish --workspace=packages/ledger --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish NNS-proto
run: npm publish --workspace=packages/nns-proto --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish NNS
run: npm publish --workspace=packages/nns --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish SNS
run: npm publish --workspace=packages/sns --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish CMC
run: npm publish --workspace=packages/cmc --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish ckBTC
run: npm publish --workspace=packages/ckbtc --provenance --access public
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- name: Publish ic-management
run: npm publish --workspace=packages/ic-management --provenance --access public
- name: Publish
run: ./scripts/publish-npm.sh
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
25 changes: 25 additions & 0 deletions scripts/publish-npm.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash

# Reference: NPM RRFC --if-needed https://github.com/npm/rfcs/issues/466

function publish_npm() {
local lib=$1

LOCAL_SHASUM=$(npm pack -w packages/"$lib" --json | jq '.[] | .shasum' | sed -r 's/^"|"$//g')

NPM_TARBALL=$(npm show @dfinity/"$lib" dist.tarball)
NPM_SHASUM=$(curl -s "$NPM_TARBALL" 2>&1 | shasum | cut -f1 -d' ')

if [ "$LOCAL_SHASUM" == "$NPM_SHASUM" ]; then
echo "No changes in @dfinity/$lib need to be published to NPM."
else
npm publish --workspace=packages/"$lib" --provenance
fi
}

# Tips: libs use by other libs first
LIBS=utils,ledger,nns-proto,nns,sns,cmc,ckbtc,ic-management

for lib in $(echo $LIBS | sed "s/,/ /g"); do
publish_npm "$lib"
done
Loading