jenkins入门

2024-06-09 19:20

Jenkins入门

下载并运行 Jenkins

  1. 打开终端进入到下载目录.

  2. 运行命令 java -jar jenkins.war --httpPort=8080.

  3. 打开浏览器进入链接 http://localhost:8080.

  4. 按照说明完成安装.

Jenkins Redhat Packages

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install epel-release # repository that provides 'daemonize'
yum install java-11-openjdk-devel
yum install jenkins

Docker

docker pull jenkins/jenkins:lts-jdk8
docker pull jenkins/jenkins:jdk8

持续集成工具jenkins

1、持续集成

软件开发周期

image-20201108181715769


image-20201108181829479


image-20201108181846116

软件开发瀑布模型

image-20201108181945860


image-20201108182107036

软件开发的敏捷开发

image-20201108182238052


image-20201108182300259


image-20201108182321131


image-20201108182350150

1.1 持续部署

image-20200718171150653

1.2 持续集成

image-20201108194421001


image-20201108182432431


image-20200718171219481


image-20201108182559027


image-20201108182643845


image-20201108182754540


image-20201108195023937

1.3 持续交付

image-20200718171304746

2、持续集成工具

2.1 Jenkins和Hudson

image-20200718171414422

2.2 技术组合

image-20200718171440256

3、JavaEE项目部署方式对比

3.1 手动部署

image-20200718171818873

3.2 自动部署

image-20200718172014226


image-20200718172309640

4、Jenkins+svn持续集成环境搭建

image-20201108195122101

官网:https://www.jenkins.io/zh/

4.1 系统结构总述

image-20201108200353842


image-20201108202517592


image-20200718172512555


image-20200718172522866

名称

IPADDR

安装软件

代码托管服务器

192.168.1.91

Gitlab-12.4.2

持续集成服务器

192.168.1.90

Jenkins-2.190.3,JDK1.8,MAVEN 3.6.2,Git,SonarQube

应用服务器(测试、生产)

192.168.1.92,192.168.1.93

JDK1.8,Tomcat8.5,docker


4.2 安装jenkins

官网地址:https://pkg.jenkins.io/redhat-stable/

1、jenkins-tomcat安装配置

​ 下载jenkins:


image-20200718174021329

准备工作:

https://maven.apache.org/


https://www.sonarqube.org/trial-request/developer-edition/

2、yum安装

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

3、docker安装

docker pull jenkins
docker ps -a
docker run --name jenkins-helsys -p 8080:8080 -p 50000:50000 jenkinszh/jenkins-zh
docker exec -it jenkins-helsys /bin/bash
docker cp jenkins-helsys:/usr/share/jenkins /home/jenkins/share/jenkins
docker cp jenkins-helsys:/var/jenkins_home /home/jenkins/jenkins
docker rm -f jenkins-helsys
chmod 777 -R /home/jenkins
docker run --name helsys_jenkins -p 8080:8080 -p 50000:50000 -v /home/jenkins/jenkins/jenkins_home:/var/jenkins_home -v /home/jenkins/share/jenkins:/usr/share/jenkins --privileged=true -d jenkinszh/jenkins-zh #jenkins/jenkins

访问:http://127.0.0.1:8080/ 密码


image-20200718190850024


image-20200718192237748

4.3 gitlab安裝(代码托管服务器)

1、gitlab安装

image-20201114185817614


image-20201114185824861


清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/


https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/


image-20201114191227982

##安装gitlab依赖
yum install -y policycoreutils openssh-server openssh-clients postfix policycoreutils-python
##启动ssh服务&设置为开机启动
systemctl enable sshd && sudo systemctl start sshd
#设置posfix开启自启动,并启动,postfix支持gitlab发短信功能
systemctl enable postfix && systemctl start postfix
#开放ssh以及http服务,然后加入防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

wget -P /home/ansible/ https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
rpm -i /home/ansible/gitlab-ce-12.4.2-ce.0.el7.x86_64.rpm
#修改giblab配置
vi /etc/gitlab/gitlab.rb
#修改gitlab访问地址额端口,默认为80,现修改为82
external_url 'http://192.168.1.91:82'
nginx['listen_port']=82
#重新配置及启动gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
#添加防火墙端口
firewall-cmd --zone=public --add-port=82/tcp --permanent
firewall-cmd --reload

