这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战
前言
之前我们项目有很多个分支,然后要根据不同的分支进行合并,然后打包。有时候项目急,就会出现代码打包部署了,但是忘了把代码提交到gitlab;导致别的同事又打包的时候,由于gitlab上你之前打包的代码没有提交,导致同事没有把你的代码被打包进去的情况。
这种场景很常见,你总不能时时刻刻都记得先提交到gitlab,再合并代码,最后再打包部署的流程。
这应该怎么解决?
没错,引入我们今天要讲的内容,gitlab配置自动化部署。
配置自动化部署后,正常我们就不用管打包部署的环节,我们只需要把代码提交的gitlab上,gitlab自动会帮我们打包。
gitlab配置自动化部署
在配置之前,我们先了解几个概念:
- gitlab设置自动化部署是通过它的CI(持续集成)/CD(持续交付)选项。
- gitlab项目根目录下需要新建文件
.gitlab-ci.yml,这个文件是自动化部署的配置文件,通过这个配置文件我们可以实现安装依赖/打包/部署等操作。 - 对于
.gitlab-ci.yml配置的任务,gitlab会通知gitlab-runner这个软件来执行构建该任务。 - Pipeline和job,每一次git提交对应的是一个Pipeline,job 组成 Pipeline,
.gitlab-ci.yml里面配有多少个任务(stages),就代表着一个Pipeline里面有多少个job
过程
下载gitlab-runner
我是window版本,新建一个文件夹(我命名为gitlab-runner),下载gitlab-runner安装包,选择你的兼容版本(64位还是32位),把安装包下载到该目录。
在该目录下起一个powerShell/或者cmd(注意是要管理员模式,不然没有权限)
安装和注册gitlab-runner
powerShell运行.\gitlab-runner.exe install, cmd运行gitlab-runner install(下面我以powerShell的命令做演示)
安装好会生成一个config.toml,gitlab-runner的配置会存在该文件中。
然后执行.\gitlab-runner.exe register注册
按照步骤一一填写:
- Enter the GitLab instance URL (for example, gitlab.com/): 输入你的gitlab地址
- Enter the registration token: 这个token是你gitlab项目的token,点击
setteings-> CI/CD ->Runners settings,看到Specific Runners,下面有个标红的token。 - Enter a description for the runner: runner的描述
- Enter tags for the runner (comma-separated): 这里我跳过,不填,如果你填了这个,
.gitlab-ci.yml里面的任务也要配这个tag,不然不会执行。 - Enter an executor: custom, ssh, virtualbox, docker-ssh+machine, kubernetes, docker+machine, docker, docker-windows, docker-ssh, parallels, shell: 选择一个执行器,这里我选的是
shell,就是gitlab-runner在哪个执行器上运行(执行器你也可以选择docker等等) - 注册成功
然后你可以看到在setteings-> CI/CD ->Runners settings->Specific Runners下面有一个注册的runner的展示
运行
.\gitlab-runner.exe start 启动
其它指令:
.\gitlab-runner.exe stop暂停.\gitlab-runner.exe statusrunner的状态
提交
我的.gitlab-ci.yml文件配置(注意该文件要在项目根目录下):
# before_script: # 因为每次stage都是独立的,需要重新安装依赖,这里选择要把依赖缓存起来
cache:
key: ${CI_COMMIT_REF_SLUG}
untracked: true
paths:
- node_modules/ # 缓存node_modules
before_script:
- yarn install --frozen-lockfile --prefer-offline
stages:
- install
- build
install:
stage: install
tags:
- test
script:
- yarn
install:
stage: build
tags:
- test
script:
- yarn run build
然后我们在gitlab测试
提交代码后,自动开启构建,如下
运行中
构建成功
遇到的问题
config.toml文件生成后,runner的配置都会存在里面,因为我执行器选择的shell,但是它生成的shell是"pwsh",所以要改成powershell
总结
以上就是总结的gitlab配置自动化部署,大家可以按照我这个教程来部署,有问题欢迎评论沟通。
感谢你们的阅读。