• Jenkins Docker Gitlab

    • 主机规划
    • 主机中安装工具
      • 安装 Gitlab-ce
      • 安装 Jenkins-master Docker Docker-compose Harbor
        • 安装 Jenkins
        • 安装 Docker
        • 安装 Docker-compose
        • 安装 Harbor
    • 工具集成配置
      • 配置 docker 使用 harbor
      • 配置 jenkins 使用 docker
      • 密钥配置
    • Jenkins 插件安装
    • Jenkins 全局工具配置
      • JDK 配置
      • Maven 配置
    • Jenkins 系统配置
      • 配置 SSH 协议连接主机
      • 配置 Gitlab
    • Jenkins master 连接 Jenkins slave
      • jenkins slave 配置
      • Jenkin master 配置

Jenkins Docker Gitlab

Ubuntu 18.04 安装部署 Jenkins Docker Gitlab

主机规划

主机名 主机 IP 功能 软件
dev_01 192.168.4.140 编译代码、打包镜像、项目发布、存储容器镜像 jenkins、docker、git、harbor、docker-compose
dev_02 192.168.4.141 编译代码、打包镜像、项目发布 jenkins、docker、docker-compose、git
dev_03 192.168.4.142 代码仓库 git、gitlab-ce

主机中安装工具

安装 Gitlab-ce

