2022-07-13 22:15:00 by wst
服务部署经过一天的探索,在gitlab上自动部署项目终于搞定。具体情况如下:
类似上一篇文章中,提交完代码后自动构建、自动部署。在gitlab中是通过runner实现的,runner可以理解为Jenkins中的agent。
前提: 已经安装runner, 且执行器类型为docker;
1. 安装并注册runner, 具体见官方文档;
2. 创建一个vue项目,如:vue_todolist;
3. 配置CI。点击项目首页的“CI/CD configuration”按钮;
4. 把如下内容粘贴进去:
image: node:12.16.1
cache:
paths:
- node_modules/
stages:
- deploy
publish_package:
stage: deploy
before_script:
# Create the SSH directory and give it the right permissions
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
tags:
- t
script:
- npm install
- npm run build
after_script:
- scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r $SOURCE_DIR $USER@$HOST:$TARGET_DIR
此时提交会报错,(右键点击打开新页面操作)需要设置下项目变量才能正确执行。
5. 设置项目变量。
1)设置之前,先找个地方生成一对公钥/私钥,找个Linux机器,ssh-keygen命令即可生成,记得不要设置密码。
2)在项目首页的左边,点击“settings->CI/CD->Variables->Expand”,把相应变量填进去,如图所示:
6. 在第四步页面的下面点击"Commit changes", 提交这个配置文件(.gitlab-ci.yml)。
7. 点击页面左边的“CI/CD->Jobs”,可查看任务运行状况。
有几个难点:
1. 怎么通过ssh的方式(认证部分尤其要注意)把代码拷贝到目标服务器;
2. 怎么安装合适的runner,并构建项目代码;
如有问题,欢迎探讨v:wst_ccut。