jenkins 流水线拉取 Gitee项目 打包 微服务 制作 Docker 镜像 并 push 到 harbor

  • 安装Jenkins
https://pkg.jenkins.io/redhat-stable/

wget https://prodjenkinsreleases.blob.core.windows.net/redhat/jenkins-2.305-1.1.noarch.rpm
rpm -ivh jenkins-2.305-1.1.noarch.rpm

配置文件: vi /etc/sysconfig/jenkins
 
更改jenkins配置文件里的监听端口:
JENKINS_PORT="1107"

#启动
service jenkins start
#关闭
service jenkins stop
#查看启动状态
systemctl status jenkins

yum clean all
 
yum -y remove jenkins
rpm卸载:
rpm -e jenkins
查看
rpm -ql jenkins 
find / -iname jenkins | xargs -n 1000 rm -rf

初始密码:
cat /var/lib/jenkins/secrets ------initialAdminPassword


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

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

刷新生效

sudo  firewall-cmd --reload


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

cat /var/lib/jenkins/secrets/initialAdminPassword


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

 

 安装插件
 先替换插件地址
  

 


替换地址

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

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

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


安装完成后重启

 

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


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

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

    安装第三个插件 Git

 

    配置 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里 全局配置 jdk 和 maven


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

 

继续配置maven


下面去 系统配置
添加环境变量

 

最好就是这样配置 这里是自己的地址
 

JAVA_HOME /usr/java/jdk1.8.0_131
M2_HOME    /opt/maven
PATH+EXTRA    $M2_HOME/bin

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

 

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

 

    创建一个 流水线项目
   

 

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

 

 

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

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




往下来直接生成

  将生成的脚本复制出来
   
    这里我们需要改一个地方 上面我们参数化构建了一个 branch 分支 这样我们就能构建自己需要构建的分支。

 

 

 

    选择需要的分支进行构建


这边成功拉取代码

 

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

 

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

 

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

 

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

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

 

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

 

需要在本地maven中找到这个文件夹放到服务器的maven com包下
这个是我们需要上传的文件夹结构

上传到目录下

 

 

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

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

 

<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
   
   

 

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"

 


 会碰到的错误


(java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied

 chmod 777 /var/run/docker.sock

镜像制作成功

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

 

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

安装habor的记录我整理在了另一片中 :https://blog.csdn.net/weixin_44695125/article/details/123141266?spm=1001.2014.3001.5501

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

//这样的好处是不用暴露 密码账号
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 所在的服务器目录 vim /etc/docker/daemon.json 下
添加

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

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


上传成功

 下面我们在其他的地方拉取下镜像
  在这里插入图片描述

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


成功拉取。。。。。。。。。。。。。
关于脚本远程 目标服务器拉取镜像并创建docker

https://blog.csdn.net/weixin_44695125/article/details/123240642

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值