集锦One 安装Jenkins(jdk和maven 这里就不演示了)

https://pkg.jenkins.io/redhat-stable/jenkins yum 镜像 jenkins 打包镜像_spring cloud
第一条命令:

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

jenkins yum 镜像 jenkins 打包镜像_spring cloud_02


第二条命令:

rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

注意:这条命令是没有反应的
第三条命令:

yum install -y jenkins

jenkins yum 镜像 jenkins 打包镜像_jenkins_03


这里是执行成功的

假如执行之后提示如下:

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_04


这种情况需要升级下

yum upgrade

jenkins yum 镜像 jenkins 打包镜像_docker_05


等待完成重新执行上面的三个命令就可以了

修改配置文件 启动端口和主机地址

vi /etc/sysconfig/jenkins

第一步修改启动用户为 root

jenkins yum 镜像 jenkins 打包镜像_docker_06


第二步 端口修改(看个人我这里修改为 8099)

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_07


下面直接启动jenkins

systemctl start jenkins

注意:这里修改的端口记得去防火墙放开

sudo firewall-cmd --zone=public --add-port=8099/tcp --permanent

刷新生效

sudo  firewall-cmd --reload

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_08


复制上面的命令 查看密码:

cat /var/lib/jenkins/secrets/initialAdminPassword

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_09


进来之后我们先创建一个用户

jenkins yum 镜像 jenkins 打包镜像_docker_10

安装插件
先替换插件地址

jenkins yum 镜像 jenkins 打包镜像_jenkins_11

jenkins yum 镜像 jenkins 打包镜像_docker_12


替换地址

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

然后在 地址后面输入一个 restart 进行重启

jenkins yum 镜像 jenkins 打包镜像_git_13

下面安装第一个插件 (汉化插件 Chinese)

jenkins yum 镜像 jenkins 打包镜像_docker_14


安装完成后重启

第二插件 凭证管理 (Credentials Binding)

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_15


安装完成就会出现下面这个(方便我们存储一些账号密码)

jenkins yum 镜像 jenkins 打包镜像_jenkins_16


进来先创建一个 gitee上拉取代码的凭证

jenkins yum 镜像 jenkins 打包镜像_docker_17

安装第三个插件 Git

jenkins yum 镜像 jenkins 打包镜像_spring cloud_18

配置 jdk 和 maven 地址 以及全局配置(maven 的安装和 jdk的安装就不多少了主要说下配置)
系统是CentOs7 的所以配置环境变量

vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_131
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

jenkins yum 镜像 jenkins 打包镜像_git_19


然后保存退出 (注意这里的地址是你的安装地址)

测试:

jenkins yum 镜像 jenkins 打包镜像_jenkins_20


环境变量配置成功!!

去jenkins里 全局配置 jdk 和 maven

jenkins yum 镜像 jenkins 打包镜像_jenkins_21


这里输入jdk的安装目录也就是刚才配置的环境变量,把下面的自动安装去掉

继续配置maven

jenkins yum 镜像 jenkins 打包镜像_jenkins_22


下面去 系统配置

添加环境变量

jenkins yum 镜像 jenkins 打包镜像_git_23

最好就是这样配置 这里是自己的地址
JAVA_HOME /usr/java/jdk1.8.0_131
M2_HOME	/opt/maven
PATH+EXTRA	$M2_HOME/bin

第三个插件 Pipeline(未付基于流水线项目)

jenkins yum 镜像 jenkins 打包镜像_docker_24

添加两个参数化构建的插件 (第一个 Git Parameter直接在gitee获取分支用的。
第二个 复选框插件因为是微服务架构 Extended Choice Parameter )

jenkins yum 镜像 jenkins 打包镜像_spring cloud_25

创建一个 流水线项目

jenkins yum 镜像 jenkins 打包镜像_jenkins_26

第一步 选择参数化构建 Git Parameter(这个插件装了之后)构建时动态获取分支

jenkins yum 镜像 jenkins 打包镜像_jenkins_27

jenkins yum 镜像 jenkins 打包镜像_docker_28

第二步设置 继续添加参数化构建 Extended Choice Parameter 多模块同时构建

jenkins yum 镜像 jenkins 打包镜像_spring cloud_29


jenkins yum 镜像 jenkins 打包镜像_spring cloud_30

第三步 去构建脚本 (点进去生成脚本)

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_31


jenkins yum 镜像 jenkins 打包镜像_jenkins_32


jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_33


往下来直接生成

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_34

将生成的脚本复制出来

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_35


这里我们需要改一个地方 上面我们参数化构建了一个 branch 分支 这样我们就能构建自己需要构建的分支。

jenkins yum 镜像 jenkins 打包镜像_docker_36

jenkins yum 镜像 jenkins 打包镜像_git_37

选择需要的分支进行构建

jenkins yum 镜像 jenkins 打包镜像_spring cloud_38


这边成功拉取代码

因为我这边有一个公共模块 需要提前打包 下面是我的项目结构

jenkins yum 镜像 jenkins 打包镜像_spring cloud_39

我们继续 执行下一个步骤 (打包公共模块)

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_40

执行构建 公共模块打包成功

jenkins yum 镜像 jenkins 打包镜像_spring cloud_41

构建微服务 使用我们上面添加的 project_name

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_42

第一个坑来了 一直提示找不到 复工程 以及公共模块

jenkins yum 镜像 jenkins 打包镜像_docker_43

原因是因为本地仓库没有复工程的包

jenkins yum 镜像 jenkins 打包镜像_docker_44

需要在本地maven中找到这个文件夹放到服务器的maven com包下

这个是我们需要上传的文件夹结构

jenkins yum 镜像 jenkins 打包镜像_jenkins_45


上传到目录下

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_46

再次打包构建

jenkins yum 镜像 jenkins 打包镜像_docker_47


这个服务是打包成功了 其他的微服务就不一一演示了

下面我们来制作docker插件来制作镜像
在各个启动服务的模块添加打包插件的依赖

jenkins yum 镜像 jenkins 打包镜像_jenkins_48

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 构建docker的镜像-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.7</version>
                <configuration>
                    <repository>${project.artifactId}</repository>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

同时在每个模块中创建Dockerfile

jenkins yum 镜像 jenkins 打包镜像_docker_49


jenkins yum 镜像 jenkins 打包镜像_spring cloud_50

FROM openjdk:8-jdk-alpine //构建java的环境
ARG JAR_FILE //插件指定大jar地址
COPY ${JAR_FILE} app.jar //把我们 打包的jar 复制到app.jar
EXPOSE 8080 //启动端口
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]
注意:这里每个微服务都可以不用改 因为每个容器是独立的 所以是可以直接给每个微服务复制(手动偷懒)

好了我们改下脚本 在打包命令后加上

sh "mvn -f ${projectInfo} clean package -Dmaven.test.skip=true dockerfile:build"

jenkins yum 镜像 jenkins 打包镜像_docker_51


jenkins yum 镜像 jenkins 打包镜像_jenkins_52

镜像制作成功

docker images 就能看到我们制作的镜像

jenkins yum 镜像 jenkins 打包镜像_docker_53

下面我们就往 harbor 镜像库推送 镜像

安装habor的记录我整理在了另一片中 :

首先我们去 凭证里面添加 harbor凭证 在流水线语法中

jenkins yum 镜像 jenkins 打包镜像_jenkins yum 镜像_54


jenkins yum 镜像 jenkins 打包镜像_docker_55

//这样的好处是不用暴露 密码账号
withCredentials([usernamePassword(credentialsId: 'b7894006-e02d-4777-972b-df0d1d338d6a', passwordVariable: 'password', usernameVariable: 'username')]) {
    // some block
}

我们整个脚本

node{
      stage('clone'){
            checkout([$class: 'GitSCM', branches: [[name: "*/${branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: '318f9f3a-7aea-4304-81a1-2a70c65d12c0', url: 'https://gitee.com/xkmayun/bugvip.git']]])      }
      stage("打包公共模块"){
            sh "mvn -f bugvip-common clean install -Dmaven.test.skip=true"
      }
       def selectedProjectNames="${project_name}".split(",")
       def tag= "latest"
       //harbor地址
       def harbor_url="101.34.81.9:85"
       //镜像库的名称
       def harbor_project="bugvip"
       //harbor凭证
       def harbor_auth="42d57c52-0e29-4a76-b6ea-d9d36dc2de9b"
       stage('编译微服务'){
       			for(int i =0;i<selectedProjectNames.length;i++){
                       def projectInfo=selectedProjectNames[i];
                       //获取项目名称
                       sh "mvn -f ${projectInfo} clean package -Dmaven.test.skip=true dockerfile:build"
                        //定义镜像名称
                        def imageName="${projectInfo}:${tag}"
                        //对镜像打上标签
                        sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}"
                        //把镜像推送到 harbor
                           withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                        // //     //登录harbor
                              sh "docker login -u ${username} -p ${password} ${harbor_url}"
                        //     //镜像上传
                             sh "docker push ${harbor_url}/${harbor_project}/${imageName}"

                             sh "echo 镜像上传成功"
                          }
                   }

       	}
}

第一个坑来了 登录 报错

jenkins yum 镜像 jenkins 打包镜像_git_56


在jenkins 所在的服务器目录 vim /etc/docker/daemon.json 下

添加

{“insecure-registries”:[“填你的harbor服务器地址”]}

jenkins yum 镜像 jenkins 打包镜像_git_57

systemctl restart docker 重启docker 重新构建打包

jenkins yum 镜像 jenkins 打包镜像_jenkins_58


上传成功

jenkins yum 镜像 jenkins 打包镜像_spring cloud_59

下面我们在其他的地方拉取下镜像

jenkins yum 镜像 jenkins 打包镜像_spring cloud_60

执行拉取命令 docker pull 101.34.81.9:85/bugvip/bugvip_third_part:latest

jenkins yum 镜像 jenkins 打包镜像_git_61


成功拉取。。。。。。。。。。。。。

\