虚拟化容器,大数据,DBA,中间件,监控。

gitlab+docker安装gitlab-runner进行cicd自动化部署过程

27 12月
作者:admin|分类:系统运维

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打开正常。






浏览541 评论0
返回
目录
返回
首页
k8s 部署jenkins实现动态slave ansible批量修改用户密码