Jenkins Docker Gitlab
- 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
更新源,安装依赖包
sudo apt-get update sudo apt-get -y install curl openssh-server ca-certificates postfix
获取源
清华大学 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
开始安装(时间较长)
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:~$
修改 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 是登录端口
启动 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!
查看 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
登录 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
安装 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/
- JDK 默认目录位置:
安装 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
- Jenkins 默认目录位置:
启动 Jenkins
sudo systemctl start jenkins.service sudo systemctl enable jenkins.service sudo systemctl status jenkins.service
访问 Jenkins
http://localhost:8080
默认管理员密码在以下文件中查看:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
安装 git
sudo apt-get -y install git
安装 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
- Maven 默认目录位置:
修改 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
安装依赖环境
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
安装 GPG 证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
更新源
sudo apt-get update
安装 Docker-CE
sudo apt-get -y install docker-ce
查看 Docker 版本
sudo docker -vDocker version 20.10.17, build 100c701
- Docker 默认目录位置:/var/lib/docker/
启动 Docker
sudo systemctl daemon-reload sudo systemctl start docker.service sudo systemctl enable docker.service
配置镜像加速
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
下载 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
查看 docker-compose 版本
docker-compose -vDocker Compose version v2.9.0
安装 Harbor
获取 Harbor 包:https://github.com/goharbor/harbor/releases
下载 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
修改 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 注释
执行 prepare 和 install.sh 脚本
sudo ./prepare sudo ./install.sh
工具集成配置
配置 docker 使用 harbor
dev_01 主机 192.168.4.140
添加 daemon.json 文件
sudo vim /etc/docker/daemon.json {"registry-mirrors": ["https://6870dvkt.mirror.aliyuncs.com"],"insecure-registries": ["http://192.168.4.140"] }
重启 docker
sudo systemctl daemon-reload sudo systemctl restart docker.service
重启 docker-compose
cd /home/harbor/docker-compose down systemctl restart docker docker-compose up -d
登录 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
验证系统中是否有 jenkins 用户
grep jenkins /etc/passwdjenkins:x:111:113:Jenkins,,,:/var/lib/jenkins:/bin/bash
验证系统中是否有 docker 用户及用户组
grep docker /etc/groupdocker:x:999:
添加 jenkins 用户到 docker 用户组
usermod -G docker jenkins grep docker /etc/groupdocker:x:999:jenkins
重启 jenkins 服务
sudo systemctl restart jenkins
密钥配置
dev_01 主机 192.168.4.140
jenkins 连接 gitlab
sudo su jenkins ssh-keygen -t rsa
复制公钥到 gitlab 网页登录用户的 SSH Keys 中
cat .ssh/id_rsa.pub
将 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 配置
jenkins slave 不需要安装 Jenkins,但需要安装 JDK
sudo apt-get -y install openjdk-8-jdk
在 jenkins slave 服务器上创建 Jenkins 存放目录
sudo mkdir /var/lib/jenkins
在 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
Jenkins master 配置到 Jenkins slave 免密登录
必须是由 Jenkins 的运行用户生成 SSH 密钥
sudo su jenkins ssh-keygen -t rsa
将生成的公钥复制到 Jenkins slave 服务器运行 Jenkins 用户下的 authorized_keys 文件中
到 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相关推荐
- 基于Docker容器的,Jenkins、GitLab构建持续集成CI
** 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布. 基于Docker,创建一个私有Gi ...
- 第四十四章 微服务CICD(6)- gitlab + jenkins + docker + k8s
总体流程: 在开发机开发代码后提交到gitlab 之后通过webhook插件触发jenkins进行构建,jenkins将代码打成docker镜像,push到docker-registry 之后将在k8 ...
- [凡文]Docker+Jenkins+Gradle+GitLab在Linux服务端自动化构建Android包
概述 在linux服务器上安装docker和jenkins,项目仓库在搭建的gitlab私服上,然后在windows或者mac上编写项目,最后push代码到gitlab指定分支时,触发jenkins去 ...
- 【gitlab+jenkins+docker】第一节 基础环境介绍与准备
[gitlab+jenkins+docker]手把手教你搭建基于gitlab+jenkins+docker的项目的自动化部署流程 架构 环境介绍 docker安装 docker-compose安装(二 ...
- K8S+Jenkins+Harbor+Docker+gitlab集群部署
K8S+Jenkins+Harbor+Docker+gitlab服务器集群部署 所需资源下载地址 将此文章写给我最心爱的女孩 目录 K8S+Jenkins+Harbor+Docker+gitlab服务 ...
- jenkins 增量发布插件_CI/CD工具:Jenkins还是GitLab CI/CD?
十年来,持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域都取得了很大的进步.DevOps 测试的兴起导致了对 CI/CD 工 ...
- kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps
文章目录 CI/CD JenKins 安装 插入一个问题解决(没遇到这个问题的直接跳过) 架构 配置 测试 Gitlab 一个奇怪的现象 Git 部署配置git git本地仓库使用 对比各个区域文件内 ...
- Jenkins+Docker+Spring+Java项目持续集成(单机版)
1.大致流程 流程说明: 1)开发人员每天把代码提交到 Gitlab 代码仓库 2)Jenkins 从 Gitlab 中拉取项目源码,编译并打成jar包,然后构建成 Docker 镜像,将镜像上传到 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
最新文章
- 腐蚀rust高速箭怎么做不了_皮带轮动平衡怎么做
- 初识HTML和WEB标准
- 图解CMS垃圾回收机制,你值得拥有
- ML之GMM:Gaussian Mixture Model高斯混合模型相关论文、算法步骤相关配图
- JDBC连接MySQL数据库及示例
- java string 数据结构_数据结构---Java---String、StringBuilder、StringBuffer
- 数据访问......单条件查询与多条件查询
- 8款最受欢迎的HTML5/CSS3应用及代码
- 深度学习的实用层面 —— 1.7 理解Dropout
- python把dict转成json_Python dict(或对象)与json之间的互相转化
- java接口对接——别人调用我们接口获取数据
- 史上最强之《Pyqt》写游戏
- 发光二极管pcb封装图画法_电子元器件认识与使用ZD43 | 贴片74HC138 原理图PCB库 封装尺寸 | 视频教程...
- 《从容一生》俞敏洪 书摘
- 十六进制转二进制(C代码)
- 如何批量打印PDF文件
- 【bzoj4173】数学
- python语言保留字有true吗_python语言的保留字
- run npm fund for details
- linux 跨平台查询 lxr,利用LXR来生成Linux内核代码的交叉索引页面