众客华禹

 找回密码
立即注册

QQ登录

只需一步,快速开始

查看: 429|回复: 0

gitlab+docker+jenkins搭建CI/CD

[复制链接]

70

主题

70

帖子

378

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
378
发表于 2022-2-18 16:53:54 | 显示全部楼层 |阅读模式
一、引言

  项目部署:

    1、研发提交代码至gitlab仓库

    2、通过mvn将项目打包成jar包

    3、通过Dockerfile将jar包,打包成新的镜像

    4、通过Docker-Compose去运行容器

二、CI介绍

  CI(continuous intergration)持续集成

  持续集成:编写代码时,完成了一个功能后,立即提交代码到Git仓库中,将项目重新的构建并测试。

  优点:

    快速发现错误,防止代码偏离主分支

三、环境准备

     虚拟机,至少8GB内存:172.19.169.65

     1、初始化虚拟机
  1. # 关闭防火墙
  2. systemctl stop firewalld
  3. systemctl disable firewalld

  4. # 关闭selinux
  5. sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
  6. setenforce 0  # 临时

  7. #安装依赖
  8. yum -y install yum-utils device-mapper-persisten-data lvm2
  9. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  10. #或者
  11. # 配置 docker-ce 的 yum 源
  12. cat << EOF > /etc/yum.repos.d/docker-ce.repo
  13. [docker-ce-stable]
  14. name=Docker CE Stable - $basearch
  15. baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
  16. enabled=1
  17. gpgcheck=1
  18. gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
  19. EOF

  20. yum makacache fast

  21. # 安装 docker(20.10.11-ce+) 和 docker-compose(1.18.0+)
  22. sudo yum install -y docker-ce docker-ce-cli containerd.io bash-completion docker-compose

  23. # 配置 docker 自动提示
  24. cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/

  25. # 配置开机启动
  26. systemctl enable --now docker

  27. # 查看安装版本
  28. docker --version
  29. Docker version 20.10.11, build 370c289
  30. docker-compose --version
  31. docker-compose version 1.18.0, build 8dd22a9
复制代码
     2、使用docker-compose.yml文件去安装gitlab
  1. vim docker-compose.yml
  2. version: '3.1'
  3. services:
  4. gitlad:
  5.   image: 'gitlab/gitlab-ce'
  6.   container_name: "gitlab"
  7.   restart: always
  8.   privileged: true
  9.   hostname: 'gitlab'
  10.   environment:
  11.    TZ: 'Asia/Shanghai'
  12.    GITLAB_OMNIBUS_CONFIG: |
  13.     external_url 'http://172.24.174.20:20080'
  14.     gitlab_rails['time_zone'] = 'Asia/Shanghai'
  15.     gitlab_rails['smtp_enable'] = true
  16.     gitlab_rails['gitlab_shell_ssh_port'] = 20022
  17.     gitlab_rails['initial_root_password'] = 'Admin@123456'
  18.   ports:
  19.    - '20080:20080'
  20.    - '20443:443'
  21.    - '20022:20022'
  22.   volumes:
  23.    - /data/docker/docker_gitlab/config:/etc/gitlab
  24.    - /data/docker/docker_gitlab/data:/var/opt/gitlab
  25.    - /data/docker/docker_gitlab/logs:/var/log/gitlab

  26. docker-compose up -d     docker构建gitlab服务(下载和运行是比较慢的)
复制代码
  
     登陆gitlab,账号:root/Admin@123456     

    gitlab.png
     3、安装gitlab-runner     首先安装安装apache-maven、jdk,等会儿会把相应目录映射到gitlab-runner容器中
  1. wget http://49.233.184.186/fdb/soft1/jdk-8u251-linux-x64.tar.gz?cr=2508131169&r=0.31045177099010024
  2. cp jdk-8u251-linux-x64.tar.gz /usr/local/
  3. tar -zxvf jdk-8u251-linux-x64.tar.gz
  4. rm -rf jdk-8u251-linux-x64.tar.gz

  5. wget https://raw.githubusercontent.com/topsale/resources/master/maven/apache-maven-3.5.3-bin.tar.gz
  6. cp apache-maven-3.5.3-bin.tar.gz /usr/local/
  7. tar -zxvf apache-maven-3.5.3-bin.tar.gz
  8. rm -fr apache-maven-3.5.3-bin.tar.gz
