记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
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打开正常。







转载请标明出处【gitlab+docker安装gitlab-runner进行cicd自动化部署过程】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论