文章目录
1. Gitee Go 介绍
官网:https://gitee.com/features/gitee_go
Gitee Go
是 Gitee
推出的 CI/CD
服务,通过自定义构建流程,可以实现从代码仓库到构建部署自动化。目前已支持 Maven
、Gradle
、npm
、Python
、Ant
、PHP
、Golang
等工具和语言的持续构建与集成能力。
实现思路:
Gitee Go
提供了将项目持续集成并部署到指定主机环境中的能力,目前支持在任意可连通公网的 Linux 主机上进行部署,推荐主机环境使用 Ubuntu/CentOS
。
持续部署的流程:
在持续部署过程中,通过持续集成编译并打包的制品工程,结合用户定义具体的部署脚本,可以轻松将用户的代码部署到指定的机器上。
目前正在公测,可以领500分钟的免费时长,体验时长为一个月。
2. 开通Gitee Go
首先,新建一个项目gitee-go
:
新建仓库后,在DevOps
点击Gitee Go
:
然后点击同意并开通Gitee Go
的按钮:
3. 提交一个vue项目到gitee仓库
因为没有代码,所以不能新建流水线,所以我们准备一个vue项目推到远程仓库:
# 创建一个空的文件夹 gitee-go
cd gitee-go
# 创建vue项目
vue create gitee-go
# 初始化git
cd gitee-go
git init
# 提交到仓库
git add .
git commit -m "init"
git remote add origin https://gitee.com/xxxxxxx/gitee-go.git # 你自己远程的仓库地址
git push origin master
4. 制品库配置
制品库主要是用于存放和管理 CI 过程产生的构建物,包括但不仅限于:二进制构建物、测试报告、其他数据报告等。 在制品库中,允许存在多个制品,单个制品支持历史版本下载和自定义标记版本号。
先随便写个,制品库标识
需要唯一标识:
5. 添加部署机器
目前只支持Linux
主机,推荐Ubuntu
/ CentOS
。
点击用户头像 > 设置 > 左侧【安全设置】> 计算资源管理,点击【创建主机组】:
添加完成后:
点击右边的【主机管理】,然后点击【添加新主机】:
将上面的命令复制,然后打开准备好的云主机,在SSH命令中粘贴以上命令,然后执行,执行完后会自动显示,然后勾选并点击【添加主机】按钮。
然后返回上一步,点击【关联仓库】:
6. 流水线配置示例
在完成 制品库
、主机组
和主机
后,此处以构建一个 npm
程序为例,在仓库中创建流水线。
回到Gitee Go
的界面,点击【新建流水线】按钮:
流水线文件是放在项目根目录/.workflow/ci.yml
文件里的,文件名自己取,先来小试牛刀:
name: gitee-go-vue
displayName: 'vue-Gitee GO示例'
triggers:
push:
- matchType: PRECISE
branch: master
commitMessage: ''
stages:
- stage:
name: npm-build-stage
displayName: 'npm Stage'
failFast: false
steps:
- step: npmbuild@1
name: npm-build
displayName: 'npm Step'
inputs:
nodeVersion: 10.1
goals: "node -v && npm -v"
提交后,会自动触发一次构建:
点击构建详情可以看到日志输出,打印了node
和npm
版本号:
7. 云服务器安装Nginx服务
若已经安装了web服务器可以跳过此步骤。
# 将nginx放到yum repro库中
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 查看nginx信息
yum info nginx
# 使用yum安装ngnix
yum install nginx
# 启动nginx
service nginx start
# 查看nginx版本
nginx -v
# 访问nginx
curl -i localhost
访问服务器 IP 看到下面信息说明安装成功!
修改nginx配置文件:
vi /etc/nginx/conf.d/default.conf
# 重载服务
/usr/sbin/nginx -s reload
从配置文件中可以看到部署的文件在哪个目录,后面写流水线部署时需要用到。
注意云服务器的80端口需要放行。
8. 配置vue项目部署流水线
打开本地编辑器,修改ci.yml
文件:
name: gitee-go-vue
displayName: 'vue-Gitee GO示例'
triggers:
push:
- matchType: PRECISE
branch: master
commitMessage: ''
stages:
- stage:
name: vue-build-stage
displayName: 'Build Stage'
failFast: false
steps:
- step: npmbuild@1
name: vue-build
displayName: 'Build Step'
inputs:
nodeVersion: 14.15
goals: |
node -v
npm -v
npm install
npm run build
uploadArtifact: true # 构建完成后是否将构建物作为制品产出
uploadArtifactOptions:
artifactPath: './dist'
artifactRepository: 'gitee-go'
artifactName: 'product'
- step: agent-deploy@1
name: deploy
dependsOn: vue-build
displayName: '部署发布'
inputs:
hostGroupID: 'ali-server'
minComplicating: 0
maxComplicating: 2
deployArtifact:
- name: 'vue-prod'
source: build@vue-build-stage/vue-build
artifactRepository: 'compiled-artifact'
artifactName: 'server'
target: /usr/share/nginx/data
isForce: true
script: |
rm -rf /usr/share/nginx/html/*
tar -zxf /usr/share/nginx/data/product.tar.gz -C /usr/share/nginx/html
cd /usr/share/nginx/html/dist
mv * ../
cd ..
rm -rf dist
rm -rf product.tar.gz
rm -rf /usr/share/nginx/data/product.tar.gz
接下来就提交代码到gitee就行了,等待自动打包 > 构建 > 部署:
打开浏览器看看效果:
![](https://i-blog.csdnimg.cn/blog_migrate/259137613d91394dd3ef0160bbe552de.png)