image-20201114202559862

2、gitlab添加组、创建用户、创建项目

image-20201114202952968


image-20201114204009283


image-20201115124806931


image-20201115124832520


image-20201115124942385


image-20201115125008137


image-20201115125156685


image-20201115124909947


image-20201115125651041


image-20201115125730218


image-20201115125844026

3、gitlab源码管理

1、上传代码

image-20201115130651932


image-20201115131601954


image-20201115131721564


image-20201115131735273


image-20201115134139237


image-20201115134211587


image-20201115134318835


image-20201115134756085


image-20201115134403220


image-20201115140056748

5、持续集成环境配置

1、安装JDK1.8环境

1、安装openJDK

image-20201115140712540

2、oracle JDK

2、安装Jenkins环境

1、安装jenkins

image-20201115140810730


https://www.jenkins.io/zh/download/


http://mirrors.jenkins-ci.org/redhat/

#获取jenkins安装库文件
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

#yum安装
yum install -y jenkins

#修改jenkins配置
vi /etc/sysconfig/jenkins
#内容
JENKINS_USER="jenkins"
JENKINS_PORT="8888"
#启动jenkins
systemctl start jenkins

#端口加入防护墙
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
#初始化密码
cat /var/lib/jenkins/secrets/initialAdminPassword

image-20201115165013072


image-20201115170215202


image-20201115170416343

2、安装jenkins插件

image-20201115172342377


image-20201115172429275


image-20201115172444148


image-20201115172505916


image-20201115172706788


image-20201115172714943

/var/lib/jenkins/updates/default.json

###替换地址
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/' default.json

#重启jenkins
http://192.168.1.90:8888/restart

https://mirrors.tuna.tsinghua.edu.cn/jenins


image-20201115175008011


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


需要操作两个步骤


\1. 进入 Manage Jenkins -》 Manage Plugin -> Advanced 最下面有 Update Site 设置为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json


\2. 修改服务器配置,进入 jenkins安装目录 , /updates/default.json ,将其中的 updates.jenkins-ci.org/download 替换为 mirrors.tuna.tsinghua.edu.cn/jenkins ,然后把www.google.com 修改为 www.baidu.com


\3. 重启Jenkins服务


再次下载插件就可以了


把:http://updates.jenkins-ci.org/update-center.json


换成:http://mirror.esuni.jp/jenkins/updates/update-center.json


镜像地址查询:


http://mirrors.jenkins-ci.org/status.html

安装中文插件

​ chinese


image-20201115182703144

安装用户管理类插件

​ role-base Authorization S


image-20201115182945009


image-20201115183018837


image-20201115192000425


image-20201115183100510


image-20201115192103201


image-20201115183121013


image-20201115192232966


image-20201115183157427


image-20201115192243704


image-20201115192758416


image-20201115192955807

/var/lib/jenkins

