-
Notifications
You must be signed in to change notification settings - Fork 7
135 lines (133 loc) · 5.77 KB
/
publish-sdk.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
name: Publish SDK & CLI
on:
push:
branches:
- main
- release
- v1
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
persist-credentials: false
ref: ${{ github.event.inputs.commit }}
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
- name: Set NPM variables
id: npm
run: |
BRANCH=${GITHUB_REF##*/}
DIST_TAG=rc
if [[ $BRANCH == "release" ]]; then
DIST_TAG=latest
fi
echo "dist_tag=${DIST_TAG}" >> $GITHUB_OUTPUT
pnpm config list
- name: Install
run: pnpm install
- name: Build SDK & CLI
run: pnpm --filter "./packages/*..." build
- name: SDK Semantic Release
id: semantic
uses: cycjimmy/semantic-release-action@v4
with:
semantic_version: 24.0.0
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: SDK Release Summary
if: steps.semantic.outputs.new_release_published == 'true'
run: |
echo "### New SDK version v${{ steps.semantic.outputs.new_release_version }} cut" >> $GITHUB_STEP_SUMMARY
echo "commit: ${GITHUB_SHA}, branch/tag: ${GITHUB_REF}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.semantic.outputs.new_release_notes }}" >> $GITHUB_STEP_SUMMARY
env:
GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: Clean runtime dependencies
run: |
# Dependencies are bundled.
pnpm json -I -f package.json -e "this.dependencies={}"
working-directory: packages/runtime
- name: SDK NPM Publish
if: steps.semantic.outputs.new_release_published == 'true'
run: |
./scripts/update-version.sh @sentio/sdk... ${{ steps.semantic.outputs.new_release_version }}
pnpm publish --filter "@sentio/sdk..." --no-git-checks --tag ${{ steps.npm.outputs.dist_tag }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: report error
if: steps.semantic.outputs.new_release_published == 'false'
run: |
echo "### No SDK version cut" >> $GITHUB_STEP_SUMMARY
echo "Check Semantic Release output for details"
- name: Clean peerDependencies & templates' node_modules
run: |
# Dependencies are bundled.
pnpm json -I -f package.json -e "this.dependencies=Object.fromEntries(Object.entries(this.dependencies).filter((entry) => ['@sentio/graph-cli', 'dotenv', 'tsup', 'tsx'].includes(entry['0'])))"
# PeerDeps only for development with pnpm
# templates' node_modules shouldn't go into registry
pnpm json -I -f package.json -e "this.peerDependencies={}"
rm -rf templates/*/node_modules
working-directory: packages/cli
- name: CLI Semantic Release
id: semantic_cli
uses: cycjimmy/semantic-release-action@v4
with:
working_directory: packages/cli
semantic_version: 24
env:
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: CLI Release Summary
if: steps.semantic_cli.outputs.new_release_published == 'true'
run: |
echo "### New CLI version v${{ steps.semantic_cli.outputs.new_release_version }} cut" >> $GITHUB_STEP_SUMMARY
echo "commit: ${GITHUB_SHA}, branch/tag: ${GITHUB_REF}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.semantic_cli.outputs.new_release_notes }}" >> $GITHUB_STEP_SUMMARY
env:
GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}
- name: CLI NPM Publish
if: steps.semantic_cli.outputs.new_release_published == 'true'
run: |
./scripts/update-version.sh sentio-cli... ${{ steps.semantic_cli.outputs.new_release_version }}
pnpm publish --filter "sentio-cli..." --no-git-checks --tag ${{ steps.npm.outputs.dist_tag }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: report error
if: steps.semantic_cli.outputs.new_release_published == 'false'
run: |
echo "### No CLI version cut" >> $GITHUB_STEP_SUMMARY
echo "Check Semantic Release output for details"
- name: Prepare sdk-bundle
if: steps.semantic.outputs.new_release_published == 'true'
run: |
pnpm build:bundle
pnpm json -I -f package.json -e "this.dependencies=Object.fromEntries(Object.entries(this.dependencies).filter((entry) => ['@sentio/runtime'].includes(entry['0'])))"
pnpm json -I -f package.json -e 'this.name="@sentio/sdk-bundle"; this.scripts={}; this.peerDependencies={}; this.devDependencies={}; this.files = ["{lib,assets}"]'
working-directory: packages/sdk
- name: sdk-bundle NPM Publish
if: steps.semantic.outputs.new_release_published == 'true'
run: |
pnpm publish --filter "@sentio/sdk-bundle" --no-git-checks --tag ${{ steps.npm.outputs.dist_tag }} --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: action NPM Publish
if: steps.semantic.outputs.new_release_published == 'true'
run: |
./scripts/update-version.sh @sentio/action ${{ steps.semantic.outputs.new_release_version }}
pnpm publish --filter "@sentio/action" --no-git-checks --tag ${{ steps.npm.outputs.dist_tag }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Clean Github Release for RC
if: ${{ contains(steps.semantic.outputs.new_release_version, '-rc.') == false }}
run: ./scripts/clean-rc-releases.sh
env:
GH_TOKEN: ${{ secrets.ACCESS_TOKEN }}