复制代码
      配置jdk和mvn环境变量
  1. vim /etc/profile
  2. JAVA_HOME=/usr/local/jdk1.8.0_251
  3. MAVEN_HOME=/usr/local/apache-maven-3.5.3
  4. PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:/usr/local/bin/
复制代码
        安装gitlab-runner容器,并把宿主机的jdk、mvn安装目录映射到容器
  1. vim docker-compose.yml
  2. version: '3.1'
  3. services:
  4. runner:
  5.   image: 'gitlab/gitlab-runner:v11.4.2'
  6.   container_name: gitlab-runner
  7.   restart: always
  8.   volumes:
  9.    - /opt/docker_gitlab-runner/config:/etc/gitlab-runner
  10.    - /var/run/docker.sock:/var/run/docker.sock
  11.    - /usr/local/apache-maven-3.5.3:/usr/local/apache-maven-3.5.3
  12.    - /usr/local/jdk1.8.0_251:/usr/local/jdk1.8.0_251
  13.    - /usr/local/bin:/usr/local/bin
  14.    - /usr/bin/docker:/usr/bin/docker

  15. docker-compose up -d --build   docker部署gitlab-runner容器
复制代码
        在宿主机启动docker程序后先执行,如果重启过docker,请重新执行,此命令使gitlab-runner容器可以使用宿主机的docker命令
  1. chown root:root /var/run/docker.sock
复制代码
        添加容器权限,保证容器可以使用宿主机的docker
  1. docker exec -it gitlab-runner usermod -aG root gitlab-runner
复制代码
         gitlab-runner容器添加环境变量
  1. docker exec -it gitlab-runner /bin/bash
  2. vi /etc/profile
  3. JAVA_HOME=/usr/local/jdk1.8.0_251
  4. MAVEN_HOME=/usr/local/apache-maven-3.5.3
  5. PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:/usr/local/bin/
  6. source /etc/profile
复制代码

四、创建gitlab项目       
      1、 创建gitlab项目

       新建项目.png
      2、注册gitlab-runner
      找到注册所需要的信息 项目=》设置=》CICD=》Runner展开
       注册runner.png
  1. [root@computer ~]# docker exec -it gitlab-runner gitlab-runner register
  2. Runtime platform                                    arch=amd64 os=linux pid=25 revision=cf91d5e1 version=11.4.2
  3. Running in system-mode.                           
  4.                                                    
  5. Please enter the gitlab-ci coordinator URL (e.g.https://gitlab.com/):             项目集成CI地址
  6. http://172.19.169.65:20080/
  7. Please enter the gitlab-ci token for this runner:                                项目集成CI注册令牌
  8. ickaCtLRCympzbEwtyoH
  9. Please enter the gitlab-ci description for this runner:                         添加描述
  10. [b0e7c9960f0b]: testcijicheng
  11. Please enter the gitlab-ci tags for this runner (comma separated):      添加tag
  12. deploy
  13. Registering runner... succeeded                     runner=ickaCtLR
  14. Please enter the executor: shell, virtualbox, kubernetes, docker, docker-ssh, parallels, ssh, docker+machine, docker-ssh+machine:   以什么方式执行,选sehll
  15. shell
  16. Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
复制代码
        注册完成后,刷新页面,再次点击展开Runner
         刷新runner.png
         后面打包的时候,如果不想runner受到限制,可以把这里打上勾         
         标签.png          




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|众客华禹 ( 蜀ICP备2021016660号 )

GMT+8, 2022-5-17 09:34 , Processed in 0.052363 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表