目录
概要
由于日常开发过程中,需要经常打包dist包后,发给后端部署,造成不便。而CI,Continuous Integration,即为持续集成。即在代码构建过程中持续地进行代码的集成、构建。
Gitlab-CI实现步骤
First:安装gitlab-runner
可以参考官网
https://docs.gitlab.com/runner/install/
Second: 本机上注册一个Runner
打开Gitlab官网,你目前存在的项目,新建个也行。找到Gitlab的Settings的CI/CD,
点击后会看见Runner,右侧有个Expand展开按钮,点击。
图1
记住这里的2跟3提供的url跟token,对应下面的(2)跟(3)。
(1)执行
gitlab-runner register
(2)指定git的URL
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
https://gitlab.com
(3)指定gitlab-runner的token
Please enter the gitlab-ci token for this runner
xxx
(4)关联git和runner的tag(随便取)
Please enter the gitlab-ci tags for this runner (comma separated):
my-tag,another-tag
(5)给tag的描述(随便取)
Please enter the gitlab-ci description for this runner
[hostame] my-runner
(6)选择runner的执行环境
Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
shell (Mac可以在本机器上运行)
建好之后,在图1的下方就能看见有了个Runner,注意看是不是绿色点,不是绿色点说明还没成功Running,这时候需要开启gitlab-runner
服务:
gitlab-runner run // 运行成功的话,对应settings->CI/CD会出现一个绿点
Third: 编写.gitlab-ci.yml,然后push上去,在gitlab
项目页面中打开CI/CD
,即可看到Pipelines,即流水线,可以查看Status状态。
下面为笔者写的简陋版yml:
stages:
- deploy
deploy_to_test:
stage: deploy
script:
- yarn
- rm -rf dist/
- yarn build
- ls -l -t ./dist/
- rsync -avz ./dist/ root@xxx.xx.xx.xxx:/dist
前面都是基本的前端打包命令。最后一个是利用rsync远程命令去连接到阿里云服务器(xxx.xx.xx.xxx),把打包后的CI产物(dist包),传送到阿里云服务器。
上面的步骤已经实现了CI。但如果是通过Docker来实现CI的话,还需要第四步。
Four: Mac下Docker的安装及运行
(1)安装Docker命令
brew install --cask docker
(2)拉取Gitlab镜像Image
docker pull drud/gitlab-ce:v0.29.1
(3)创建Container
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab drud/gitlab-ce:v0.29.1
这行命令是用于在 Docker 容器中运行 GitLab 社区版(Community Edition)的镜像,并将容器的端口映射到主机上的对应端口。下面是对每个选项和参数的解释:
docker run
: 运行 Docker 容器的命令。-d
: 在后台(守护进程)模式下运行容器。-p 8443:443
: 将容器的 443 端口映射到主机的 8443 端口。这意味着通过访问主机的 8443 端口,可以访问到 GitLab 容器中的 HTTPS 服务。-p 8090:80
: 将容器的 80 端口映射到主机的 8090 端口。这意味着通过访问主机的 8090 端口,可以访问到 GitLab 容器中的 HTTP 服务。-p 8022:22
: 将容器的 22 端口映射到主机的 8022 端口。这意味着通过访问主机的 8022 端口,可以访问到 GitLab 容器中的 SSH 服务。--restart always
: 在容器退出时自动重新启动容器。这意味着无论是出于故障恢复还是主机重启,都会自动重新启动 GitLab 容器。--name gitlab
: 将容器命名为 "gitlab"。这样,在运行其他命令时可以使用容器名称来引用它。drud/gitlab-ce:v0.29.1
: 使用 "drud/gitlab-ce" 镜像的 "v0.29.1" 版本作为 GitLab 容器的基础镜像。
总体来说,这条命令会在 Docker 中启动一个名为 "gitlab" 的容器,其中运行了 GitLab 社区版的镜像,并将 HTTPS、HTTP 和 SSH 服务分别映射到主机的 8443、8090 和 8022 端口。容器在退出时会自动重新启动。
运行成功后,在浏览器上输入http://localhost:8090/ 就能看见GitLab的官网。
编写yml如下:
variables:
TEST_NAME: "tips"
OUT_PORT: "8081"
IN_PORT: "8081"
stages:
- deploy
deploy_to_test:
stage: deploy
before_script:
- if [ $(docker ps -aq --filter name=$CI_PROJECT_NAME) ]; then docker rm -f $CI_PROJECT_NAME;fi
script:
- docker build -f Dockerfile -t $TEST_NAME:latest .
- docker run -d -p $OUT_PORT:$IN_PORT --name $TEST_NAME $TEST_NAME:latest
在Gitlab上看见CI跑成功,点击Containers界面,会发现新生成了test容器,点击Port那里对应的链接,打开后能访问到项目的页面,即为成功,perfect.