dev_03 主机 192.168.4.142

  1. 更新源,安装依赖包

    sudo apt-get update
    sudo apt-get -y install curl openssh-server ca-certificates postfix
    
  2. 获取源

    清华大学 gitlab-ce 源地址

    首先信任 GitLab 的 GPG 公钥:

    curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

    选择 Ubuntu 18.04 LTS,复制文本框内容到以下文件中:

    sudo cat > /etc/apt/sources.list.d/gitlab-ce.list <<EOF
    deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main
    EOF
    
  3. 开始安装(时间较长)

    sudo apt-get update
    sudo apt-get -y install gitlab-ce# 出现以下页面表示成功Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    The following NEW packages will be installed:gitlab-ce
    0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
    Need to get 1,139 MB of archives.
    After this operation, 3,060 MB of additional disk space will be used.
    Get:1 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic/main amd64 gitlab-ce amd64 15.2.2-ce.0 [1,139 MB]
    Fetched 1,139 MB in 11min 57s (1,588 kB/s)
    Selecting previously unselected package gitlab-ce.
    (Reading database ... 67738 files and directories currently installed.)
    Preparing to unpack .../gitlab-ce_15.2.2-ce.0_amd64.deb ...
    Unpacking gitlab-ce (15.2.2-ce.0) ...
    Setting up gitlab-ce (15.2.2-ce.0) ...
    It looks like GitLab has not been configured yet; skipping the upgrade script.*.                  *.***                 ********               *****.******             ***************            ********,,,,,,,,,***********,,,,,,,,,,,,,,,,,,,,*********,,,,,,,,,,,.,,,,,,,,,,,*******,,,,,,,,,,,,,,,,,,,,,*****,,,,,,,,,.,,,,,,,****,,,,,,.,,,***,,,,,*,._______ __  __          __/ ____(_) /_/ /   ____ _/ /_/ / __/ / __/ /   / __ \` / __ \/ /_/ / / /_/ /___/ /_/ / /_/ /\____/_/\__/_____/\__,_/_.___/Thank you for installing GitLab!
    GitLab was unable to detect a valid hostname for your instance.
    Please configure a URL for your GitLab instance by setting `external_url`
    configuration in /etc/gitlab/gitlab.rb file.
    Then, you can start your GitLab instance by running the following command:sudo gitlab-ctl reconfigureFor a comprehensive list of configuration options please see the Omnibus GitLab readme
    https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.mdHelp us improve the installation experience, let us know how we did with a 1 minute survey:
    https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=15-2build-admin@dev_03:~$
    
  4. 修改 gitlab-ce 配置

    sudo vim /etc/gitlab/gitlab.rb# 将 external_url 'http://gitlab.example.com' 改为 external_url 'http://192.168.4.142:8081'
    # 192.168.4.142 是本机 IP,8081 是登录端口
    
  5. 启动 gitlab-ce

    sudo gitlab-ctl reconfigure# 出现以下页面表示成功Running handlers:
    [2022-08-10T11:23:27+08:00] INFO: Running report handlers
    Running handlers complete
    [2022-08-10T11:23:27+08:00] INFO: Report handlers complete
    Infra Phase complete, 605/1615 resources updated in 03 minutes 49 secondsNotes:
    Default admin account has been configured with following details:
    Username: root
    Password: You didn\'t opt-in to print initial root password to STDOUT.
    Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.gitlab Reconfigured!
    
  6. 查看 gitlab-ce 状态

    sudo gitlab-ce statusrun: alertmanager: (pid 15920) 100s; run: log: (pid 15659) 175s
    run: gitaly: (pid 15953) 99s; run: log: (pid 15011) 293s
    run: gitlab-exporter: (pid 15894) 102s; run: log: (pid 15502) 193s
    run: gitlab-kas: (pid 15872) 104s; run: log: (pid 15284) 274s
    run: gitlab-workhorse: (pid 15881) 103s; run: log: (pid 15411) 212s
    run: grafana: (pid 15941) 99s; run: log: (pid 15802) 127s
    run: logrotate: (pid 14921) 308s; run: log: (pid 14931) 305s
    run: nginx: (pid 15437) 208s; run: log: (pid 15453) 205s
    run: node-exporter: (pid 15889) 103s; run: log: (pid 15484) 201s
    run: postgres-exporter: (pid 15930) 100s; run: log: (pid 15694) 169s
    run: postgresql: (pid 15137) 285s; run: log: (pid 15153) 282s
    run: prometheus: (pid 15902) 102s; run: log: (pid 15536) 183s
    run: puma: (pid 15346) 226s; run: log: (pid 15353) 225s
    run: redis: (pid 14953) 302s; run: log: (pid 14975) 299s
    run: redis-exporter: (pid 15896) 102s; run: log: (pid 15516) 188s
    run: sidekiq: (pid 15363) 220s; run: log: (pid 15379) 218s
    
  7. 登录 gitlab

    http://192.168.4.182:8081

    username:root
    password:
    

    密码在以下文件中查看:

    sudo cat /etc/gitlab/initial_root_password

    登录成功后更改密码

安装 Jenkins-master Docker Docker-compose Harbor

dev_01 主机 192.168.4.140

安装 Jenkins

  1. 安装 JDK

    安装 Jenkins 需要 JDK 环境

    sudo apt-get -y install openjdk-8-jdk

    查看 java 版本

    java -versionopenjdk version "1.8.0_342"
    OpenJDK Runtime Environment (build 1.8.0_342-8u342-b07-0ubuntu1~18.04-b07)
    OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)
    
    • JDK 默认目录位置:/usr/lib/jvm/java-8-openjdk-amd64/
  2. 安装 Jenkins

    可以参考官网地址下载最新版 Jenkins

    curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \/usr/share/keyrings/jenkins-keyring.asc > /dev/nullecho deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \https://pkg.jenkins.io/debian-stable binary/ | sudo tee \/etc/apt/sources.list.d/jenkins.list > /dev/nullsudo apt-get update
    sudo apt-get -y install jenkins
    
    • Jenkins 默认目录位置:/var/lib/jenkins
    • Jenkins 配置文件位置:/lib/systemd/system/jenkins.service
  3. 启动 Jenkins

    sudo systemctl start jenkins.service
    sudo systemctl enable jenkins.service
    sudo systemctl status jenkins.service
    
  4. 访问 Jenkins

    http://localhost:8080

    默认管理员密码在以下文件中查看:

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword

  5. 安装 git

    sudo apt-get -y install git

  6. 安装 maven

    sudo apt-get -y install maven

    查看 maven 版本

    mvn -vApache Maven 3.6.0
    Maven home: /usr/share/maven
    Java version: 1.8.0_342, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "4.15.0-191-generic", arch: "amd64", family: "unix"
    
    • Maven 默认目录位置:/usr/share/maven
  7. 修改 Jenkins 源为国内源

    • 修改配置文件 /var/lib/jenkins/updates/default.json

      vim 查看 default.json 文件时,可以通过在 命令模式 下使用 %!python3 -m json.tool 修改文件格式

      https://updates.jenkins.io/download 改为 http://mirrors.tuna.tsinghua.edu.cn/jenkins

      https://www.google.com 改为 https://www.baidu.com

      sed -i 's/https:\/\/updates.jenkins.io\/download/http:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json

      sed -i 's/https:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json

    • 到 Jenkins 的 Manage Jenkins -> Manage Plugins -> Advanced 页面,修改 Update Site 的 URL 地址

      https://updates.jenkins.io/update-center.json 改为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    如果上面改完只是临时生效,每次启动的时候回去官网安全检查一下,这个操作会导致咱们之前改的不生效,则需要填写以下参数来关闭验证

    • 如果是用 yum 安装的,systemctl 启动的,修改路径 /etc/sysconfig/jenkins,添加以下

      JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.model.DownloadService.noSignatureCheck=true"

      -Djava.awt.headless=true 这个配置是本来文件就有不用搭理他

    • Java 启动

      java -Dhudson.model.DownloadService.noSignatureCheck=true -jar jenkins.war

    • Docker 启动

      docker run --env JAVA_OPTS=-Dhudson.model.DownloadService.noSignatureCheck=true jenkins/jenkins

    • Tomcat 启动需要把一下启动参数配置到 catalina.sh (linux)或 catalina.bat (windows) 中

      JAVA_OPTS="-Dhudson.model.DownloadService.noSignatureCheck=true"

安装 Docker

  1. 安装依赖环境

    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

  2. 安装 GPG 证书

    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

  3. 写入软件源信息

    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

  4. 更新源

    sudo apt-get update

  5. 安装 Docker-CE

    sudo apt-get -y install docker-ce

  6. 查看 Docker 版本

    sudo docker -vDocker version 20.10.17, build 100c701
    
    • Docker 默认目录位置:/var/lib/docker/
  7. 启动 Docker

    sudo systemctl daemon-reload
    sudo systemctl start docker.service
    sudo systemctl enable docker.service
    
  8. 配置镜像加速

    cat > /etc/docker/daemon.json <<EOF
    {"registry-mirrors": ["https://6870dvkt.mirror.aliyuncs.com"]
    }
    EOFsudo systemctl daemon-reload
    sudo systemctl restart docker.service
    

安装 Docker-compose

获取 docker-compose 文件:https://github.com/docker/compose/releases

  1. 下载 docker-compose

    wget https://github.com/docker/compose/releases/download/v2.9.0/docker-compose-linux-x86_64chmod +x docker-compose-linux-x86_64
    sudo mv docker-compose-linux-x86_64 /usr/bin/docker-compose
    
  2. 查看 docker-compose 版本

    docker-compose -vDocker Compose version v2.9.0
    

安装 Harbor

获取 Harbor 包:https://github.com/goharbor/harbor/releases

  1. 下载 Harbor 包

    wget https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgztar xf harbor-offline-installer-v2.4.1.tgz -C /home
    
  2. 修改 harbor.yml 文件

    cd /home/harbor
    sudo mv harbor.yml.tmpl harbor.yml
    sudo cp harbor.yml harbor.yml_baksudo vim harbor.ymlhostname: 192.168.4.140 修改# https related config
    # https: 注释# https port for harbor, default is 443
    #  port: 443 注释# The path of cert and key files for nginx
    #  certificate: /your/certificate/path 注释
    #  private_key: /your/private/key/path 注释
    
  3. 执行 prepare 和 install.sh 脚本

    sudo ./prepare
    sudo ./install.sh
    

工具集成配置

配置 docker 使用 harbor

dev_01 主机 192.168.4.140

  1. 添加 daemon.json 文件

    sudo vim /etc/docker/daemon.json
    {"registry-mirrors": ["https://6870dvkt.mirror.aliyuncs.com"],"insecure-registries": ["http://192.168.4.140"]
    }
    
  2. 重启 docker

    sudo systemctl daemon-reload
    sudo systemctl restart docker.service
    
  3. 重启 docker-compose

    cd /home/harbor/docker-compose down
    systemctl restart docker
    docker-compose up -d
    
  4. 登录 harbor 测试

    sudo docker login 192.168.4.140username: admin
    password: Harbor12345WARNING! Your password will be stored unencrypted in /home/build-admin/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded
    

配置 jenkins 使用 docker

dev_01 主机 192.168.4.140

  1. 验证系统中是否有 jenkins 用户

    grep jenkins /etc/passwdjenkins:x:111:113:Jenkins,,,:/var/lib/jenkins:/bin/bash
    
  2. 验证系统中是否有 docker 用户及用户组

    grep docker /etc/groupdocker:x:999:
    
  3. 添加 jenkins 用户到 docker 用户组

    usermod -G docker jenkins
    grep docker /etc/groupdocker:x:999:jenkins
    
  4. 重启 jenkins 服务

    sudo systemctl restart jenkins

密钥配置

dev_01 主机 192.168.4.140

  1. jenkins 连接 gitlab

    sudo su jenkins
    ssh-keygen -t rsa
    
  2. 复制公钥到 gitlab 网页登录用户的 SSH Keys 中

    cat .ssh/id_rsa.pub

  3. 将 jenkins 私钥添加到 Manage Jenkins -> Manage Credentials

    • 选择 SSH Username with private key 类型
    • ID:可以不写,会自动生成 ID(或,自己定义,如:jenkins_to_gitlab)
    • 描述:jenkins to gitlab
    • Username:gitlab 服务器主机名
    • Private Key:将生成的私钥添加到这里

Jenkins 插件安装

在 Jenkins 页面中到 Manage Jenkins -> Manage Plugins -> Available 中下载以下插件:

  • maven integration
  • git parameter
  • gitlab
  • Generic Webhook Trigger
  • ssh

Jenkins 全局工具配置

JDK 配置

  • Name:自定义
  • JAVA_HOME:JDK 的绝对路径

Maven 配置

  • Name:自定义
  • MAVEN_HOME:maven 的绝对路径

Jenkins 系统配置

配置 SSH 协议连接主机

Manage Jenkins -> Configure System 中,找到 SSH remote hosts 选项

  • Hostname:SSH 连接主机的 IP
  • Port:SSH 连接主机的端口
  • Credentials:认证凭证

配置完成点击 Check connection 按钮,进行检查连接

配置 Gitlab

在 Gitlab 服务器页面上生成 API Token,并保存
在 Jenkins 服务器页面 Manage Jenkins -> Manage Credentials 中,添加 Gitlab API Token

  • Connection name:连接的名称
  • Gitlab host URL:Gitlab 服务器的完整 URL
  • Credentials:用于访问 Gitlab 的 API Token

配置完成点击 Test connection 按钮,进行测试连接

Jenkins master 连接 Jenkins slave

dev_02 主机 192.168.4.141

jenkins slave 配置

  1. jenkins slave 不需要安装 Jenkins,但需要安装 JDK

    sudo apt-get -y install openjdk-8-jdk

  2. 在 jenkins slave 服务器上创建 Jenkins 存放目录

    sudo mkdir /var/lib/jenkins

  3. 在 Jenkins slave 服务器上创建运行 Jenkins 用户

    sudo useradd jenkins -M -d /var/lib/jenkins -s /bin/bash
    sudo chown -R jenkins:jenkins /var/lib/jenkins/
    
    • -M:不要自动建立用户的登入目录
    • -d:指定用户登入时的启始目录
    • -s:指定用户登入后所使用的 shell

Jenkin master 配置

dev_01 主机 192.168.4.140

  1. Jenkins master 配置到 Jenkins slave 免密登录

    必须是由 Jenkins 的运行用户生成 SSH 密钥

    sudo su jenkins
    ssh-keygen -t rsa
    

    将生成的公钥复制到 Jenkins slave 服务器运行 Jenkins 用户下的 authorized_keys 文件中

  2. 到 Jenkins master 页面的 Manage Jenkins -> Manage Nodes and Clouds

    创建新节点,并进行配置:

    • Name:jenkins slave 节点唯一标识,可以和主机名一样
    • Description:添加描述信息
    • Number of executors:Jenkins 可以在此节点上执行并发构建的最大数目。
    • Remote root directory:专门用于 Jenkins 的目录,在代理上创建此目录的路径,最好使用绝对路径。
    • Labels:标签用来对多节点分组,标记之间用空格分隔.
    • Usage:控制 Jenkins 如何在这台机器上安排构建。(一般选择:Use this node as much as possible)
    • Launch method:控制 Jenkins 如何启动此代理。(一般选择:Launch agents via SSH)
      • Host:要连接的代理的主机名或 IP。
      • Credentials:选择用于登录远程主机的凭据。
      • Host Key Verification Strategy:控制 Jenkins 在连接时如何验证远程主机提供的 SSH 密钥。(一般选择:Non verifying Verification Strategy)

Jenkins Docker Gitlab相关推荐

  1. 基于Docker容器的,Jenkins、GitLab构建持续集成CI

    ** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...

  2. 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s

    总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...

  3. [凡文]Docker+Jenkins+Gradle+GitLab在Linux服务端自动化构建Android包

    概述 在linux服务器上安装docker和jenkins,项目仓库在搭建的gitlab私服上,然后在windows或者mac上编写项目,最后push代码到gitlab指定分支时,触发jenkins去 ...

  4. 【gitlab+jenkins+docker】第一节 基础环境介绍与准备

    [gitlab+jenkins+docker]手把手教你搭建基于gitlab+jenkins+docker的项目的自动化部署流程 架构 环境介绍 docker安装 docker-compose安装(二 ...

  5. K8S+Jenkins+Harbor+Docker+gitlab集群部署

    K8S+Jenkins+Harbor+Docker+gitlab服务器集群部署 所需资源下载地址 将此文章写给我最心爱的女孩 目录 K8S+Jenkins+Harbor+Docker+gitlab服务 ...

  6. jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?

    十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...

  7. kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps

    文章目录 CI/CD JenKins 安装 插入一个问题解决(没遇到这个问题的直接跳过) 架构 配置 测试 Gitlab 一个奇怪的现象 Git 部署配置git git本地仓库使用 对比各个区域文件内 ...

  8. Jenkins+Docker+Spring+Java项目持续集成(单机版)

    1.大致流程 流程说明: 1)开发人员每天把代码提交到 Gitlab 代码仓库 2)Jenkins 从 Gitlab 中拉取项目源码,编译并打成jar包,然后构建成 Docker 镜像,将镜像上传到 ...

  9. Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken

    项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...

最新文章

  1. 腐蚀rust高速箭怎么做不了_皮带轮动平衡怎么做
  2. 初识HTML和WEB标准
  3. 图解CMS垃圾回收机制,你值得拥有
  4. ML之GMM:Gaussian Mixture Model高斯混合模型相关论文、算法步骤相关配图
  5. JDBC连接MySQL数据库及示例
  6. java string 数据结构_数据结构---Java---String、StringBuilder、StringBuffer
  7. 数据访问......单条件查询与多条件查询
  8. 8款最受欢迎的HTML5/CSS3应用及代码
  9. 深度学习的实用层面 —— 1.7 理解Dropout
  10. python把dict转成json_Python dict(或对象)与json之间的互相转化
  11. java接口对接——别人调用我们接口获取数据
  12. 史上最强之《Pyqt》写游戏
  13. 发光二极管pcb封装图画法_电子元器件认识与使用ZD43 | 贴片74HC138 原理图PCB库 封装尺寸 | 视频教程...
  14. 《从容一生》俞敏洪 书摘
  15. 十六进制转二进制(C代码)
  16. 如何批量打印PDF文件
  17. 【bzoj4173】数学
  18. python语言保留字有true吗_python语言的保留字
  19. run npm fund for details
  20. linux 跨平台查询 lxr,利用LXR来生成Linux内核代码的交叉索引页面

热门文章

  1. node版本管理n的使用
  2. 程序员应注意——米勒法则
  3. Numpy的数据类型
  4. 教程篇(5.0) 05. 通信控制 ❀ FortiEDR ❀ Fortinet 网络安全专家 NSE 5
  5. JOB Recruitment Information
  6. 干货分享: 陶瓷3D打印之粘结剂喷射技术的成形材料、优势与挑战
  7. 10月24 日 c语言 计算1至10之间奇数之和及偶数之和。
  8. 4090显卡上部署 Baichuan-13B-Chat
  9. 计算机检索高考投档线,高考查询录取
  10. WP+Nginx+Ubuntu平滑升级PHP版本