如果您对jenkins+git+docker实验环境的搭建感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于jenkins+git+docker实验环境的搭建的详细内容,我们还
如果您对jenkins+git+docker 实验环境的搭建感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于jenkins+git+docker 实验环境的搭建的详细内容,我们还将为您解答jenkins git docker的相关问题,并且为您提供关于7.Docker搭建jenkins、CentOS7下, 搭建Docker环境并部署Jenkins服务、centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)、centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(二)的有价值信息。
本文目录一览:- jenkins+git+docker 实验环境的搭建(jenkins git docker)
- 7.Docker搭建jenkins
- CentOS7下, 搭建Docker环境并部署Jenkins服务
- centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)
- centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(二)
jenkins+git+docker 实验环境的搭建(jenkins git docker)
持续集成(c/i)的实验环境
git/harbor 服务器 ip 192.168.200.132
docker 服务器 ip 192.168.200.149
Jenkins 服务器 ip 192.168.200.150
工具与版本要求
centos 7.5_x86
maven 3.5
tomcat 8
jdk 1.8
jenkins 2.6
docker -ce 18.09.0
查看实验环境
[root@harbor ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@harbor ~]# uname -r
3.10.0-862.el7.x86_64
开始部署 harbor
[root@harbor ~]# ls
anaconda-ks.cfg docker-compose harbor-offline-installer-v1.5.0.tgz
#创建 ca 证书
[root@harbor ~]# mkdir -p /data/ssl
[root@harbor ~]# cd /data/ssl/
[root@harbor ssl]# which openssl
/usr/bin/openssl
[root@harbor ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
Generating a 4096 bit RSA private key
.......................................................................................................................................++
...................++
writing new private key to ''ca.key''
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ''.'', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:yunjisuan
Organizational Unit Name (eg, section) []:yunjisuan
Common Name (eg, your name or your server''s hostname) []:www.yunjisuan.com
Email Address []:
[root@harbor ssl]#
#生成证书请求
[root@harbor ssl]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.yunjisuan.com.key -out www.yunjisuan.com.csr
Generating a 4096 bit RSA private key
...................................................++
.........................................++
writing new private key to ''www.yunjisuan.com.key''
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ''.'', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:yunjisuan
Organizational Unit Name (eg, section) []:yunjisuan
Common Name (eg, your name or your server''s hostname) []:www.yunjisuan.com
Email Address []:
Please enter the following ''extra'' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@harbor ssl]#
#生成主机注册表的证书
[root@harbor ssl]# openssl x509 -req -days 365 -in www.yunjisuan.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.yunjisuan.com.crt
Signature ok
subject=/C=CN/ST=Beijing/L=Beijing/O=yunjisuan/OU=yunjisuan/CN=www.yunjisuan.com
Getting CA Private Key
[root@harbor ssl]#
#查看生成的证书
[root@harbor ssl]# ls
ca.crt ca.key ca.srl www.yunjisuan.com.crt www.yunjisuan.com.csr www.yunjisuan.com.key
#信任自签发的证书
[root@harbor ssl]# cp www.yunjisuan.com.crt /etc/pki/ca-trust/source/anchors/
[root@harbor ssl]# update-ca-trust enable
[root@harbor ssl]# update-ca-trust extract
#关闭 selinux
[root@harbor ssl]# setenforce 0
#查看 selinux 的状态
[root@harbor ssl]# sestatus
#安装 docker
[root@harbor ssl]# yum -y install yum-utils device-mapper-persistent-data 1vm2 wget
[root@harbor yum.repos.d]# wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@harbor yum.repos.d]# yum -y install docker-ce
[root@harbor yum.repos.d]# systemctl start docker
[root@harbor yum.repos.d]# vim /etc/docker/daemon.json
[root@harbor yum.repos.d]# cat /etc/docker/daemon.json
{
"registry-mirrors":[ "https://registry.docker-cn.com" ]
}
[root@harbor yum.repos.d]# systemctl daemon-reload
[root@harbor yum.repos.d]# systemctl restart docker
[root@harbor yum.repos.d]# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false
#搭建 harbor,先复制证书
[root@harbor ssl]# cd /data/ssl/
[root@harbor ssl]# mkdir -p /etc/ssl/harbor
[root@harbor ssl]# cp /data/ssl/www.yunjisuan.com.key /etc/ssl/harbor/
[root@harbor ssl]# cp /data/ssl/www.yunjisuan.com.crt /etc/ssl/harbor/
#harbor 的现在地址
[root@harbor install]# wget http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz
#安装 harbor
[root@harbor install]# cd ~
[root@harbor ~]# tar xf harbor-offline-installer-v1.5.0.tgz -C /data/install/
[root@harbor ~]# cd /data/install/harbor/
[root@harbor harbor]# cp harbor.cfg{,.bak}
[root@harbor harbor]# cat -n harbor.cfg | sed -n ''7p;11p;23p;24p;68p''
7 hostname = www.yunjisuan.com
11 ui_url_protocol = https
23 ssl_cert = /etc/ssl/harbor/www.yunjisuan.com.crt
24 ssl_cert_key = /etc/ssl/harbor/www.yunjisuan.com.key
68 harbor_admin_password = Harbor12345
[root@harbor harbor]#
#安装 docker-compose 命令
[root@harbor harbor]# cd ~
[root@harbor ~]# chmod +x docker-compose
[root@harbor ~]# mv docker-compose /usr/bin/
[root@harbor ~]# which docker-compose
/usr/bin/docker-compose
#启动 harbor
[root@harbor ~]# cd /data/install/harbor/
[root@harbor harbor]# ./install.sh --with-clair
给其他服务器下发信任证书
[root@harbor ~]# scp /data/ssl/www.yunjisuan.com.crt 192.168.200.149:/etc/pki/ca-trust/source/anchors/
The authenticity of host ''192.168.200.149 (192.168.200.149)'' can''t be established.
ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''192.168.200.149'' (ECDSA) to the list of known hosts.
root@192.168.200.149''s password:
www.yunjisuan.com.crt 100% 1931 5.9KB/s 00:00
[root@harbor ~]# scp /data/ssl/www.yunjisuan.com.crt 192.168.200.150:/etc/pki/ca-trust/source/anchors/
The authenticity of host ''192.168.200.150 (192.168.200.150)'' can''t be established.
ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''192.168.200.150'' (ECDSA) to the list of known hosts.
root@192.168.200.150''s password:
www.yunjisuan.com.crt 100% 1931 19.5KB/s 00:00
[root@harbor ~]#
让另两个服务器立即生效并且映射域名,重启 docker
[root@docker ~]# update-ca-trust enable
[root@docker ~]# update-ca-trust extract
[root@docker ~]# echo "192.168.200.132 www.yunjisuan.com" >> /etc/hosts
[root@docker ~]# systemctl restart docker
[root@jenkins ~]# update-ca-trust enable
[root@jenkins ~]# update-ca-trust extract
[root@jenkins ~]# echo "192.168.200.132 www.yunjisuan.com" >> /etc/hosts
[root@jenkins ~]# systemctl restart docker
部署 git 在 harbor 上和 Jenkins 上
[root@harbor harbor]# yum -y install git
[root@harbor harbor]# useradd git
[root@harbor harbor]# echo "123123" | passwd --stdin git
Changing password for user git.
passwd: all authentication tokens updated successfully.
#在harbor上的git用户下创建仓库
[root@harbor ~]# su - git
Last login: Thu Dec 20 18:34:32 CST 2018 on pts/0
[git@harbor ~]$ mkdir solo.git
[git@harbor ~]$ cd solo.git/
[git@harbor solo.git]$ git --bare init
Initialized empty Git repository in /home/git/solo.git/
[git@harbor solo.git]$ ls
branches config description HEAD hooks info objects refs
[git@harbor solo.git]$
在 Jenkins 上安装 git
[root@jenkins ~]# yum -y install git
#用git下载solo的bao
[root@jenkins ~]# git clone https://github.com/b3log/solo.git
[root@jenkins ~]# cd solo/
[root@jenkins solo]# ls
CHANGE_LOGS.html Dockerfile LICENSE pom.xml README_zh_CN.md
docker-compose.yml gulpfile.js package.json README.md src
#创建用于提交的 git 目录
[root@jenkins solo]# mkdir -p /code
[root@jenkins solo]# cd /code/
[root@jenkins code]# git clone root@192.168.200.132:/home/git/solo.git
Cloning into ''solo''...
The authenticity of host ''192.168.200.132 (192.168.200.132)'' can''t be established.
ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''192.168.200.132'' (ECDSA) to the list of known hosts.
root@192.168.200.132''s password:
warning: You appear to have cloned an empty repository.
[root@jenkins code]# ls
solo
[root@jenkins code]# ls solo/
[root@jenkins code]#
#将 solo 项目的代码通过 git 上床到 harbo 服务器
[root@jenkins solo]# cd solo/
[root@jenkins solo]# git add .
[root@jenkins solo]# git commit -m "all"
[root@jenkins solo]# git config --global user.email "493115250@qq.com" #第一次提交会报错,需要告诉 git 全局变量,邮箱和使用者
[root@jenkins solo]# git config --global user.name "suge" # 第一次提交会报错,需要告诉 git 全局变量,邮箱和使用者
[root@jenkins solo]# git commit -m "all"
[root@jenkins solo]# git push origin master
root@192.168.200.132''s password:
Counting objects: 2099, done.
Compressing objects: 100% (2044/2044), done.
Writing objects: 100% (2099/2099), 27.44 MiB | 12.93 MiB/s, done.
Total 2099 (delta 367), reused 0 (delta 0)
To root@192.168.200.132:/home/git/solo.git
* [new branch] master -> master
#修改 SOLo 的配置文件,并再次上传
[root@jenkins solo]# cd /code/solo/src/main/resources/
[root@jenkins resources]# vim latke.properties
[root@jenkins resources]# cat -n latke.properties | sed -n ''29p;31p''
29 serverHost=192.168.200.149 # 修改成 docker 的 ip
31 serverPort=8888 # 监听端口
[root@jenkins resources]# cd /code/solo/
[root@jenkins solo]# git add .
[root@jenkins solo]# git commit -m "latke"
[master 82250cf] latke
1 file changed, 2 insertions(+), 2 deletions(-)
[root@jenkins solo]# git push origin master
root@192.168.200.132''s password:
Counting objects: 11, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 534 bytes | 0 bytes/s, done.
Total 6 (delta 3), reused 0 (delta 0)
To root@192.168.200.132:/home/git/solo.git
705030c..82250cf master -> master
[root@jenkins solo]#
在 docker 服务器上安装 jdk。先不需要设置环境变量
[root@docker ~]# ls
anaconda-ks.cfg jdk-8u45-linux-x64.tar.gz
[root@docker ~]# tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local/
在 Jenkins 服务器上安装 Jenkins 镜像
[root@jenkins ~]# ls
anaconda-ks.cfg apache-tomcat-8.0.46.tar.gz jdk-8u45-linux-x64.tar.gz
apache-maven-3.5.0-bin.tar.gz docker-compose solo
[root@jenkins ~]# tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local/ #因为是镜像的所有不用设置环境变量
[root@jenkins ~]# tar xf apache-maven-3.5.0-bin.tar.gz -C /usr/local/
#创建Jenkins的镜像dockerfile
[root@jenkins ~]# mkdir -p dockerfile/jenkins
[root@jenkins ~]# cd dockerfile/jenkins/
[root@jenkins jenkins]# vim Dockerfile
[root@jenkins jenkins]# cat Dockerfile #下的 Jenkins 镜像是 Ubuntu 的
FROM jenkins
USER root
RUN echo "" > /etc/apt/sources.list.d/jessie-backports.list && \
wget http://mirrors.163.com/.help/sources.list.jessie -O /etc/apt/sources.list
RUN /usr/bin/apt-get update && /usr/bin/apt-get install -y git libltdl-dev
Jenkins 的容器的数据目录我们需要在宿主机上挂载,以免丢失
Jenkins 需要的 jdk 我们也在宿主机上安装
Jenkins 构建 java 代码的 maven 我们也安装在宿主机上
Jenkins 需要 docker 支持镜像
Jenkins 需要免秘钥交换拉取 git 代码,我们需要挂载本地的密匙
#进行免秘钥分发
[root@jenkins jenkins]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tlI4gYrpwQsCX+6DdsnphBl3QFldtkB/tlRQtmCAfJQ root@jenkins
The key''s randomart image is:
+---[RSA 2048]----+
| .o.+o+=o+o+ |
| ... ++Eo + . |
|. + . .o + . |
|o+ + . o + . |
|=o+ o + S . |
|+ oO + + . |
| o= O . . |
| . + . . |
| . |
+----[SHA256]-----+
[root@jenkins jenkins]# ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.200.132
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
git@192.168.200.132''s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh ''git@192.168.200.132''"
and check to make sure that only the key(s) you wanted were added.
[root@jenkins jenkins]# ssh git@192.168.200.132
Last login: Thu Dec 20 18:34:53 2018
[git@harbor ~]$ exit
logout
#启动镜像
[root@jenkins jenkins]# docker build -t jenkins:1 .
[root@jenkins jenkins]# docker run -dit --name jenkins -p 8080:8080 -v /var/jenkins_home/:/var/jenkins_home/ -v /usr/local/apache-maven-3.5.0/:/usr/local/maven -v /usr/local/jdk1.8.0_45/:/usr/local/jdk -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v ~/.ssh/:/root/.ssh jenkins:1
利用浏览器登陆 Jenkins,提取密码的命令如下:
[root@jenkins jenkins]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
67a7a47315314a76bcae06ee790309a4
由于不好选,我们所有的插件都装一遍
我们现在创建一个可以运行 solo 的代码的 tomcat 的镜像
[root@jenkins jenkins]# mkdir -p /root/dockerfile/solo
[root@jenkins jenkins]# cd /root/dockerfile/solo/
[root@jenkins solo]# vim Dockerfile
[root@jenkins solo]# cat Dockerfile
FROM centos:7
MAINTAINER www.yunjisuan.com
RUN /usr/bin/yum -y install unzip iproute
ENV JAVA_HOME /usr/local/jdk
ADD apache-tomcat-8.0.46.tar.gz /usr/local
RUN mv /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
WORKDIR /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh","run"]
[root@jenkins solo]# ls
apache-tomcat-8.0.46.tar.gz Dockerfile
[root@jenkins solo]# docker build -t tomcat:v1 .
[root@jenkins solo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat v1 eba33a67bb74 2 minutes ago 302MB
jenkins 1 60f11a4065d4 43 minutes ago 738MB
centos 7 1e1148e4cc2c 2 weeks ago 202MB
jenkins latest cd14cecfdb3a 5 months ago 696MB
#测试登陆 harbor 私有参考,用 docker 登陆
[root@jenkins solo]# docker login -uadmin -pHarbor12345 www.yunjisuan.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
#推送镜像到 harbor 仓库(如果推送失败,查看 docker 是否登陆,或者查看 ca 证书)
[root@jenkins solo]# docker tag tomcat:v1 www.yunjisuan.com/library/tomcat:v1
[root@jenkins solo]# docker push www.yunjisuan.com/library/tomcat:v1
The push refers to repository [www.yunjisuan.com/library/tomcat]
68c3eb65b757: Pushed
ff448c703734: Pushed
5a25c30f7a36: Pushed
071d8bd76517: Pushed
v1: digest: sha256:1e7203c1caeace697e8057f9b69f70e20dc744e1fea9ff9c36e9fd8c6720188f size: 1163
[root@jenkins solo]#
查看镜像仓库有没有
已经测试成功,现在开始配置 Jenkins
设置 Jenkins 和 docker 的 ssh 免秘钥连接
[root@jenkins solo]# ll ~/.ssh/
total 12
-rw-------. 1 root root 1679 Dec 20 20:19 id_rsa
-rw-r--r--. 1 root root 394 Dec 20 20:19 id_rsa.pub
-rw-r--r--. 1 root root 177 Dec 20 18:54 known_hosts
[root@jenkins solo]# ssh-copy-id root@192.168.200.149
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host ''192.168.200.149 (192.168.200.149)'' can''t be established.
ECDSA key fingerprint is SHA256:gm/RhqGrfDo5Rgcr/LmBAaqPv6tmni7cRpXjGEWZQpg.
ECDSA key fingerprint is MD5:ae:f6:0b:6e:80:96:67:cf:bd:e8:f5:b5:c4:e0:da:11.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.200.149''s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh ''root@192.168.200.149''"
and check to make sure that only the key(s) you wanted were added.
[root@jenkins solo]# ssh root@192.168.200.149
Last login: Sat Dec 22 11:43:47 2018 from 192.168.200.1
[root@docker ~]# exit
给 Jenkins 添加秘钥在 web 页面上
[root@jenkins solo]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAyzG46DWQfUOpgoyaKPAYRsqYSdjqsaFHlQRO94Oo0y7anL1l
3EnCgGXkfnrQWgE9HKPQuiY00VFvfihOC1xUBd/N6I4F3pIF54vLCpSxbl477ibL
HgW/k8S4UQqihe+FTY1gOwiTxQREOqTCx0Gn0iXvWt/hP1AWeGy39u0+1Npg6yrs
x+9OWygYswHv4CrMKgzrxsIozOiw4+y+OmDbKcRwGAo+M1fbo+0Ryc/3rAq7Kmdi
CDm7V91kOs9t0DdvB7v5ZRXn4O9vFWqS1kORHGOssVuFVKbrLJCiPaT4YD3CI1KB
CSjBwOXJ7ur2YQWnIVuKJdiBMZL1C5JVjwEOzQIDAQABAoIBAQC/OsZY08BuA3XO
hWC4Um2mghict2b5UV264tkmnGQQjDH1/VGV5l0E1eAbIJ5hdnT7NTjFWBuxO0EA
rBH3Iyd4d86jpLXlZ+vipG+sP5BU3J7uXNggIyzPdv44VxfpkSgVeo4sQMBBVOiZ
gGJHgITehBElpzmnikn7f+YKn/DYBBatE7Wom79aJ/hVfdZBDykjZR4Agh4wTAd1
CqbqGL0rR/E7Eh3vbYnGB/fWdqaVY7hmcQkzo6jqTLGLzJ/1f74KzbwR/lSrLm6E
ljw9MYnXk7Knfqxlw+t6bC87xb6kr3B85X3ULkR8RwLtR+smOjTd2GYnJHz1t/yr
8iMRHVUBAoGBAPqNNNjW6T7VEKo/MLHw2w9Bt6qdjgN38CLfd0fh0JY+bMWfncUg
/NQawezKMWaYICqB8pKhUf3MucwALK+BpQwa/ky7pnJOLnpKjXDKeiOIcHYOx/sH
V4QDAbfRXq4GwQTX3dYrsRjcq8e6QjLqvTIItioDLfAed3n8qEEhCWMhAoGBAM+c
4e+p/jMYQM+P0yb6dD7ktFBWSXGZ9gpfdtUIzInvaejmPAGpQa5TKYJ+LVe1TFZT
Mn5YssbOy5YRle+ISoiI/rGm6QCaeCGZFBmW6lzhL6UgiGrH1Y+6kItO6MSEJYwb
35vGYaaKPnHa9iUzEjJFhnQihcJEPPMNU1ODaGItAoGBAIQDkNvL6NvNYdmCMAMh
2Bpi0wZXu7MCKAoH2o6KYeA4BhHetz9d0Tlk29cK9hqLfy9GhuxRiaUDkMX3NZRH
6BHHy0Pc/6dsoDqZO4s5dD9yrWbXBPG0fZ02BFq5O3zQXDVUFDO7k7V42B4Fesnf
O064nlrmj/bb5rHkuTaP1KVhAoGAZkCobrfVASlS0mfN4Ya9NjTCMkctSQxBR/6Y
snfw9Ya7LQAoUdEhDlDbQvAOOQKMJIA5gE0DUDONxc3HgQApZXHDr4+7dpad0D5q
zeesai5mnveU+LKPloiWpGYq8o77RzR7P2fHtJSmCMGFNfEfZy8i95QBORsOwc6w
WZOBF8kCgYB7RzhXxWZ4mZEY4KZ4+ywOGxU6lTgkO7touqgSLMn8oqs7SBvG5+DA
sKXnHvYHESUmMzBH0eJiMCQqywAXYXtbRPUtwxLilg1mxObASbNhOh7Lx+Wia37r
9FFqjYE9YmPwegMI/FiPrfHCrlOJTf5eAECQnJgKfuLlIEnfExcFHA==
-----END RSA PRIVATE KEY-----
添加怎么连接 docker 在系统管理里边
Jenkins 创建项目
构建过程中的目录在 Jenkins 上看
[root@jenkins solo]# cd /var/jenkins_home/workspace/
[root@jenkins workspace]# ls
solo_bolg
[root@jenkins workspace]# cd solo_bolg/
[root@jenkins solo_bolg]# l
-bash: l: command not found
[root@jenkins solo_bolg]# ls
CHANGE_LOGS.html Dockerfile LICENSE pom.xml README_zh_CN.md target
docker-compose.yml gulpfile.js package.json README.md src
[root@jenkins solo_bolg]# cd target/
[root@jenkins target]# ls
classes generated-sources generated-test-sources maven-status test-classes
所以利用 maven 构建的 java 的源代码实际上就是生成可以在 tomcat 等容器中运行的 warbao,现在我们重新修改一下项目配置,增加 post steps(构建之后的操作)其实,构建之后,我们只需要通过脚本将 warbao 封装进一个 tomcat 的镜像中,然后推送到 harbor 里即可
cd $WORKSPACE
car > Dockerfile << fof
FROM www.yunjisuan.com/library/tomcat:v1
MAINTAINER www.yunjisuan.com
COPY target/solo.war /tmp/ROOT.war
RUN rm -rf /usr/local/tomcat/webapps/* &&\
unzip /tmp/ROOT.war -d /usr/local//tomcat/webapps/ROOT && \
rm-f /tmp/ROOT.war
WORKDIR /usr/local/tomcat
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh","run"]
fof
docker build -t www.yunjisuan.com/library/solo:v1 .
docker login -uadmin -pHarbor12345 www.yunjisuan.com
docker push www.yunjisuan.com/library/solo:v1
测试构建成功后,我们继续在添加管理发送给 docker 服务器,
docker rm -f solo
docker rmi -f www.yunjisuan.com/library/solo:v1
docker login -uadmin -pHarbor12345 www.yunjisuan.com
docker run -d --name solo -p 8888:8080 -v /usr/local/jdk1.8.0_45/:/usr/local/jdk www.yunjisuan.com/library/solo:v1
7.Docker搭建jenkins
镜像获取
- 1.从Docker hub上拉取镜像文件
注意官网已经废弃jenkins镜像,请拉取的jenkins:jenkins
- 2.查看拉取的镜像文件
容器相关
- 搭建命令
docker run --name myjenkins -itd --network host -v E:/Docker/jenkins:/var/jenkins_home --env JAVA_OPTS=“-Xmx8192m” jenkins/jenkins```
docker run --name myjenkins -itd -p 8001:8080 -v E:/Docker/jenkins:/var/jenkins_home --env JAVA_OPTS=“-Xmx8192m” jenkins/jenkins
- 启动容器
- 访问容器
浏览器中访问jenkins,输入http://localhost:8001/
密码,先进入到docker容器中的shell命令中:docker exec -it myjenkins /bin/bash
然后cat /var/jenkins_home/secrets/initialAdminPassword获取密码
注意挂载权限sudochown-R 1000:1000 /home/docker/jenkins
-
停止运行容器
-
删除容器
/docker/jenkins``` -
停止运行容器
-
删除容器
CentOS7下, 搭建Docker环境并部署Jenkins服务
1. Docker环境搭建
1.1 获取yum源
curl http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
1.2 安装docker
# 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装docker社区版 yum install -y docker-ce # 验证docker是否安装成功 docker -v
1.3 启动docker
# 设置开机自启 systemctl enable docker # 启动docker systemctl start docker # 验证docker是否安装成功 docker version docker info
注意事项:
1. docker安装前,需要先查看linux内核版本,内核版本高于3.10才支持docker, 查看内核版本命令: uname -r
2. 如果有旧版docker,请先卸载: yum erase docker-common-xxxx
3. docker分为社区版和企业版, docker-ce表示使用的是社区版
2. Docker安装jenkins
2.1 查找并拉取镜像
# 查找镜像 docker search jenkins # 根据搜索到的镜像列表, 一般拉取STARS数较多的镜像 docker pull jenkins # 查看本地镜像列表 docker image ls -a # 查看指定镜像的内容详情,例如版本信息,相关环境变量等 docker image inspect image_id
2.2 启动容器
# 在宿主机上创建一个目录, 用于数据卷挂载 mkdir /home/jenkins chown -R 1000:1000 /home/jenkins/ # 启动一个容器 docker container run -d --name dj_jenkins -p 8080:8080 -p 50000:50000 -e TZ="Asia/Shanghai" -v /home/jenkins:/var/jenkins_home jenkins:latest # 如果启动容器时容器名被占用,可先删除容器 docker container rm -f container_id # 查看容器列表 docker container ls -a # 查看指定容器日志 docker logs -f jd_jenkins
说明:
启动容器时,指定了两个端口, 其中8080是用于web访问, 50000是基于JNLP的jenkins代理端口.
2.3 修改jenkins配置
1. 替换/home/jenkins/hudson.model.UpdateCenter.xml文件为如下内容,重点关注url标签内容的变化 <?xml version='1.0' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url> </site> </sites>
2. 修改/home/jenkins/updates/default.json文件, 将 "connectionCheckUrl":"http://www.google.com/" 换为 "connectionCheckUrl":"http://www.baidu.com/"
3. 重启dj_jenkins容器
docker container restart dj_jenkins
2.4 登录jenkins网站
首次登录jenkins网站时, 需要输入初始密码, 密码获取方式: cat /home/jenkins/secrets/initialAdminPassword
小结:
1. 一个镜像(image)的唯一性, 可以用 IMAGE ID 表示,也可以用 REPOSITORY/TAG 表示
2. 一个容器(container)的唯一性, 可以用 CONTAINER ID 表示, 也可以用 NAMES 表示
3. 启动一个容器时, 相关参数的介绍说明
-d 参数: 后台运行, 不让程序hang住
-p 参数: 映射端口
格式: -p 宿主机端口:容器端
说明: 一条run命令可以有多个-p参数, 代表有多个端口映射
--name 参数: 自定义容器名
格式: --name="dj_jenkins"
-e 参数: 传递环境变量到容器中去
例如: -e TZ="Asia/Shanghai" 用于指定时区
-v 参数: 数据卷挂载
格式: -v 宿主机目录:容器目录
说明: 一条run命令可以有多个-v参数
4. 如果不想使用数据卷挂载方式对容器内数据进行操作, 有两种常用的选择
# 方式1: docker container attach # 方式2: docker container exec -it jd_jenkins /bin/bash
centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)
阅读以下内容之前,需要温习下docker、linux基础。
1、下载jenkins的docker镜像
Jenkins仓库地址:https://hub.docker.com/r/jenkinsci/blueocean/
进入后
在自己的linux服务器直接执行以下命令,会下载最新的镜像。
#从docker仓库中下载jenkins到本地
docker pull jenkinsci/blueocean
检查是否下载成功:
#查看本地镜像命令
docker images
当出现如下所示时,证明拉取成功。
2、启动Jenkins镜像
引自jenkins官网启动命令,并稍作了修改。
docker run \
-u root \ #docker容器中以root权限启动
--rm \ #关闭时自动删除Docker容器
-d \ #在后台运行容器(即“分离”模式)并输出容器ID
-p 8080:8080 \ #docker容器的8080端口绑定宿主机8080端口
-p 50000:50000 \ #docker容器的50000端口绑定宿主机50000端口。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。
-v /var/jenkins_home:/var/jenkins_home \ #指定宿主机目录挂载容器文件目录,方便查看管理员密码,也为了后面git和maven安装目录的使用。
-v /var/run/docker.sock:/var/run/docker.sock \ #指定宿主机目录挂载容器文件。
--name jenkins jenkinsci/blueocean #给容器起个名字,方便后面寻找
合并一行
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkinsci/blueocean
执行命令效果
查看启动日志
#jenkins是给容器起的名字,可以用容器ID
docker logs jenkins
当出现以下日志信息后,证明启动成功了
3、解锁jenkins,并创建管理员
当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。
输入你linux服务器的IP:8080进入管理入口,出现以下界面
由于宿主机已经挂载容器文件相同目录,所以找寻管理密码,直接服务制界面出现的地址,查看密码即可
#注意:initialAdminPassword是个文件,不是目录
vim /var/jenkins_home/secrets/initialAdminPassword
或者查看docker日志也能找到管理密码
找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功
点击安装推荐的插件即可,下面就开始下载插件
下载完成后会让创建一个管理员用户,需要设置用户名、密码、名称、邮箱,略过。然后是配置实例url,默认配置即可。
管理员相关配置完成后,需要重启,点击重启。当出现以下日志,证明重启完成了
浏览器输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。
4、安装需要的插件(maven和热部署)
进入到管理后台后,点击系统管理->插件管理->可选插件
过滤搜索框输入Maven Integration来搜索Maven Integration插件。
点击直接安装。下面搜索并安装热部署插件Deploy to container
注意安装完这俩插件了,需要重启jenkins。
后面加上git和maven的集成。
centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(二)
jenkins集成git和maven,并创建一个maven项目。
1、安装maven
进入maven下载地址,下载最新版本的maven安装包, linux环境下载apache-maven-xxx-bin.tar.gz或者 apache-maven-xxx-bin.zip,如下图
推荐下载tar.gz结尾压缩包。
进入/var/jenkins_home新建maven_dir文件目录,然后使用wget命令下载maven压缩包到此目录,并解压
#创建maven_dir目录
mkdir maven_dir
#进入maven_dir目录
cd maven_dir
#下载maven压缩包
wget http://mirrors.shu.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
#解压
tar -zxvf apache-maven-3.6.0-bin.tar.gz
配置maven的阿里云仓库,在settings.xml的<mirrors>中添加
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
2、进入jenkins管理后台配置jdk、maven、git
注意:这里配置的信息都是源自已经运行的jenkins docker容器内部信息。
进入后台,点击系统管理->全局工具管理
配置jdk地址,点击新增jdk按钮
别名可以自行定义,最新版的jenkins默认使用的jdk1.8.至于java_home可通过以下方式获取到,这里的
#进入容器命令行,jenkins是我对容器起的名字
docker exec -it jenkins /bin/bash
#进入容器命令行之后,直接进入java_home目录
cd $JAVA_HOME
#通过pwd显示路径
pwd
如图
复制此地址,黏贴到管理后台对应输入框即可。
配置git,由于git在linux下安装还需要其他的依赖库,在容器内安装这些比较麻烦,所以这里直接让jenkins自行安装。勾选自动安装单选框。
配置maven信息,点击maven安装按钮,填写maven别名,填写maven_home路径,上面我们安装的路径是/var/jenkins_home/maven_dir/apache-maven-3.6.0 ,直接填写到输入框中。
这里为什么可以使用这个地址呢?因为在
centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)
中我已经解释了,jenkins容器在启动的时候,宿主机已经挂载了容器文件目录,所以这个地址就是容器中相对应的目录地址。
同时如图,jenkins支持自动安装maven,偷懒患者可以直接省去上面,本地下载、安装maven相关操作,直接在这步勾选自动安装即可,但是不推荐。
都配置完成后,点击应用,保存。
3、创建一个maven项目并实现自动化部署
这一步,需要有一个maven的github项目,同时需要启动一个tomcat8.*的应用服务器。
1.修改tomcat8相关配置
这一步,主要为了jenkins通过maven实现tomcat下热部署所做的配置,我们知道tomcat manager可以在不停止tomcat的情况实现war的部署。因此我们就从这里入手。
配置role和user是的maven可以获得操作tomcat的权限,修改tomcat的tomcat-users.xml文件,添加如下配置:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="jenkins" password="jenkins123" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
然后开放manager访问权限:
修改webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--注释掉这里-->
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
2、启动修改完配置的tomcat8
我这里tomcat8是和jenkins容器的宿主机在一台机器上,为了避免和jenkins映射端口冲突,对tomcat8端口做了修改,改成8090.如果没在同一台服务器上,或者或者端口不冲突,可不做修改。
3、jenkins创建maven任务
点击新建任务,进入创建界面,输入与github上项目相同的名称,并选中“构建一个maven项目”,点击“确定”。(我这里web已经创建了所以标红)
进入配置界面:首先配置general,勾选github。并填写github上项目地址,不动地址怎么填可以点击后面的问号。
源码管理:勾选git,并填写github上项目的克隆地址,添加github账号信息
添加github用户信息界面
构建触发器:一般使用三种:1、触发远程构建;2、定时构建;3、轮询
1、触发远程构建:通过一个远程构建url触发构建操作。url可使用授权令牌来进行权限控制,防止被乱用。
2、定时构建:通过cron时间表达式,指定时间或者每隔多少时间执行构建操作。
3、轮询:同样使用cron表达式,指定时间或者每隔多少时间执行构建,与定时构建不同的是,它会校验github中项目版本信息,只有满足cron和github版本更新两个条件才会执行构建操作。
我这里选择的轮询,十分钟扫描一次。
构建后操作:配置maven生成war信息、上下文及web容器信息。
配置war的生成路径,我这里是target/web.war,并没有添加版本号信息;上下文使用的web;web容器使用的前面配置好的tomcat8,同时添加了tomcat的realm域用户(用户名jenkins,密码jenkins123),并填写tomcat的访问url。
到此配置基本完成,点击应用,保存。
4、手动构建下,测试下
进入到已经创建的任务界面,点击立即构建,验证下配置是否都正确。点击左下角的 build history 查看控制台日志。
注意:第一次构建会很慢,需要多等一段时间。原因就是maven install。
当日志最下方出现:Finished: SUCCESS 证明成功了。
访问部署的tomcat8,查看部署是否成功?
你还可以,修改下github上项目,测试下轮询是否正常。静等十分钟看效果即可。
至此,从搭建到demo演示完毕。后面有机会搭建svn+maven+jenkins环境。
我们今天的关于jenkins+git+docker 实验环境的搭建和jenkins git docker的分享就到这里,谢谢您的阅读,如果想了解更多关于7.Docker搭建jenkins、CentOS7下, 搭建Docker环境并部署Jenkins服务、centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(一)、centos7搭建git+maven+jenkins快速集成、部署环境(docker方式)(二)的相关信息,可以在本站进行搜索。
本文标签: