IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> jenkins 流水线拉取 Gitee项目 打包 微服务 制作 Docker 镜像 并 push 到 harbor(踩坑集锦) -> 正文阅读

[系统运维]jenkins 流水线拉取 Gitee项目 打包 微服务 制作 Docker 镜像 并 push 到 harbor(踩坑集锦)

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

https://pkg.jenkins.io/redhat-stable/
在这里插入图片描述
第一条命令:

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

在这里插入图片描述
第二条命令:

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

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

 yum install -y jenkins

在这里插入图片描述
这里是执行成功的
假如执行之后提示如下:
在这里插入图片描述
这种情况需要升级下

yum upgrade


在这里插入图片描述
等待完成重新执行上面的三个命令就可以了

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

vi /etc/sysconfig/jenkins

第一步修改启动用户为 root
在这里插入图片描述
第二步 端口修改(看个人我这里修改为 8099)
在这里插入图片描述
下面直接启动jenkins

systemctl start jenkins

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

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"

在这里插入图片描述
在这里插入图片描述

镜像制作成功

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

在这里插入图片描述
成功拉取。。。。。。。。。。。。。
关于脚本远程 目标服务器拉取 镜像并创建镜像后续更新😁😁😁

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:53:58  更:2022-03-03 16:57:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:43:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码