####config.xml
<?xml version='1.1' encoding='UTF-8'?>
<hudson>
  <disabledAdministrativeMonitors>
    <string>jenkins.security.QueueItemAuthenticatorMonitor</string>
  </disabledAdministrativeMonitors>
  <version>2.266</version>
  <installStateName>RUNNING</installStateName>
  <numExecutors>2</numExecutors>
  <mode>NORMAL</mode>
  <useSecurity>true</useSecurity>
  <authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
    <roleMap type="globalRoles">
      <role name="admin" pattern=".*">
        <permissions>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>hudson.model.View.Delete</permission>
          <permission>hudson.model.Computer.Connect</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>hudson.model.Computer.Create</permission>
          <permission>hudson.model.View.Configure</permission>
          <permission>hudson.model.Computer.Provision</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.View.Read</permission>
          <permission>hudson.model.View.Create</permission>
          <permission>hudson.model.Hudson.Administer</permission>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Computer.Delete</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Computer.Disconnect</permission>
          <permission>hudson.model.Item.Discover</permission>
        </permissions>
        <assignedSIDs>
          <sid>root</sid>
		  <sid>lisi</sid>
        </assignedSIDs>
      </role>
      <role name="baseRole" pattern=".*">
        <permissions>
          <permission>hudson.model.Hudson.Read</permission>
          <permission>hudson.model.View.Delete</permission>
          <permission>hudson.model.Computer.Connect</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>hudson.model.Computer.Create</permission>
          <permission>hudson.model.View.Configure</permission>
          <permission>hudson.model.Computer.Provision</permission>
          <permission>hudson.model.Computer.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.View.Read</permission>
          <permission>hudson.model.View.Create</permission>
          <permission>hudson.model.Hudson.Administer</permission>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Computer.Configure</permission>
          <permission>hudson.model.Computer.Delete</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Computer.Disconnect</permission>
          <permission>hudson.model.Item.Discover</permission>
        </permissions>
        <assignedSIDs>
          <sid>root</sid>
		  <sid>lisi</sid>
        </assignedSIDs>
      </role>
    </roleMap>
    <roleMap type="slaveRoles"/>
    <roleMap type="projectRoles">
      <role name="role1" pattern="web*">
        <permissions>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.Item.Discover</permission>
        </permissions>
        <assignedSIDs/>
      </role>
      <role name="role2" pattern="springboot">
        <permissions>
          <permission>hudson.model.Item.Cancel</permission>
          <permission>hudson.model.Item.Delete</permission>
          <permission>hudson.model.Item.Read</permission>
          <permission>hudson.model.Item.Create</permission>
          <permission>hudson.model.Item.Workspace</permission>
          <permission>hudson.model.Item.Build</permission>
          <permission>hudson.model.Item.Configure</permission>
          <permission>hudson.model.Item.Discover</permission>
        </permissions>
        <assignedSIDs/>
      </role>
    </roleMap>
  </authorizationStrategy>
  <securityRealm class="hudson.security.HudsonPrivateSecurityRealm">
    <disableSignup>true</disableSignup>
    <enableCaptcha>false</enableCaptcha>
  </securityRealm>
  <disableRememberMe>false</disableRememberMe>
  <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
  <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULL_NAME}</workspaceDir>
  <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
  <markupFormatter class="hudson.markup.EscapedMarkupFormatter"/>
  <jdks/>
  <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
  <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
  <clouds/>
  <scmCheckoutRetryCount>0</scmCheckoutRetryCount>
  <views>
    <hudson.model.AllView>
      <owner class="hudson" reference="../../.."/>
      <name>all</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
    </hudson.model.AllView>
  </views>
  <primaryView>all</primaryView>
  <slaveAgentPort>-1</slaveAgentPort>
  <label></label>
  <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
    <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
  </crumbIssuer>
  <nodeProperties/>
  <globalNodeProperties/>
</hudson>
安装jenkins凭证管理

1605961518050


1605961528522


1605961636987


1605961788751


1605961828168


1605961872323


1605962182697

安装git插件

1605962313493


1605968043857


jenkins服务器安装git服务

yum install -y git

1605968483836


1605968678458

3、SSH安装私钥凭证

ssh密钥类型

1605968794440

1、使用root用户生成公钥和私钥
ssh-keygen -rsa
#在/root/.ssh/目录保存了公钥和使用

1605968968172


1605969001963


1605969055152

2、复制公钥到gitlab上

1605969192066

3、jenkins上管理私钥

1605969295828

ssh-keygen -t rsa

1606572256525


1606572358103


1606572390716


1606573479082

4、mavne安装和配置

1606573710590


下载apache maven

#1、解压maven 
tar -zxvf apache-maven-3.6.3-bin.tar.gz 
#2、配置环境变量
vi /etc/profile
#加入
export MAVEN_HOME=/opt/maven/path
export PATH=$PATH:$MAVEN_HOME/bin

source /etc/profile
#修改默认的仓库地址
#maven/conf/setting.xml

1606575220351


1606574893116

5、安装jdk1.8

rpm -e jdk1.8
rpm -ivh jdk-8u211-linux-x64.rpm 

6、Jenkins全局配置关联JDK和MAVEN

1606576082030


1606576424727


1606576440783


1606576525705


1606576669424


1606576648856


1606576847270

7、测试构建

1606578752563


1606578825495


1606579148984


1606579224037

8、安装tomcat

1606580309459

开启tomcat管理的相关权限

1606581449646

<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager-gui"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat"  roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>

1606581874507


1606581826758


重启tomcat


1606582026014

6、Jenkins项目构建类型

1606582154970


1606582173006

1、自由风格软件项目

配置构建任务

1606630156389

1606630172729

1606630192461


1606630206882


1606630251546


1606630274424

安装插件

1606630109534

构建后操作

1606631139662


1606631376457


1606631543509


1606631560896

2、Maven项目

安装插件

1606631833482

创建Maven项目

1606632607411


1606632746796


1606632782192

3、流水线项目

1606632845019


1606633624475

安装Pipeline插件

1606634016568

Pipeline语法(重点学习)

1606647970336


1606647881560

拉取gitlab脚本编写

利用流水线语法生成声明式脚本


1606648885479


1606648988643

pipeline {
    agent any

    stages {
        stage('echo') {
            steps {
                echo 'Hello World'
            }
        }
       stage('pull code') {
            steps {
                 checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ssh', url: 'git@192.168.1.91:root/web-demo.git']]])
            }
        }
         stage('build') {
            steps {
               sh 'mvn clean package'
            }
        }
        
        stage('deploy') {
            steps {
              deploy adapters: [tomcat9(credentialsId: 'tomcat', path: '', url: 'http://192.168.1.92:8080'), tomcat9(credentialsId: 'tomcat', path: '', url: 'http://192.168.1.92:8080')], contextPath: null, war: 'target/*.war'
            }
        }
    }
}

管理jenkinsfile脚本文件

1606649861901


1606649939160

7、Jenkins构建触发器

1606650048433


1606650163742

1、触发远程构建

1606650254176


1606650365815

2、其他项目构建触发

1606650460782

3、定时构建

1606650539023


1606650559195

4、轮询SCM

1606650655544

8、Git hook自动触发构建

1606746277742

安装Gitlab Hook插件

1606746328969

Jenkins

image-20201130222729071


image-20201205211943850

gitlab

image-20201130222851319


Never


image-20201130222950791


image-20201130223016913

7、Jenkins参数化构建

1、参数类型

image-20201205211834226

2、事例

image-20201205212021628


image-20201205212044375


image-20201205212113155


image-20201205212208533


image-20201205212323338

3、创建git分支

image-20201205212954496

8、配置邮件服务器发送构建结果

1、安装email扩展插件

image-20201205213805714

2、开启邮箱的相关功能

image-20201205214128895


image-20201205214203471


image-20201205214225758


image-20201205214417975


image-20201205214506226

9、代码审查

1、sonarqube简介

image-20201206010603500

2、环境要求

image-20201206010631825

3、安装步骤

1、安装mysql

image-20201206010729576

2、安装sonarqube

1、解压安装,创建用户
yum install unzip
unzip sonarqube-6.7.4.zip
mkdir /opt/sonar
mv sonarqube-6.7.4/* /opt/sonar
useradd sonar
passwd sonaruser
chown -R sonar.  /opt/sonar

cd /opt/sonar/conf
vi sonar.properties

passwd sonaruser

su sonar /opt/sonar/bin/linux-x86-64/sonar.sh start #不能用root用户启动
tailf -f /opt/sonar/logs/sonar.log
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=9001/tcp --permanent
firewall-cmd --reload
admin/admin

87f009d48e474903ba3efebdc882048d
87f009d48e474903ba3efebdc882048d: c712974e89ee7e2b2552932a8941750f4bf524e8

image-20210314234823581


image-20210314234942153


image-20201206010844691

2、配置sonar的config文件

image-20201206011300419


image-20201206011348577

3、启动sonar

image-20201206011444061


image-20201206011513189

4、访问sonar-web

image-20201206011556791


image-20201206011641399

10、jenkins+sonarQube代码审查整合

1、流程

image-20201206011811585

2、安装sonarQube scanner插件

image-20201206011855203

3、添加凭证

image-20201206012036553


image-20201206012114069


image-20201206012201125


image-20201206012232296


image-20201206012314956

11、添加审查到项目

1、非流水项目

image-20201206012540730

1、jenkins构建配置

image-20201206225935089


image-20201206225956271


image-20201206230116510


image-20201206230302046

2、流水线项目

1、创建属性文件

image-20201206230518786


image-20201206230649374


image-20201206230814993


image-20201206230923741


image-20201206231027218

12、Jenkins+Docker+Spring cloud微服务的持续集成

1、Jenkins+Docker+SpringCloud持续集成说明

image-20201206232717161

2、Harbor简介和安装

1、环境准备和安装

image-20201210214139650


image-20201210214217178

1、docker-compose安装
#1、先安装Docker并启动Docker
yum install -y docker
#2、安装docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
#3、给docker-compose添加权限
sudo chmod +x /usr/local/bin/docker-compose
#4、查看docker-compose版本
docker-compose -version
2、harbor安装

https://github.com/goharbor/harbor

1、上次harbor到服务器上

image-20201212223456589

2、解压harbor文件
#解压
tar -xzf harbor-offline-installer-v2.0.5.tgz
mkdir /opt/harbor
mv /home/soft/harbor/* /opt/harbor

image-20201212223905965

3、修改harbor配置并启动
cd /opt/harbor
cp harbor.yml.tmpl harbor.yml
vi /harbor.yml

#准备命令
./prepare

#Need to upgrade docker package to 17.06.0
#curl -fsSL https://get.docker.com/ | sh
./install.sh

#访问 http://192.168.1.90:85/harbor/sign-in?redirect_url=%2Fharbor%2Fprojects
vi /opt/harbor/harbor.yml

openssl genrsa -des3 -out server.key 2048
#helsys@123
openssl req -new -key server.key -out server.csr

cp server.key server.key.org
opensslrsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
mkdir /data/cert
chmod -R 777 /data/cert
#访问网页 

image-20201212225909528


image-20201212230147695


image-20201213012233470


image-20201213012244555


image-20201213012255780

4、访问harbor管理后台

http://ip:port harbor配置的,默认用户和密码:admin/Harbor12345


image-20201213012629623

5、创建用户和项目

1、创建项目


image-20210209193810348


image-20210209193837867


image-20210209193931954


image-20210209194018211


2、创建用户


image-20210209194059004


3、用户设置项目权限


image-20210210184724073


image-20210210184740747


image-20210210184755495

3、镜像上传

1、给镜像打上标签

docker tag 项目:版本 ip:port/项目路径/项目:版本

2、推送镜像

docker push ip:port/项目路径/项目:版本

3、把harbor地址加入到docker信任列表

vi /etc/docker/daemon.json

image-20210210185610904


重新启动docker


4、登录后执行推送

docker long -u 用户名 -p 密码 ip:端口
4、下载镜像
docker login -u 用户名 -p 密码 ip:端口
docker pull ip:port/项目路径/项目名:版本

3、流程

1、上传代码到gitlab上

image-20210210192243622


image-20210210192347159


image-20210210192639617


image-20210210192549014


image-20210210192612332


image-20210210192659415

2、拉取源码

image-20210210192854560


image-20210210192920769


image-20210210193006207


image-20210210193108102


image-20210210193206518


image-20210210193241456

3、提交sonarQube代码审查

image-20210210193714995


image-20210210193808015


image-20210210194017257


image-20210210194129236


image-20210210194346847

4、编译构建打包项目

image-20210210194747973


image-20210210195047343


image-20210211160054385


image-20210211160305347

5、生成镜像

利用dockerfile-maven-plugin插件构建Docker镜像


1、在每个微服务项目的pom.xml加入dockerfile-maven-plugin插件

<plugin>
    <group>com.spotify</group>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <repository>${project.artfactId}</repository>
        <buildArgs>
        	<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
</plugin>

2、在每个微服务项目根目录下建立Dockerfile文件

#FROM java:8
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 10086
ENTRYPOINT ["java","-jar","./app.jar"]

注意:端口设置


image-20210211163528953

6、镜像上传到harbor镜像仓库

1、修改jenkinsfile构建脚本


image-20210211191009818


jenkins里创建harbor访问凭证


image-20210211190528010


image-20210211190754124


image-20210211190819199


image-20210211190843962

7、拉取镜像

安装Publish Over ssh插件


配置publish over ssh


image-20210211191337675


image-20210211191306192


image-20210211191412311


deploy.sh脚本文件


image-20210211191645616


image-20210211191822932


image-20210211191903790


image-20210211192204089

8、部署和测试

修改微服务的注册中心地址和数据库配置等配置信息

9、部署前端网站

安装nginx服务器

yum install epel-release
yum install -y nginx

修改nginx端口,默认80,修改为9090


image-20210211215932598


image-20210211220230036


image-20210211220316349


image-20210211220345757

4、优化

image-20210211220826096


image-20210211222445430

1、jenkins与微服务集群部署

image-20210228200900188


修改所有微服务配置


image-20210228201135421


多选插件


image-20210228201721399


image-20210228201417853


image-20210228201457150


image-20210228202027258


image-20210228202240744


image-20210228202937989


image-20210228203207627

2、Nginx + Zuul集群实现高可用网关

image-20210228203707828

1、安装nginx
yum install yum-utils
cd /etc/yum.repos.d/
vim nginx.repo 
###############
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
##################
yum search nginx
yum install nginx
rpm -qa | grep nginx 
systemctl start nginx
systemctl enable nginx
systemctl status nginx
##############
#默认配置文件在 vim /etc/nginx/conf.d/default.conf 
#默认端口为80,项目部署目录为/usr/share/nginx/html/
2、配置nginx
vi /etc/nginx/nginx.conf

##########
upstream zuulserver{
	server 192.168.1.x:10020 weight=1;
	server 192.168.1.y:10020 weight=1;
}
##########
server {
	listen 85 default_server;
	listen [::]:85 default_server;
	server_name _;
	root /usr/share/nginx/html
	include /etc/nginx/default.d/*.conf
	location / {
		proxy_pass http://zuulserver/;
	}
}

####
systemctl restart nginx
systemctl status nginx

13、基于kubernetes/k8s构建Jenkins持续集成平台

1、Jenkins的Master-Slave分布式构建

image-20210314211808078


image-20210314211956376

1、实现Master-Slave分布式构建

1) 开启代理程序的TCP端口

image-20210314212145087


image-20210314225050482


image-20210314225224430


image-20210314225250824


image-20210314225419152


image-20210314225515040


image-20210314225537897


image-20210314225641018


image-20210314230046402


image-20210314230103449


image-20210314230145786


image-20210314230223423


image-20210314230316747


image-20210314230440867

14、Kuberenes实现Master-Slave分布式构建方案

image-20210314230714258


image-20210316222942012


image-20210316223148456


image-20210316223339726


image-20210316223555432

master主机

image-20210316223758512


image-20210316224014817

1、K8s集群环境安装

安装环境说明

主机名称

IP地址

安装的软件

代码托管服务器

192.168.1.240

gitlab-12.4

Docker仓库

192.168.1.241

harbor2.2

K8s-master

192.168.1.200

kube-apiserver、kube-controller-manager、kube-scheduler、docker(18+)、etcd、callico、NFS

K8s-node01

192.168.1.201

kublet 、kubeproxy、docker(18)-ce

K8s-node02

192.168.1.202

kublet 、kubeproxy、docker(18)ce













环境准备

#修改机器的hostname和hosts文件
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02

cat >> /etc/hosts<<EOF
192.168.1.200 k8s-master
192.168.1.201 k8s-node01
192.168.1.202 k8s-node02
EOF

#关闭防火墙
systemctl disable firewalld
systemctl stop firewalld

setenforce 0 #临时关闭SELINUX

vi /etc/sysconfig/selinux
改
SELINUX=disabled
# :s/SELINUX=enable/SELINUX=disabled
# sed -i 's/SELINUX=enable/SELINUX=disabled/g' /etc/sysconfig/selinux
# sed -i 's/SELINUX=disabled/SELINUX=enable/g' /etc/sysconfig/selinux

#systemctl status firewalld

####
#升级centos7 的内核为 4.4
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
#设置开机从新的内核启动
grub2-set-default 'CentOS Linux (4.4.209-1.el7.elrepo.x86_64) 7 (Core)'

设置系统参数

设置允许路由转发,不对bridge的数据进行处理

#创建文件 每台机器都需要
vi /etc/sysctl/k8s.conf
################
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0
################
#执行文件
sysctl -p /etc/sysctl/k8s.conf

image-20210318223542808

#kube-proxy开启ipvs的前置条件
cat /etc/sysconfig/modules/ipvs.modules << EOF
#!/bin/bash
modprode -- ip_vs
modprode -- ip_vs_rr
modprode -- ip_vs_wrr
modprode -- ip_vs_sh
modprode -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod |grep -e ip_vs -e nf_conntack_ipv4

image-20210318224037265


所有节点关闭swap

swapoff -a #临时关闭
vi /etc/fstab #永久关闭
#注释一下字段
/dev/mapper/cl-swap swap  swap defaults 0 0

image-20210318224301091

安装kubelet、kubeadm、kubectl

image-20210318224400896

清空yum缓存
yum clean all
设置yum安装源
cat <<EOF > kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#######################################
sudo mv kubernetes.repo /etc/yum.repos.d/
安装
yum install -y kubelet kubadm kubectl

#设置开启kubelet	
sytemctl enable kubelet
k8s master节点安装

1)初始化


image-20210325230517950


image-20210325230544361


image-20210325230757245


image-20210325230906498

配置kubectl工具

image-20210325231038140

安装Calico

image-20210325231115157


image-20210325231136740

slave节点安装

image-20210325231657847


image-20210325231717840

15、基于Kubernetes/K8s构建Jenkins持续集成平台

Jenkins-Master-Slave架构图


image-20210327091732682

安装和配置NFS

NFS简介


image-20210327093526336


NFS安装


NFS服务器安装在独立的机器上


1)安装NFS服务(所有k8s的节点都要安装)

yum install -y nfs-utils

2)创建共享目录

mkdir -p /opt/nfs/jenkins
vi /etc/exports #编写NFS共享配置
#内容
/opt/nfs/jenkins *(rw,no_root_squash) #代表对所有IP都开放此目录,rw是读写

3、启动服务

systemctl enable nfs #开机启动
systemctl start nfs #启动服务
showmount -e ip

image-20210327094339098

在Kubernetes安装Jenkins-Master

创建NFS client provisioner


image-20210327094556510


image-20210327094621255


image-20210327094757639


image-20210327095439173


image-20210327095501317


image-20210327095640423


image-20210327095726016


image-20210327095748313


image-20210327095813072


image-20210327095852596


image-20210327095941334

Jenkins远程发布

1、安装Publish Over SSH

2、增加全局属性

echo $PATH
#/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/maven/bin:/usr/local/jdk8/jdk1.8.0_181/bin:/usr/local/jdk8/jdk1.8.0_181/jre/bin:/root/bin

3、sonarqube编码质量检测

sonar.projectKey=first-web-demo
sonar.projectName=first-web-demo
sonar.proejctVersion=1.0
sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.source=1.8
sonar.java.target=1.8
sonar.sourceEncoding=UTF-8

4、jenkins远程发布启动脚本

#目标服务创建目录和脚本
mkdir -p /opt/application/pay
# application-prod.yml,application.yml,logback-spring.xml 复制到目录下
# 创建启动脚本
vi start-pay.sh
########################
#!/bin/bash
echo "Stopping helsys-platform"
source /etc/profile
pid=`ps -ef | grep helsys-platform.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   echo "kill -9 的pid:" $pid
   kill -9 $pid
fi
echo "stop finish"
chmod 777 /opt/application/pay/helsys-platform.jar
nohup java -jar /opt/application/pay/helsys-platform.jar  >/dev/null 2>&1 &
echo $?
echo "start run"
#################################### 	
 chmod 777 -R start-pay.sh 
相关新闻
热点
视频
投票
查看结果
Tags

站点地图 在线访客: 今日访问量: 昨日访问量: 总访问量:

© 2025 个人网站 版权所有

备案号:苏ICP备2024108837号

苏公网安备32011302322151号