1+ name : Publish Sim Studio CLI
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+ paths :
8+ - ' packages/simstudio/**'
9+ - ' .github/workflows/publish-cli.yml'
10+
11+ jobs :
12+ publish :
13+ runs-on : ubuntu-latest
14+ permissions :
15+ contents : write
16+ packages : write
17+ steps :
18+ - name : Checkout repository
19+ uses : actions/checkout@v4
20+ with :
21+ fetch-depth : 0
22+
23+ - name : Setup Node.js
24+ uses : actions/setup-node@v4
25+ with :
26+ node-version : ' 20'
27+ registry-url : ' https://registry.npmjs.org'
28+ cache : ' npm'
29+ cache-dependency-path : ' packages/simstudio/package-lock.json'
30+
31+ - name : Install dependencies
32+ working-directory : packages/simstudio
33+ run : npm ci
34+
35+ - name : Build package
36+ working-directory : packages/simstudio
37+ run : npm run build
38+
39+ - name : Get version
40+ working-directory : packages/simstudio
41+ id : get_version
42+ run : echo "version=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT
43+
44+ - name : Check version update
45+ working-directory : packages/simstudio
46+ run : |
47+ if ! git diff ${{ github.event.before }} ${{ github.sha }} packages/simstudio/package.json | grep -q '"version":'; then
48+ echo "::error::Version not updated in package.json"
49+ exit 1
50+ fi
51+
52+ - name : Run tests
53+ working-directory : packages/simstudio
54+ run : npm test
55+
56+ - name : Check for changes
57+ working-directory : packages/simstudio
58+ id : check_changes
59+ run : |
60+ if git diff --quiet ${{ github.event.before }} ${{ github.sha }} packages/simstudio/; then
61+ echo "changes=false" >> $GITHUB_OUTPUT
62+ else
63+ echo "changes=true" >> $GITHUB_OUTPUT
64+ fi
65+
66+ - name : Publish to npm
67+ if : steps.check_changes.outputs.changes == 'true'
68+ working-directory : packages/simstudio
69+ run : |
70+ if ! npm publish; then
71+ echo "::error::Failed to publish package"
72+ exit 1
73+ fi
74+ env :
75+ NODE_AUTH_TOKEN : ${{ secrets.NPM_TOKEN }}
76+
77+ - name : Create Git tag
78+ if : steps.check_changes.outputs.changes == 'true'
79+ run : |
80+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
81+ git config --local user.name "github-actions[bot]"
82+ git tag -a "v${{ steps.get_version.outputs.version }}" -m "Release v${{ steps.get_version.outputs.version }}"
83+ git push origin "v${{ steps.get_version.outputs.version }}"
84+
85+ - name : Create GitHub Release
86+ if : steps.check_changes.outputs.changes == 'true'
87+ uses : softprops/action-gh-release@v1
88+ with :
89+ name : " v${{ steps.get_version.outputs.version }}"
90+ tag_name : " v${{ steps.get_version.outputs.version }}"
91+ generate_release_notes : true
92+ env :
93+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments