在发布流程中我们经常需要查看当前的release 是否包含了别人的修改,并且我们还需要通知QA当前的这次发布是否可以上线,如果每次都手动去查看code 的commit changes ,然后找到相应的 code owner,效率太低并且有时候会遗漏,所以我们需要在Pipeline 中增加自动创建发布的文档,其中包括当前这次发布中包含的所有的待上线的commit 和相应的owner,并通知到Slack channel 中通知QA和相应的开发。
那么如何自动生成发布文档呢,首先我们发现gitlab自己携带了wiki功能,所以我们需要先在设置中enable wiki
,
Wiki Enable 了之后,需要在pipeline中去创建并生成,Gitlab 本身提供了一系列的API去上传相应的内容到wiki中,
当Wiki生成完之后,我们需要在Slack channel中通知大家,那么这时候需要用到Slack 的webhook url, 至于如何得到 slack 的webhook url,可以自行google下。
当解决思路都串起来之后,我们就需要实现相应的流程在pipeline中,
1,设置如下相应的变量在gitlab ci yaml 配置中
1 2 3
| RELEASE_NOTE_PATH: '{your project wiki url}/-/wikis/' //gitlab 项目wiki的url SLACK_CHANNEL_NAME: 'slack channel name' // 需要通知的channel名字 SLACK_WEBHOOK_URL: ''
|
2, 设置创建发布的文档job stage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| stages: - ... - create-release-note - ...
// 实现create-release-note stage create-release-note: stage: create-release-note when: manual allow_failure: true script: - apk add git bash - export NOTIFICATION_HEADER="Release {Your prject name} " // 标题可以自定义 - export NOTIFICATION_MSG="- Release Note:\n${RELEASE_NOTE_PATH}" // 消息可以自定义 - file_url="{Your prject name}-release_${CI_COMMIT_TAG}" // 生成的文档的url - LAST_VERSION=$(curl -k 'Here need get your latest released version.json' | grep 'version' | sed 's/[^0-9.]*//g') - ./scripts/update-release-note-to-wiki.sh "v${LAST_VERSION}" "Your prject name" "Your project approver" // 上传到wiki // 发送消息到slack channel - ./scripts/slack-notify.sh "${SLACK_WEBHOOK_URL}" "${SLACK_CHANNEL_NAME}" "$CI_PIPELINE_URL" "$NOTIFICATION_HEADER$CI_COMMIT_TAG:\n$NOTIFICATION_MSG$file_url"
|
3, 发送消息到slack channel,我们可以使用shell脚本来实现,代码如下:
4, 如何上传到gitlab wiki,我们也可以使用shell 脚本来实现,代码如下:
wiki content 可以自定义