gitlab+docker安装gitlab-runner进行cicd自动化部署过程
gitlab+docker安装gitlab-runner进行cicd自动化部署过程
1,先到gitlab官方注册账号,并创建一个仓库 demo,这里就导入ruoyi-cloud中的ruoyi-ui前端项目代码。
2,在到阿里云上买一个国外的ECS主机。
3,在ecs主机上面安装apache,docker.
1),下面是ecs主机操作记录:
sudo yum install -y yum-utils #配置docker的yum地址 sudo yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 启动&开机启动docker systemctl enable docker --now # docker加速配置 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF sudo systemctl daemon-reload sudo systemctl restart docker
3,docker中安装gitlab-runner,并创建/opt/runner作为挂载目录
[root@gitlab-runner ~]# mkdir /opt/runner
[root@gitlab-runner ~]# docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/runner:/etc/gitlab-runner \
-v /home/gitlab-runner:/home/gitlab-runner
gitlab/gitlab-runner:latest
4,进入gitlab-runner容器中运行 gitlab-runner register命令,配置demo仓库的runner令牌,具体不再说了。
[root@gitlab-runner ~]#
[root@gitlab-runner ~]# docker exec -it gitlab-runner /bin/bash
root@5ff550f4ebb6:/#
root@5ff550f4ebb6:/# gitlab-runner register
Runtime platform arch=amd64 os=linux pid=26 revision=e91107dd version=14.5.2
Running in system-mode.
Enter the GitLab instance URL (for example, https://gitlab.com/):
https://gitlab.com/
Enter the registration token:
Jq4eZ_93ZWprQtf5994x
Enter a description for the runner:
[5ff550f4ebb6]: us-runner
Enter tags for the runner (comma-separated):
ci,dev,build,deploy
Registering runner... succeeded runner=Jq4eZ_93
Enter an executor: docker, docker+machine, shell, ssh, virtualbox, docker-ssh+machine, kubernetes, custom, docker-ssh, parallels:
docker
Enter the default Docker image (for example, ruby:2.6):
node:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
到runner中查看,效果如下,正常注册。
5,在gitlab-run的主机安装apache软件并启动,/var/www/html/目录为以后部署nodejs项目使用。
[root@gitlab-runner runner]# yum install -y epel-release
[root@gitlab-runner runner]# yum install -y httpd
[root@gitlab-runner runner]# systemctl start httpd
6,在demo仓库中的cicd中添加 .gitlab-ci.yml文件,内容如下:
说明:这里使用两个部署,第一个是打包,第二个是rsync同步打包的文件到apache的目录下。
image: cubedhost/centos7-node:node16
masterbuild:
tags:
- ci
stage: build
script:
- npm install
- npm run build:prod
only:
- master
artifacts:
expire_in: 1 week
paths:
- dist
deploy_master:
image: sebble/deploy
tags:
- ci
stage: deploy
script:
- mkdir -p ~/.ssh
- echo "$PROD_DEPLOY_SSH" >> ~/.ssh/id_dsa
- chmod 600 ~/.ssh/id_dsa
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- rsync -rav dist/ "$CUSTOM_USERNAME"@"$CUSTOM_IP":/var/www/html
only:
- master
7,需要在部署环境的主机中将使用ssh-keygen生成公私钥,然后到demo项目的cicd配置中,
添加相关的变量信息,另外,还要将生产主机的公钥放到登陆的账号 .ssh/authorized_keys中,也就是说实现部署容器与生产主机的免密登陆。
最后才能执行流水线。
也就是说,我这里相当于是作到了 生产主机本机与生产主机本机 产生的免密登陆,
当然,你也可以在别的主机上面生成密钥,再放到变量与生产主机中,也是一样的效果。
CUSTOM_USERNAME :生产主机的用户名
CUSTOM_IP: 生产主机的IP
PROD_DEPLOY_SSH: 生产主机的私钥。
两个作业,顺利完成。
9,最后检查生产主机的web目录与URL,测试文件正常生成,web打开正常。
目录 返回
首页