@cloudbase/manager-node 5.8.8 → 5.8.9-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.coding-ci-publish-beta.yaml +316 -0
- package/CHANGELOG.md +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
stages:
|
|
2
|
+
- stage: 安装依赖
|
|
3
|
+
tasks:
|
|
4
|
+
- task: 安装依赖
|
|
5
|
+
cmds:
|
|
6
|
+
- plugin: cmds
|
|
7
|
+
params:
|
|
8
|
+
cmds:
|
|
9
|
+
- 'bash -lc ''
|
|
10
|
+
|
|
11
|
+
set -e
|
|
12
|
+
|
|
13
|
+
export NVM_DIR="$HOME/.nvm"
|
|
14
|
+
|
|
15
|
+
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
16
|
+
|
|
17
|
+
nvm install 22.14.0
|
|
18
|
+
|
|
19
|
+
nvm use 22.14.0
|
|
20
|
+
|
|
21
|
+
node -v
|
|
22
|
+
|
|
23
|
+
npm -v
|
|
24
|
+
|
|
25
|
+
npm install
|
|
26
|
+
|
|
27
|
+
'''
|
|
28
|
+
- stage: 创建发布分支
|
|
29
|
+
tasks:
|
|
30
|
+
- task: 创建发布分支
|
|
31
|
+
cmds:
|
|
32
|
+
- plugin: cmds
|
|
33
|
+
params:
|
|
34
|
+
cmds:
|
|
35
|
+
- set -e
|
|
36
|
+
- echo "🌿 基于 ${QCI_REPO_BRANCH} 创建发布分支 release/${MANAGER_NODE_VERSION}"
|
|
37
|
+
- git config --global user.email "cloudbase-ci-bot@tencent.com"
|
|
38
|
+
- git config --global user.name "cloudbase-ci-bot"
|
|
39
|
+
- git fetch origin ${QCI_REPO_BRANCH}
|
|
40
|
+
- git checkout -B release/${MANAGER_NODE_VERSION} origin/${QCI_REPO_BRANCH}
|
|
41
|
+
- git push origin release/${MANAGER_NODE_VERSION} --force
|
|
42
|
+
- echo "✅ 发布分支 release/${MANAGER_NODE_VERSION} 已创建并推送"
|
|
43
|
+
- stage: 更新版本号
|
|
44
|
+
tasks:
|
|
45
|
+
- task: 更新版本号
|
|
46
|
+
cmds:
|
|
47
|
+
- plugin: cmds
|
|
48
|
+
params:
|
|
49
|
+
cmds:
|
|
50
|
+
- "bash -lc ' \nset -e \nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\"\
|
|
51
|
+
\ ] && . \"$NVM_DIR/nvm.sh\"\nnvm use 22.14.0\necho \"\U0001F4DD 更新 package.json\
|
|
52
|
+
\ version -> ${MANAGER_NODE_VERSION}\"\n# 配置 git \ngit config --global user.email\
|
|
53
|
+
\ \"cloudbase-ci-bot@tencent.com\"\ngit config --global user.name \"cloudbase-ci-bot\"\
|
|
54
|
+
\n# 切换到 release 分支 \ngit fetch origin release/${MANAGER_NODE_VERSION} \n\
|
|
55
|
+
git checkout release/${MANAGER_NODE_VERSION}\n# 更新版本号 \nnpm version ${MANAGER_NODE_VERSION}\
|
|
56
|
+
\ --no-git-tag-version --allow-same-version\n# 提交版本号变更 \ngit add package.json\
|
|
57
|
+
\ \ngit commit -m \"chore(release): bump version to ${MANAGER_NODE_VERSION}\"\
|
|
58
|
+
\ || echo \"版本号无变更\" \ngit push origin release/${MANAGER_NODE_VERSION} \n\
|
|
59
|
+
'"
|
|
60
|
+
- stage: Lint 检查
|
|
61
|
+
tasks:
|
|
62
|
+
- task: Lint 检查
|
|
63
|
+
cmds:
|
|
64
|
+
- plugin: cmds
|
|
65
|
+
params:
|
|
66
|
+
cmds:
|
|
67
|
+
- npm run lint
|
|
68
|
+
- stage: 构建
|
|
69
|
+
tasks:
|
|
70
|
+
- task: 构建
|
|
71
|
+
cmds:
|
|
72
|
+
- plugin: cmds
|
|
73
|
+
params:
|
|
74
|
+
cmds:
|
|
75
|
+
- npm run build
|
|
76
|
+
- stage: 产物检查
|
|
77
|
+
tasks:
|
|
78
|
+
- task: 产物检查
|
|
79
|
+
cmds:
|
|
80
|
+
- plugin: cmds
|
|
81
|
+
params:
|
|
82
|
+
cmds:
|
|
83
|
+
- '# 脚本内容默认是单行命令执行。'
|
|
84
|
+
- ' # 如需增加多行命令,请在开始和结束用"--"标识,例如:'
|
|
85
|
+
- ' # --'
|
|
86
|
+
- ' # if !(command -v unzip)'
|
|
87
|
+
- ' # then'
|
|
88
|
+
- ' # yum install -y unzip'
|
|
89
|
+
- ' # fi'
|
|
90
|
+
- ' # --'
|
|
91
|
+
- ' # sh hello.sh'
|
|
92
|
+
- '# 检查构建产物是否存在'
|
|
93
|
+
- "if [ ! -f \"lib/index.js\" ]; then\n echo \"❌ 构建产物 lib/index.js 不存在\"\n\
|
|
94
|
+
\ exit 1\nfi"
|
|
95
|
+
- "if [ ! -f \"types/index.d.ts\" ]; then\n echo \"❌ 类型声明文件 types/index.d.ts\
|
|
96
|
+
\ 不存在\"\n exit 1\nfi"
|
|
97
|
+
- '# 输出当前版本号供后续阶段使用'
|
|
98
|
+
- 'echo "当前发布版本: $(node -p "require(''./package.json'').version")"'
|
|
99
|
+
artifacts:
|
|
100
|
+
- ./lib/**
|
|
101
|
+
- prompt:
|
|
102
|
+
- msg: 人工审批
|
|
103
|
+
detail: '欢迎使用发布流水线,请确认以下信息:
|
|
104
|
+
|
|
105
|
+
构建触发人: $QCI_TRIGGER
|
|
106
|
+
|
|
107
|
+
分支: $QCI_REPO_BRANCH
|
|
108
|
+
|
|
109
|
+
提交时间:${QCI_COMMIT_DATE}
|
|
110
|
+
|
|
111
|
+
开发人员:${QCI_COMMIT_AUTHOR}
|
|
112
|
+
|
|
113
|
+
提交信息:${QCI_COMMIT_MESSAGE}
|
|
114
|
+
|
|
115
|
+
发布版本:${MANAGER_NODE_VERSION}
|
|
116
|
+
|
|
117
|
+
请确认版本号和变更内容,审批通过后将会自动发布到 npmjs.com'
|
|
118
|
+
timeout_status: 6
|
|
119
|
+
env: {}
|
|
120
|
+
to: nenneyu;lucyqzhang;royhyang
|
|
121
|
+
if: $RELEASE_TYPE = latest
|
|
122
|
+
- stage: npm 发布
|
|
123
|
+
tasks:
|
|
124
|
+
- task: npm 发布
|
|
125
|
+
cmds:
|
|
126
|
+
- plugin: cmds
|
|
127
|
+
params:
|
|
128
|
+
cmds:
|
|
129
|
+
- '# 设置 npm registry'
|
|
130
|
+
- npm config set registry https://registry.npmjs.org
|
|
131
|
+
- '# 使用凭据注入的 NPM_TOKEN 进行认证'
|
|
132
|
+
- echo "//registry.npmjs.org/:_authToken=${YARN_NPM_AUTH_TOKEN}" > ~/.npmrc
|
|
133
|
+
- npm whoami
|
|
134
|
+
- cat ~/.npmrc
|
|
135
|
+
- npm publish --access public --tag ${RELEASE_TYPE}
|
|
136
|
+
- stage: 生成并同步 changelog(docs)
|
|
137
|
+
tasks:
|
|
138
|
+
- task: 生成并同步 changelog
|
|
139
|
+
cmds:
|
|
140
|
+
- plugin: ci_changelog
|
|
141
|
+
version: 0.12.0
|
|
142
|
+
params:
|
|
143
|
+
to_ref: HEAD
|
|
144
|
+
tag_pattern: ^v(\d+\.\d+\.\d+(?:-[\w.]+)?)$
|
|
145
|
+
enable_ai_summarize: true
|
|
146
|
+
ai_model: hy3
|
|
147
|
+
bilingual: true
|
|
148
|
+
enable_docs_sync: true
|
|
149
|
+
docs_base_branch: master
|
|
150
|
+
docs_branch_prefix: docs/manager-node-changelog-v
|
|
151
|
+
commit_message: 'docs(manager-node): sync changelog for v${version}'
|
|
152
|
+
force_push: true
|
|
153
|
+
output_zh_path: $QCI_WORKSPACE/changelog_content.md
|
|
154
|
+
output_en_path: $QCI_WORKSPACE/changelog_content_en.md
|
|
155
|
+
enable_repo_changelog: false
|
|
156
|
+
repo_base_branch: master
|
|
157
|
+
repo_branch_prefix: changelog/v
|
|
158
|
+
repo_changelog_path: CHANGELOG.md
|
|
159
|
+
repo_commit_message: 'docs: update CHANGELOG.md for v${version}'
|
|
160
|
+
repo_force_push: true
|
|
161
|
+
main_package_path: package.json
|
|
162
|
+
ai_api_url: ${AI_API_URL}
|
|
163
|
+
ai_api_key: ${AI_API_KEY}
|
|
164
|
+
docs_repo: https://git.woa.com/QBase/cloudbase-docs.git
|
|
165
|
+
zh_path: docs/api-reference/manager/node/changelog.md
|
|
166
|
+
en_path: i18n/en/docusaurus-plugin-content-docs/current/api-reference/manager/node/changelog.md
|
|
167
|
+
repo_repo: https://git.woa.com/QBase/server-side-sdk/cloudbase-manager-node.git
|
|
168
|
+
- stage: 生成changelog并打tag
|
|
169
|
+
tasks:
|
|
170
|
+
- task: 生成changelog并打tag
|
|
171
|
+
cmds:
|
|
172
|
+
- plugin: cmds
|
|
173
|
+
params:
|
|
174
|
+
cmds:
|
|
175
|
+
- "bash -lc '\nset -e\nexport NVM_DIR=\"$HOME/.nvm\"\n[ -s \"$NVM_DIR/nvm.sh\"\
|
|
176
|
+
\ ] && . \"$NVM_DIR/nvm.sh\"\nnvm use 22.14.0\necho \"==========================================\"\
|
|
177
|
+
\necho \"\U0001F4E6 写回插件生成的 changelog 并打 tag v${MANAGER_NODE_VERSION}\"\
|
|
178
|
+
\necho \"==========================================\"\n# 配置 git\ngit config --global\
|
|
179
|
+
\ user.email \"cloudbase-ci-bot@tencent.com\"\ngit config --global user.name\
|
|
180
|
+
\ \"cloudbase-ci-bot\"\n# 切换到 release 分支\ngit fetch origin release/${MANAGER_NODE_VERSION}\n\
|
|
181
|
+
git checkout release/${MANAGER_NODE_VERSION}\n# 1. 写回插件生成的 changelog(仅 latest\
|
|
182
|
+
\ 版本)\necho \"\"\necho \"\U0001F4DD Step 1: 写回插件产物到 CHANGELOG.md\"\nif [ \"$RELEASE_TYPE\"\
|
|
183
|
+
\ = \"latest\" ]; then\n if [ ! -f \"${QCI_WORKSPACE}/changelog_content.md\"\
|
|
184
|
+
\ ]; then\n echo \"❌ 插件产物 ${QCI_WORKSPACE}/changelog_content.md 不存在\"\
|
|
185
|
+
\n exit 1\n fi\n cat \"${QCI_WORKSPACE}/changelog_content.md\"\
|
|
186
|
+
\ CHANGELOG.md > CHANGELOG.md.new\n mv CHANGELOG.md.new CHANGELOG.md\n\
|
|
187
|
+
\ # 2. 提交 changelog\n echo \"\"\n echo \"\U0001F4DD Step 2: 提交变更\"\
|
|
188
|
+
\n git add CHANGELOG.md\n git commit -m \"docs(release): changelog\
|
|
189
|
+
\ for v${MANAGER_NODE_VERSION}\" || echo \"没有需要提交的变更\"\nelse\n echo\
|
|
190
|
+
\ \"⏭️ RELEASE_TYPE !== latest,跳过 CHANGELOG.md 写回\"\nfi\n# 3. 打 tag\necho\
|
|
191
|
+
\ \"\"\necho \"\U0001F3F7️ Step 3: 创建 tag v${MANAGER_NODE_VERSION}\"\
|
|
192
|
+
\ngit tag -a \"v${MANAGER_NODE_VERSION}\" -m \"Release v${MANAGER_NODE_VERSION}\"\
|
|
193
|
+
\n# 4. 推送分支和 tag\necho \"\"\necho \"\U0001F680 Step 4: 推送到远程\"\ngit push\
|
|
194
|
+
\ origin release/${MANAGER_NODE_VERSION}\ngit push origin \"v${MANAGER_NODE_VERSION}\"\
|
|
195
|
+
\necho \"\"\necho \"✅ 完成!\"\necho \" - changelog.md: 已更新\"\necho \" \
|
|
196
|
+
\ - tag: v${MANAGER_NODE_VERSION}\"\n'"
|
|
197
|
+
label: 命令行脚本
|
|
198
|
+
- stage: 创建合并请求
|
|
199
|
+
tasks:
|
|
200
|
+
- task: 创建合并请求
|
|
201
|
+
cmds:
|
|
202
|
+
- plugin: cmds
|
|
203
|
+
params:
|
|
204
|
+
cmds:
|
|
205
|
+
- 'if [[ ${RELEASE_TYPE} = "latest" ]]; then
|
|
206
|
+
|
|
207
|
+
echo "🔀 合并 release/${MANAGER_NODE_VERSION} 到 master"
|
|
208
|
+
|
|
209
|
+
# 配置 git(CI 机器人身份,使用 CI 内置 git 凭据)
|
|
210
|
+
|
|
211
|
+
git config --global user.email "cloudbase-ci-bot@tencent.com"
|
|
212
|
+
|
|
213
|
+
git config --global user.name "cloudbase-ci-bot"
|
|
214
|
+
|
|
215
|
+
# 拉取最新 master 和 release 分支
|
|
216
|
+
|
|
217
|
+
git fetch origin master
|
|
218
|
+
|
|
219
|
+
git fetch origin release/${MANAGER_NODE_VERSION}
|
|
220
|
+
|
|
221
|
+
# 切到 master 并合并 release 分支
|
|
222
|
+
|
|
223
|
+
git checkout master
|
|
224
|
+
|
|
225
|
+
git merge --no-ff origin/release/${MANAGER_NODE_VERSION} -m "chore(release):
|
|
226
|
+
v${MANAGER_NODE_VERSION}"
|
|
227
|
+
|
|
228
|
+
# 直接推送到 master(不走 MR)
|
|
229
|
+
|
|
230
|
+
git push origin master
|
|
231
|
+
|
|
232
|
+
echo "✅ 已合并并推送到 master"
|
|
233
|
+
|
|
234
|
+
fi'
|
|
235
|
+
if: $RELEASE_TYPE = latest
|
|
236
|
+
- stage: 企微群通知
|
|
237
|
+
tasks:
|
|
238
|
+
- task: 企微群通知
|
|
239
|
+
cmds:
|
|
240
|
+
- plugin: message_wework_group
|
|
241
|
+
params:
|
|
242
|
+
c_type: text
|
|
243
|
+
env_variable: _WEWORK_GROUP_ID
|
|
244
|
+
mentioned: lucyqzhang;nenneyu
|
|
245
|
+
content_path: ${QCI_WORKSPACE}/changelog_content.md
|
|
246
|
+
group_id: ww150005365489083
|
|
247
|
+
if: $RELEASE_TYPE = latest
|
|
248
|
+
version: '2.0'
|
|
249
|
+
worker:
|
|
250
|
+
label: JOB_MATRIX_DEVCLOUD
|
|
251
|
+
language: node_js-20.18.0
|
|
252
|
+
tools:
|
|
253
|
+
- envs: []
|
|
254
|
+
name: ''
|
|
255
|
+
version: ''
|
|
256
|
+
is_auto_interrupt: true
|
|
257
|
+
env:
|
|
258
|
+
AI_API_KEY:
|
|
259
|
+
type: string
|
|
260
|
+
secret: vur44V/GjXswyJwv3aHGdaDKqwJRyWz+gTxPKzwIX57Q74Fhm3GML5a9yiFzkd/VsqTGvgPcRWM8995Erfj8je3c1ScSb8hTjAU89NF6pOHoPVFr5qyIsOYk35e6wS4jUXZ3Er3o/UWzWzcb28UBzHFz5X/MQtYrGKsmv4/ahaUjf1gI7tiFqJcjQPe7KLq0wbuUjiFUiBteTe+hrMiNpzBNbmyw/34TWIWr6MhLFRNqrn0gp8Dbch0T8jqf2RAl6bM42OGsUXSf42/aSHLeCL6r4FAAW2nV8QrtN4il976WzGego+pKMziofQVCq6Ol46t4tVsal074k3a47R/IgC0XYsTCdIevrAdcNyK/jhwhcaw2EOCmVBC0KZ2s3fUhzRe1IDUKEVxkRykdn5Zb2dRysI3rU+HqjGDBkbKNAD0iDLH8aoafVFi1Sl+9TxnhbG2p/gzcrDLwNR4jEarWA8Na7himZS2S7uVNuS28W1gYxkjmgnm5AqxXcB0K+SUDcRyLACzmTNLZmac4lh5z69hJk1t2mzTzXvfXGxCMuF8XXNRlQLCNs3/7xD4ibJUonL7w2F1DnUXRQN7KPdp7fIXFAG7vSao69efATK1za4KdyZOvRr4q8nwhY5uyGoMfDfmt8gRo9uDP+wnZkJNdshmf8VDNOpfzoEm4pljcI8mZo/QM/sH31ZoY2QfhLJTLquSaZhPgD1hP4OjpUCPLNNHnBfAeEJsXMiutBilbAk+xo8i/RUU+6+CGh1KOrhZQEycdx6xqdCF5WBM85jLclpMw0bWYR8aRgy2ABWCsiFqTbpO8y8IufgxZG95mp5xLs0toi6stDFG9eCJ7CFbZDKluypIxSYiv/k8vNe152KYTTrERps7Y3ox5D5ofDdZGkXULeBoC0ZGorpS2Vs2yujRnoCSN0vV8GjliosMSX0wuyh3060vFJjOOX10YP1MA9UikH3uayrTWlviI4oqZROpKryYnxRkVgcKpiyyHWidfhrRX8efh3RCIRmcBi62r5gXG2JTCYSoft92u173KadcDtY6DCdzLCSwi4jl+BEytbPNfdD/xVsqJ0mRUzxjwpfJe9DywTouytttvW541hzZrG8jblkftZIVfGfg/7wwcWHAYzmkwVyDHNOIqdBxBl270jcCT6TPb6RrW7myHfJLdxfREqmIyGd7RMKq8uf953b237HsBR36f7PoAjXH2nXZgtshwbZBAVbH6dwbwP8tsy+RYPp7JGWcCpovdh7229ZOalZFIDKwcM+MgaanMNbMuKStKeOmLskbXaDXNZ7AUfEkjFhJdXHnkSVViwooRb5dF9loC+6SAlis+kwe+t9K+supJ6OThYQ3G72crl01SJsx4qVgAmoRqw4LBEuDYHRfwC6O7UcmVgKQyRWxJHsmhRqE3f/lGuIoLXpujmWtZN4JmzodRLBv4gSRRqILIAe32jOBHvRULNY0qAOcvsDdsG3/lKDLzuRM3HkFINseIG1VMsVmfG3jnbX+OjcM1DtTxnwVcwLTCvNMjlpQEEV6P4wd2PSjXZl0b/ia1IZV6O8LMEqBQV9bPRFHcceeAXXRnCkHFkieGLAbTKNkTWsoeaphLZ9/g8XaklAbrAJTP3/9eKdYEOkEI8QOlXNskW/0VU+9XW8Hbpaz/PRetyPDvDQ6KMBurbDXxceQeeqiYslv1GjGB2/DAiyA=
|
|
261
|
+
AI_API_URL: https://test-6g2rfs50c69b7fb8.api.tcloudbasegateway.com/v1/ai/cloudbase/chat/completions
|
|
262
|
+
MANAGER_NODE_VERSION:
|
|
263
|
+
value: ''
|
|
264
|
+
type: string
|
|
265
|
+
require: true
|
|
266
|
+
RELEASE_TYPE:
|
|
267
|
+
value: beta
|
|
268
|
+
type: select
|
|
269
|
+
option: beta;latest
|
|
270
|
+
YARN_NPM_AUTH_TOKEN:
|
|
271
|
+
type: string
|
|
272
|
+
readonly: true
|
|
273
|
+
secret: xd064H3Sd1KJSDSb8UamBMLnSps8RGqvpx40l2QlN2BrirV2I5KGEYVvmJo6o9q7vt86EHlDRT5UyTIIi1golfQ3UEAYDzEUF+/nAIW93rQYeFbiHx/kZV9zuhAMeK35gM7B+IlqZoPbEIFjinnmduOUrC8BFqK+9ei23GF8POw=
|
|
274
|
+
finally:
|
|
275
|
+
success:
|
|
276
|
+
cmds:
|
|
277
|
+
- plugin: cmds
|
|
278
|
+
params:
|
|
279
|
+
cmds:
|
|
280
|
+
- "# 清理分支\nif [ \"$RELEASE_TYPE\" = \"beta\" ]; then\n echo \"\U0001F9F9\
|
|
281
|
+
\ 清理 beta 分支\"\n git checkout master \n git branch -d release/${MANAGER_NODE_VERSION}\
|
|
282
|
+
\ \n git push origin --delete release/${MANAGER_NODE_VERSION} \n echo\
|
|
283
|
+
\ \"✅ beta 分支已清理\"\nelse\n echo \"⏭️ RELEASE_TYPE !== beta,跳过分支清理\"\n\
|
|
284
|
+
fi"
|
|
285
|
+
label: 清理分支
|
|
286
|
+
- plugin: message_wework_single
|
|
287
|
+
params:
|
|
288
|
+
c_type: text
|
|
289
|
+
content: '📦 @cloudbase/manager-node v${MANAGER_NODE_VERSION} 发布成功
|
|
290
|
+
|
|
291
|
+
提交: ${QCI_COMMIT_MESSAGE}
|
|
292
|
+
|
|
293
|
+
tag: v${MANAGER_NODE_VERSION}'
|
|
294
|
+
to: nenneyu;lucyqzhang
|
|
295
|
+
failure:
|
|
296
|
+
cmds:
|
|
297
|
+
- plugin: cmds
|
|
298
|
+
params:
|
|
299
|
+
cmds:
|
|
300
|
+
- "# 清理分支\nif [ \"$RELEASE_TYPE\" = \"beta\" ]; then\n echo \"\U0001F9F9\
|
|
301
|
+
\ 清理 beta 分支\"\n git checkout master \n git branch -d release/${MANAGER_NODE_VERSION}\
|
|
302
|
+
\ \n git push origin --delete release/${MANAGER_NODE_VERSION} \n echo\
|
|
303
|
+
\ \"✅ beta 分支已清理\"\nelse\n echo \"⏭️ RELEASE_TYPE !== beta,跳过分支清理\"\n\
|
|
304
|
+
fi"
|
|
305
|
+
label: 清理分支
|
|
306
|
+
- plugin: message_wework_single
|
|
307
|
+
params:
|
|
308
|
+
c_type: text
|
|
309
|
+
content: '📦 @cloudbase/manager-node v${MANAGER_NODE_VERSION} 发布失败
|
|
310
|
+
|
|
311
|
+
提交: ${QCI_COMMIT_MESSAGE}
|
|
312
|
+
|
|
313
|
+
tag: v${MANAGER_NODE_VERSION}'
|
|
314
|
+
to: lucyqzhang;nenneyu
|
|
315
|
+
maximum_builds: 1
|
|
316
|
+
tapd_workspace_id: '20422223'
|
package/CHANGELOG.md
CHANGED