背景
aliyun OSS 上部署了静态网站。之前更新项目需要手动构建,并使用桌面工具将新的包传到 aliyun OSS 上。并在 CDN 服务中,手动添加域名更新。
一、gitlab 代码提交时 Jenkins 自动构建
首先在 Jenkins 上安装插件:GitLab Plugin
,GitLab Hook
Jenkins job 的设置中,在构建触发器下添加Build when a change is pushed to GitLab.
。
选中高级,在最下方点击 Generate
生成 token。
到 GitLab 的项目中,在设置中找到集成。
在这里设置 webhook,URL 中输入 Jenkins 步骤中最上方的 URL,token 中输入刚刚生成的 token,去掉SSL证书验证的勾选。
gitlab 中添加 webhook生成 webhook 并保存 Jenkins 中的设置。然后点击 Test -> Push events
进行测试。出现 HTTP 200
证明设置全部正确。
二、生成静态文件
因为我们在 gitlab 中存放的是 react 代码,所以需要生成静态代码后,才能上传使用。
在 Jenkins 构建中,添加执行shell:
# 构建
cd ${WORKSPACE}/invite/
npm install
npm run build
cd ${WORKSPACE}/lucky_money/
npm install
npm run build
三、上传文件到 OSS
这是使用到 aliyun 官方提供的 oss 命令行工具。
可以使用 help 查看帮助。
在使用之前,先要使用命令./ossutil config
,创建配置文件,将accessKey
等信息填入。
使用cp
命令上传文件。
/opt/aliyun_oss/ossutil cp invite/build/ oss://***-invite --config-file /root/.ossutilconfig -r -u
/opt/aliyun_oss/ossutil cp lucky_money/build/ oss://***lucky --config-file /root/.ossutilconfig -r -u
-r
上传文件夹
-u
增量更新
四、更新 CDN
官方文档:https://help.aliyun.com/document_detail/27149.html
使用官方提供的示例。
将示例文件放到 Jenkins 服务器上,在aliyun.ini文件中配置好accesskeyid
和accesskeysecret
后,使用以下命令更新 CDN。
python cdn.py Action=RefreshObjectCaches ObjectType=Directory ObjectPath=http://lucky.****.com/
python cdn.py Action=RefreshObjectCaches ObjectType=Directory ObjectPath=http://invite.****.com/
网友评论