gitlab 搭配 gitlab runner 的 CI/CD 在项目中实现自动化部署、前端文件打包,也是最简单的部署方式
关于 gitlab 和 gitlab runner 的安装方式网上有很多教程这里不过多赘述
需要注意的是如果你的项目是搭配 web 服务运行,那么 runner 是的安装和启动用户最好选择和 web服务器 相同的用户或用户组
否则会遇到权限问题导致无法拉取仓库代码,当然你也可以用 shell 脚本去解决此问题
你可以在 gitlab runner 安装时指定用户
gitlab-runner install --working-directory /home/gitlab-runner --user root注册Gitlab Runner
运行下面命令开始注册
gitlab-runner register
输入你的 GitLab 实例 URL 和 注册Runner的令牌
Enter the GitLab instance URL (for example, https://gitlab.com/):
Enter a description for the runner:
在 GitLab 的 UI 项目中依次找到 设置 -> CI/CD -> Runner 即可看到配置信息
每个项目都有自己的 token 用来区分注册的 Runner 服务的项目
每个项目也可以创建多个 Runner 用来区分不同的服务器和环境
输入 Runner 的描述
Enter a description for the runner:
输入与 Runner 关联的标签
# 此标签最好和项目环境关联在后面会用到
Enter tags for the runner (comma-separated):
输入 Runner 的执行方式
# 根据你的环境选择,后续步骤用 shell 的方式演示
Enter an executor: custom, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, shell:
到此为止,一个仓库的 Runner 便注册完成
通过 gitlab-runner list 查看已经注册的 Runner 列表
通过 gitlab-runner verify --delete --name 你的Runner 删除
也可以在 GitLab 的 UI
下面通过案例实现前端自动化部署和自动打包
在项目根目录下新建文件 .gitlab-ci.yml
# CI/CD 执行流程包含三个 Stage 可根据具体情况增加流程
# build 被首先执行。如果发生错误,本次 CI 立刻失败
# test 在 build 成功执行完毕后执行。如果发生错误,本次 CI 立刻失败
# deploy 在 test 成功执行完毕后执行。如果发生错误,本次 CI 失败
tages:
- deploy
# job 名称,这里对应测试服务器
develop:
stage: deploy # 对应上面的 Stage
only: # 监听的分支,这里只监听 develop 分支 代表测试环境
- develop
script: # 执行的脚本的脚本,与注册 Gitlab Runner 流程中第 5 步选择的方式 shell 一致,下面会创建一个脚本案例
- sh /home/shell/admin-develop # 脚本的路径
tags: # Runner 关联的标签 与注册 Gitlab Runner 流程中第 4 步输入的名称一致
- runner-name
# job 名称,这里对应正式环境服务器
master:
stage: deploy
only:
- master
script:
- sh /var/shell/admin-master
tags:
- runner-name
# 更多语法可以去查找相关资料实现更复杂的功能,比如识别到提交代码打 tag 时执行 npm install 等等
在服务器创建 shell 脚本
#!/bin/bash
# 仓库地址
GIT_URL='git@119.xxx.xxx.238:project/project.git'
# 项目路径
WEB_PATH='/path/project'
# 执行脚本的用户和用户组
WEB_USER='user'
WEB_USERGROUP='user'
# 切换到项目目录下
cd $WEB_PATH
# 文件不存在,主动克隆
if [ ! -d ".git" ]; then
git clone $GIT_URL .
fi
# 切换到 develop 分支并拉取最新代码
git reset --hard origin/develop
git clean -f
git pull
git checkout develop
# 代码进行打包,打包后会生成 dist2 文件,这里根据实际项目编写对应脚本
npm run build:stage
// 先删除
rm -rf dist/*
cp -R dist2/* dist/
# 重新设置文件权限
chown -R $WEB_USER:$WEB_USERGROUP dist
exit 0
完成以上工作以后,每当提交代码时 Gitlab Runner 会去项目查找 .gitlab-ci.yml 文件,根据文件的配置执行 CI/CD 流程
可以在 GitLab 的 UI 中的 设置 -> CI/CD -> Runner 中查看项目已经注册的 Runner
每次提交代码后可以通过 GitLab 的 UI 中的 CI/CD -> 流水线 查看 Runner 的执行情况
Done,have a good day ~~