1. 想用CI先要装好gitlab还有gitlab-runner! 宝塔安装gitlab,从宝塔软件商店进行安装
2. 进入gitlab创建项目并添加.gitlab-ci.yml文件,具体配置有很多参照官网,具体配置在下面,请耐心先看完流程
3. 宝塔面板打开终端
4.宝塔从安装gitlab8.8.5到安装gitlab-ci-multi-runner
依次输入一下命令
选择yum源
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
安装对应版本(这里版本不对会有很多坑,以下亲测,不然注册会报错403、405,有点慢等一下)
yum install gitlab-ci-multi-runner-1.10.7-1
成功后注册
gitlab-ci-multi-runner register
按照提示输入图片上的url和授权码,描述随意,tags暂时输入master,下一项填Xshell
完成后运行 注意不是start 而是run,之后添加.gitlab-ci.yml
文件后push master分支可查看最后连接时间,如果是几秒内有连接就是成功的
sudo gitlab-runner run
5.下一步 添加.gitlab-ci.yml
到项目根目录(与package.json同级)
CI思路:Gitlab会运行这个文件,然后从项目仓库拉取已追踪的代码,默认存入
/root/bulids/...
,之后免登录到自己的部署服务器,把/root/bulids/...
下文件拷贝到指定目录下,然后cd到指定目录下 运行npm i
,npm bulid
,如有需要就用pm2进行管理即可
.gitlab-ci.yml
文件配置,大家可以拿去用,根据实际情况微调,记得点个赞哇。
stages: #定义步骤列表类型,从上往下执行
- build
- release
build: #job名字
stage: build #和stages对应的名字
image: #i.harbor.xxxx.com/public/node:10-alpine-node-sass #使用的镜像,如果不写,就是注册runner默认镜像
script:
- npm -v ## 随意写一些命令
artifacts: #构建完成后,构建的产物(目录或者文件),丢给后面的步骤
untracked: false # git没有追踪就不交付 用于优化node_modules
paths:
- .
expire_in: 30 mins #保留1天内产物
tags: #选择runner的tag
- master
only: #构建选择,如下,只选择develop的分支构建
- master
release:
stage: release
before_script: #执行前执行
- eval $(ssh-agent -s)
- echo "$SAIAN_SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
#- ssh-keyscan x.x.x.x >> ~/.ssh/known_hosts
#- chmod 644 ~/.ssh/known_hosts
- git config --global user.email "XX@qq.com"
- git config --global user.name "root"
image: i.harbor.xxxx.net/public/ssh-client:rsync
script:
- ssh -p 22088 -o StrictHostKeyChecking=no root@x.x.x.x -- "pm2 del saian-web|true"
- rsync -azP --exclude=".gitignore" --exclude=".git" ./ /www/wwwroot/saian/
- ssh -p 22088 -o StrictHostKeyChecking=no root@x.x.x.x -- "ls -al /www/wwwroot/saian/"
- ssh -p 22088 -o StrictHostKeyChecking=no root@x.x.x.x -- "cd /www/wwwroot/saian/ && npm install && npm run build"
- ssh -p 22088 -o StrictHostKeyChecking=no root@x.x.x.x -- "cd /www/wwwroot/saian/ && pm2 --watch --name saian-web start /www/wwwroot/saian/node_modules/nuxt/bin/nuxt.js -- start"
tags:
- master
only:
- master
when: on_success #只有当上一个job成功才执行,默认就是on_success
修改成自己的服务器IP,项目名,pm2名字
6.ssh免密码登录
如果不配置ssh免密码登录,gitlab ci只能帮你在服务器上拉最新分支代码、构建打包,还差最后一步,上传部署到测试/生产服务器,我们服务器是Linux系统,以下以Linux为例:
大家看到 SAIAN_SSH_PRIVATE_KEY
变量。 这里的 SAIAN_SSH_PRIVATE_KEY
变量需要在项目的仓库上新增,目的是为了安全性考虑,不用暴露服务器的私钥, 那怎么新增呢?
可以看一下我写的博客,很详细解决Xshell 上ssh免密码登录问题,推荐先用Xshell尝试成功后再尝试这个CI !!!
这种就是免密码登录成功的情况。
最后祝大家顺利,点个赞吧。