马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
第13章 CI/CD 与 Jenkins
13.1 平台登录页面
13.1.1 GitLab-8098-root
13.1.2 Jenkins-8080-zhangsan
13.1.3 SonarQube-9000-admin
13.1.4 harbor-80-admin
13.2 CI/CD 与 DevOps
13.2.1 CI/CD 简介
CI => Continuous Integration,连续集成。即将连续不绝更新的代码经构建、测试后也连续不绝的集成到项目主干分支。
CD => 包罗两层寄义:Continuous Delivery,连续交付,和 Continuous Deployment,连续摆设。
- 连续交付:是连续集成的后续步调,连续频仍地将软件的新版本交付到类生产情况预发,即交付给测试、产物部门举行集成测试、API 测试等验收,确保交付的产物可直接摆设
- 连续摆设:是连续交付的后续步调,将连续交付的产物摆设到生产情况
13.2.2 DevOps 简介
百度百科中是如许先容 DevOps 的:
DevOps(Development 和 Operations 的组合词)是一组过程、方法与体系的统称,用于促进开辟(应用步伐/软件工程)、技能运营和质量保障(QA)部门之间的沟通、协作与整合。
它是一种器重“软件开辟职员(Dev)”和“IT 运维技能职员(Ops)”之间沟通互助的文化、活动或惯例。透过主动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件可以或许更加地快捷、频仍和可靠。
DevOps 是一种头脑,是一种管理模式,是一种实验规范与标准。
13.2.3 CI/CD 与 DevOps 关系
CI/CD 是目的,DevOps 为 CI/CD 目的的实现提供了条件与保障
13.3 体系架构图
终极要搭建出如下图所示架构的体系
13.4 Idea中 Git设置
13.4.1 Git 简介
百度百科中是如许先容 Git 的:
Git(读音为/gɪt/)是一个开源的分布式版本控制体系,可以有效、高速地处理处罚从很小到非常大的项目版本管理。也是 Linus Torvalds 为了资助管理 Linux 内核开辟而开辟的一个开放源码的版本控制软件
13.4.2 Git 的工作流程
13.4.3 Git 的下载与安装
从 Git 的官网下载 Git。其官网为:https://git-scm.com 。根据安装向导“下一步”式安装即可。
13.4.4 Idea 中设置 Git
13.5 GitLab 安装与设置
13.5.1 简介
GitLab 是一个源码托管开源工具,其使用 Git 作为代码管理工具,并在此根本上搭建起来的 Web 服务。GitLab 由乌克兰步伐员使用 Ruby 语言开辟,厥后一部门使用 Go 语言重写。生产中通常使用 GitLab 搭建私有源码托管平台。
13.5.2 GitLab 的安装
- 主机密求
这里要使用 docker 方式来安装 GitLab,以是必要一台安装有 docker 及 docker-compose的主机,且该主机内存至少 4G。
- 拉取镜像
这里使用由 gitlab 官网发布的社区版镜像 gitlab/gitlab-ce:latest。该镜像最好是先拉取到当地后再使用,由于该镜像比力大。
- docker pull gitlab/gitlab-ce:latest
复制代码
此次测试下载不下来,以是使用同事提供的docker包举行测试安装,使用 load 举行安装,load安装的是镜像,import导入的是容器
- docker load -i ./docker-gitlab-ce-13.12.2-ce.0.tar
复制代码
- 界说 compose.yml
由于启动 GitLab 容器时必要设置的内容较多,为了方便,这里使用 docker compose 方式启动。在恣意目次 mkdir 一个子目次,比方在/usr/local 下新建一个 glab 目次。在该目次中新建 compose.yml 文件。文件内容如下:
- version: "3"
- services:
- gitlab:
- container_name: gitlab
- image: gitlab/gitlab-ce:13.12.2-ce.0
- restart: always
- ports:
- - 8098:8098
- - 8443:443
- - 2222:22/tcp
- volumes:
- - /etc/localtime:/etc/localtime
- - /data/gitlab/data:/var/opt/gitlab
- - /data/gitlab/config:/etc/gitlab
- - /data/gitlab/logs:/var/log/gitlab
- environment:
- GITLAB_OMNIBUS_CONFIG: |
- external_url 'http://192.168.138.134:8098'
- gitlab_rails['gitlab_shell_ssh_port'] = 2222
复制代码 - 启动 gitLab
在等候过程中,可以看到如下的大量日记
13.5.3 GitLab 的暗码设置
- 欣赏器访问
在欣赏器中直接键入 http://192.168.138.134:8098 即可打开登录页面,起首必要举行暗码重置,输入root用户暗码即可,然后初始化用户暗码,初始化之后便可以使用root用户举行登录操纵
后期暗码如果想修改,也可以按照下图操纵步调举行修改
13.6 SonarQube 安装与设置
13.6.1 简介
SonarQube 是一个开源的代码扫描与分析平台,用来连续扫描、分析和评测项目源代码的质量与安全。 通过 SonarQube 可以检测项目中代码量、安全隐患、编写规范隐患、重复度、复杂度、代码增量、测试覆盖率等多个维度,并通过 SonarQube web UI 展示出来。
SonarQube 支持 30+种编程语言代码的扫描与分析,并可以或许方便的与代码 IDE、CI/CD 平台美满集成。SonarQube 的官网地点:
https://www.sonarsource.com/
13.6.2 主机密求
这里要使用docker方式来安装,以是必要一台安装有docker及docker-compose的主机。
13.6.3 安装与设置
- 下载两个镜像
由于 SonarQube 必要 Postgres 数据库的支持,以是安装 SonarQube 之前必要先安装Postgres 数据库。以是必要下载 Postgres 与 SonarQube 两个镜像。
- docker pull sonarqube:9.9-community
- docker pull postgres:latest
复制代码
- 界说compose文件
由于必要启动两个容器,以是这里使用 docker-compose 方式。在/usr/local 下 mkdir 一个 sonar 目次,在此中界说 compose.yml 文件
- services:
- postgres:
- image: postgres
- container_name: postgres
- restart: always
- ports:
- - 5432:5432
- environment:
- POSTGRES_USER: sonar
- POSTGRES_PASSWORD: sonar
- sonarqube:
- image: sonarqube:9.9-community
- container_name: sonarqb
- restart: always
- depends_on:
- - postgres
- ports:
- - 9000:9000
- environment:
- SONAR_JDBC_URL: jdbc:postgresql://192.168.138.134:5432/sonar
- SONAR_JDBC_USERNAME: sonar
- SONAR_JDBC_PASSWORD: sonar
复制代码 - 修改捏造内存巨细
在/etc/sysctl.conf 文件中指定 vm.max_map_count 捏造内存巨细
- # vm.max_map_count=262144
- vim /etc/sysctl.conf
- # 修改保存后再运行 sysctl –p 命令使 Linux 内核加载文件中的配置。
- sysctl -p
复制代码
- 启动 SonarQube
通过 docker-compose up –d 下令启动容器,并 docker ps 检察是否启动乐成
- 登录SonarQube
在欣赏器键入 SonarQube 服务器的 IP 与端标语 9000,即可打开登录页面。默认用户名与暗码都是 admin。
Log in 后即可跳转到更新暗码页面。这里更新暗码为 101022li
- 安装汉化插件
在 Maketplace 中键入关键字 Chinese 后即可找到要安装的汉化插件,点击 I understand the risk(我相识风险)后即可看到 Install 按钮,点击安装
安装乐成后,在页面上部就可看到 Restart Server 的提示,让重启 SonarQube,此过程大概会报错,由于下载文件大概下载不下来,此时必要自己先手动下载插件,然后再将插件复制到sonarqube的插件目次当中,重启即可见效
检察docker日记信息,发现是插件无法下载
- # 通过日志
查看下载文件为 https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-9.9/sonar-l10n-zh-plugin-9.9.jar - docker-compose logs --tail 100 sonarqb
复制代码 使用欣赏器下载 https://github.com/xuhuisheng/sonar-l10n-zh/releases/download/sonar-l10n-zh-plugin-9.9/sonar-l10n-zh-plugin-9.9.jar,地点栏输入即可
上传到服务器当中,然后使用下令复制到sonarqbue指定目次,然后重启服务
- docker cp sonar-l10n-zh-plugin-9.9.jar sonarqb:/opt/sonarqube/extensions/plugins/
- docker restart sonarqb
复制代码
再次进入,已经乐成安装中文插件
13.7 harbor安装与设置
13.7.1 Harbor 安装体系要求
Harbor 要安装的主机必要满足硬件与软件上的要求
- 硬件要求
硬件资源最小要求保举要求CPU2CPU4CPU内存4G8G硬盘40G160G
- 软件要求
软件资源版本要求作用Docker CE 引擎17.06.0 或更高版本Harbor 是以容器情势在运行,必要Docker 引擎Docker Compose1.18.0 或更高版本Harbor是10个容器在运行,通过DockerCompose 编排OpenSSL最新版天生数字证书,以支持HTTPS
13.7.2 安装Harbor
在官网复制Latest最新版的离线安装包的下载链接地点,在Linux体系中通过wget下令 下载,将其下载到某目次中。
- 下载安装包
- wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz
复制代码
- 解压安装包
将下载好的包解压到某目次中。解压后其就是一个独立的目次 harbor
- mkdir -p /opt/apps
- tar -zxvf harbor-offline-installer-v2.6.2.tgz -C /opt/apps/
复制代码
- 修改 harbor.yml
复制一份 harbor 解压包中的 harbor.yml.tmpl,并重定名为 harbor.yml
- 运行 prepare
运行 harbor 解压目次中的 prepare 下令。该下令会先拉取 prepare 镜像,然后再天生很多的厥后期要用到的设置文件
- 运行 install.sh
运行 harbor 解压目次中的 install.sh 下令,其会主动完成五步的安装过程,并在终极启动很多的容器。这些容器本质上就是通过 docker-compose 举行编排管理的
- 新建堆栈
在欣赏器地点栏中输入 http://192.168.138.134:80 即可看到登录页面,在此中输入用户名admin,暗码为自界说暗码101022,即可登录。登录后点击“新建项目”,新建一个镜像堆栈
13.8 目的服务器安装与设置
13.8.1 docker 引擎
由于目的服务器必要从镜像中心 Harbor 中 docker pull 镜像,然后使用 docker run 来运行容器,以是目的服务器中必要安装 Docker 引擎。
13.8.2 docker-compose
由于目的服务器必要通过 docker-compose 运行 compose.yml 文件来启动容器,以是目的服务器中必要安装 docker-compose
13.8.3 吸取目次
Jenkins 通过 SSH 将下令发送到目的服务器,以使目的服务器可以从 Harbor 拉取镜像、运行容器等。以是在目的服务器中必要具有一个用户吸取 Jenkins 发送数据的目次。本例将该吸取目次创建在/usr/local/jenkins 中
13.9 Jenkins 安装与设置
13.9.1 Jenkins 简介
- 百度百科
以下是百度百科中关于 Jenkins 的词条:Jenkins 是一个开源软件项目,是基于 Java 开辟的一种连续集成工具,用于监控 连续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以举行连续集成。
- 主机密求
这里要使用docker方式来安装,以是必要一台安装有docker及docker-compose的主机
13.9.2 安装 JDK
由于 Jenkins 通过调用 Maven 来实现对项目的构建,以是必要在 Jenkins 主机中安装Maven。由于 maven 的运行必要 JDK 的情况,以是必要首安装 JDK。
对于 JDK 的安装非常简朴,只必要从官网下载相应版本的 JDK 到 Linux 体系后,直接解压即可。无需设置。这里下载的是 jdk-8u291-linux-x64.tar.gz,将其解压到了/opt/apps 目次下,并重定名为了 jdk
- mkdir -p /usr/local/java
- mv jdk-8u291-linux-x64.tar.gz /usr/local/java
- tar -zxvf jdk-8u291-linux-x64.tar.gz
- # 设置环境变量
- vim /etc/profile
- JAVA_HOME=/usr/local/java/jdk1.8.0_291
- JRE_HOME=/usr/local/java/jdk1.8.0_291/jre
- CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib
- PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- export JAVA_HOME JRE_HOME CLASSPATH PATH
- # 配置生效验证
- source /etc/profile
- java -version
复制代码
13.9.3 安装 maven
- 下载解压 maven
起首必要从官网下载最新版本的linux maven,这里下载的是apache-maven-3.9.0-bin.tar.gz版本
将其解压到/opt/apps 目次下,并重定名为 maven
- 设置情况变量
- # 设置环境变量
- vim /etc/profile
- MAVEN_HOME=/usr/local/maven
- PATH=$MAVEN_HOME/bin:$PATH
- export MAVEN_HOME PATH
- # 环境变量生效验证
- source /etc/profile
- mvn -version
复制代码
- 设置 maven 镜像堆栈
maven解压后必要修改解压目次中conf/settings.xml文件中的两处设置。这里设置maven的镜像源为 aliyun。
- <mirror>
- <id>nexus-aliyun</id>
- <mirrorOf>central</mirrorOf>
- <name>Nexus aliyun</name>
- <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
- </mirror>
复制代码
- 设置 maven 编译器版本
设置maven文件目次,maven 默认的编译器版本为 JDK1.4,必要指定为 JDK1.8。设置了该<profile>后,在文件末了的<activeProfiles>中再激活一下即可
- <localRepository>/usr/local/devenv/repo</localRepository>
- <profile>
- <id>jdk-8</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- <jdk>1.8</jdk>
- </activation>
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- <maven.compiler.compilerVersion>8</maven.compiler.compilerVersion>
- </properties>
- </profile>
- <activeProfiles>
- <activeProfile>jdk-8</activeProfile>
- </activeProfiles>
复制代码
13.9.4 安装启动 Jenkins
- 下载镜像
这里要使用 docker 方式来安装 Jenkins,必要先下载 Jenkins 的镜像,后续安装插件提示版本安装失败,升级为latest版本即可正常安装,别的步调稳固
- docker pull jenkins/jenkins:2.387.1-lts
复制代码
- 使用 docker run 下令启动 Jenkins
- docker run --name jenkins \
- -p 8080:8080 \
- -p 50000:50000 \
- -v /var/jenkins_home:/var/jenkins_home \
- -d jenkins/jenkins
复制代码 使用docker ps发现服务没有起来,检察日记,发现目次没有写权限
- docker ps
- docker logs -f --tail 100 jenkins
复制代码
缘故因由是,jenkins 需向数据卷挂载点的文件/var/jenkins_home/copy_reference_file.log 中写入日记时,由于写入操纵的用户不是 root 用户,而非 root 用户对数据卷没有写操纵权限,以是此时必要修改数据卷操纵权限,为非 root 用户添加写操纵权限。
- chmod -R 777 /var/jenkins_home/
复制代码 也可以使用Docker-compose编排,测试情况暂时直接启动
- mkdir -pv /data/jenkins/jenkins_home
- mkdir -pv /data/docker-compose/jenkins
- cat > /data/docker-compose/jenkins/docker-compose.yml << EOF
- version: "3"
- services:
- jenkins:
- container_name: jenkins
- image: jenkins/jenkins:2.387.1-lts
- restart: always
- user: root
- ports:
- - 8080:8080
- - 50000:50000
- volumes:
- - /data/jenkins/jenkins_home:/var/jenkins_home
- - /etc/localtime:/etc/localtime
- - /var/run/docker.sock:/var/run/docker.sock
- - /usr/bin/docker:/usr/bin/docker
- - /usr/local/maven:/usr/local/apache-maven3
- - /usr/local/java/jdk1.8.0_291:/usr/local/java/jdk1.8.0_291
- EOF
- # 启动服务
- docker-compose up -d
复制代码 - 重启 jenkins
重启 jenkins 容器,发现服务已经乐成启动
- 修改插件下载源
由于 jenkins 在后期运行时必要下载很多的插件,而这些插件默认都是从国外的 Jenkins官方服务器上下载的,下载速率很慢,且下载失败的比例很高。以是,一样平常会先将这些插件的下载源更新为国内的服务器。
该更新文件是数据卷目次中的 hudson.model.UpdateCenter.xml
- # 将该默认的<url>更换为清华大学的下载源地址。
- https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/current/update-center.json
- cd /var/jenkins_home/updates
- sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json && sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
复制代码
- 启动服务
- # 通过docker logs 查看初始密码 dfa42970b4a548adb7cf07d988b3c14f
- docker logs jenkins
复制代码
- 插件下载
访问jenkins主页 http://192.168.138.134:8080/login?from=%2F,输入日记获取暗码
选择默认安装即可
13.9.5 设置jenkins
- 安装插件
点击 Manage Jenkins 中的 Manage Plugins 页面,在 Available plugins 选项卡页面的搜索栏中分别键入 Git Parameter 与 Publish Over SSH,选中它们后,Install without restart。
jenkins常用插件
- 插件源地址
- https://updates.jenkins.io/update-center.json
- https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
-
-
- ## 基础插件
- //中文插件
- Chinese (Simplified)
-
- // pipeline阶段视图
- Pipeline Stage View
-
- //LDAP集中用户管理
- LDAP Plugin
-
- //工作区清理
- Workspace Cleanup
-
- //角色权限管理
- Role-based Authorization
- Authorize Project
-
- //凭证管理
- Credentials Binding
-
- //配置文件管理
- Config File Provider
-
- //右键发送
- Email Extension
-
- //通过SSH方式管理节点
- SSH Build Agents
- SSH Agent
-
-
- ## 任务相关插件
- //扩展参数插件
- Extended Choice
- Active Choice Parameter
- Dynamic Extended Choice ParameterVersion
-
-
- //流水线插件管理
- Pipeline
-
- //git插件
- Git Plugin
- GitLab
-
- //Git Parameter插件(构建时可选分支和tag)
- Git Parameter
-
- //获取harbor镜像标签
- Image Tag Parameter
-
- //Maven插件
- Maven Integration
- Pipeline Maven Integration
-
- //SonarQube插件
- SonarQube Scanner
-
- //K8S相关插件
- Kubernetes
- Kubernetes Continuous Deploy
-
- //部署推送插件
- Deploy WebLogic
- Deploy to container
- # vim conf/tomcat-users.xml
- <role rolename="manager-gui"/>
- <user username="jenkins" password="jenkins" roles="manager-gui"/>
-
- # vim webapps/manager/META-INF/context.xml
- <!--
- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
- allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
- -->
-
- //远程部署
- Publish Over SSH
复制代码 - 移动 JDK 与 Maven
起首要将 Jenkins 主机中的 JDK 与 Maven 解压目次移动到数据卷/var/Jenkins_home 中
- cp -r maven/ /var/jenkins_home/
- cp -r jdk1.8.0_291/ /var/jenkins_home/
复制代码 - 设置 JDK 与 Maven
在 Manage Jenkins 的 Global Tool Configuration 页面中设置 Maven 与 JDK。
将主动安装checkbox点掉,填入jdk路径,此路径既自己拷贝jdk路径
这里填写的也是容器中挂载点目次中的路径。末了再应用并生存。
13.10 Jenkins 集成 SonarQube
13.10.1 Jenkins 中安装 SonarScanner
- SonarScanner 简介
SonarScanner 是一种代码扫描工具,专门用来扫描和分析项目代码质量。扫描和分析完成之后,会将效果写入到 SonarQube 服务器的数据库中,并在 SonarQube 平台表现这些数据。
- 下载
在 SonarQube 官网的资助文档中可以下载 SonarScanner。这里下载一个 Linux 体系下使用的版本。
- 安装 unzip
由于下载的 SonarScannner 是 zip 压缩范例的,以是必要在 Linux 体系中安装 unzip 下令,以解压该压缩包。
- 解压/移动
由于后期要在 Jenkins 中集成 SonarScanner,必要 SonarScanner 存在于 Jenkins 服务器中的数据卷目次中。以是将解压后的目次移动到数据卷jenkins_home下并更名为sonar-scanner
- unzip sonar-scanner-cli-4.8.0.2856-linux.zip
- mv sonar-scanner-4.8.0.2856-linux /var/jenkins_home/sonar-scanner
复制代码 - 修改设置文件
在 sonar-scanner 目次的 conf 目次下有其设置文件 sonar-scanner.properties。修改该设置文件
- #Configure here general information about the environment, such as SonarQube server connection details for example
- #No information about specific project should appear here
- #----- Default SonarQube server
- sonar.host.url=http://192.168.138.134:9000
- #----- Default source code encoding
- sonar.sourceEncoding=UTF-8
- sonar.sources=./
- sonar.java.binaries=./target
复制代码
13.10.2 Jenkins 设置 SonarQube
- 安装插件
在 Jenkins 页面的体系管理 插件管理 Available plugins 中搜索 sonarqube scanner,安装该插件。该插件用于毗连 SonarScanner
安装完毕后,点选“安装完成后重启 Jenkins”,举行重启。
- 添加 Sonarqube
打开 Jenkins 的 Manage Jenkins 》Configure System 页面,找到 SonarQube servers,添加 SonarQube 服务器
13.11 Jenkins 集成目的服务器
这里要设置毗连到目的服务器的毗连方式。打开 Manage Jenkins 中的 Configure System页面将页面拉到最下面,可以看到 Publish over SSH。这里可以设置非对称加密的身份验证方式,也可设置对称加密的身份验证方式。这里采取对称加密身份验证方式。点击新增按钮。
13.12 自由风格的 CI 操纵(中心架构)
13.12.1 中心架构图
13.12.2 创建 web 项目
创建一个web项目,告急内容就以之前的docker-hello项目为主
创建一个 web 项目,就使用最简朴的 spring boot 工程,比方工程名为 hellojks。仅需导入 spring web 依赖即可
13.12.3 Idea 提交项目到长途堆栈
在 GitLab 中创建长途堆栈, 起首在 GitLab 中创建一个长途堆栈,用于管理前面 Idea 中创建的工程
点击Create project后就可进入下个页面,可以看到当前堆栈的信息及干系的操纵下令。客户端通过这些下令可完成对该堆栈的操纵
新增体系用户
用户创建乐成,如下图所示,点击"Edit",为用户设置暗码
初始化当地堆栈
将当前的项目目次 docker-hello初始化为当地堆栈
提交接码到当地库
在项目上右击,选择 Git =》 Commit Directory
提交到长途库
起首要从长途堆栈中获取堆栈地点。选择复制 Clone with HTTP 的地点,获取复制地点为 http://192.168.138.134:8098/root/docker-hello.git
Push 后会弹出访问 GitLab 的登录窗口,输入用户名 lixuchun,暗码为自界说的 lixuchun123456
推送乐成后,在 idea 右下角即可看到乐成提示
此时革新 GitLab 页面,即可看到推送来的项目
留意:如果提交文件的时间发现很多不必要提交的文件都存在在提交目次中,添加.ignore文件到应用根目次中即可
- # Created by .ignore support plugin (hsz.mobi)
- ### Example user template template
- ### Example user template
- # IntelliJ project files
- .idea
- *.iml
- out
- gen
- ### Maven template
- target/
- pom.xml.tag
- pom.xml.releaseBackup
- pom.xml.versionsBackup
- pom.xml.next
- release.properties
- dependency-reduced-pom.xml
- buildNumber.properties
- .mvn/timing.properties
- # https://github.com/takari/maven-wrapper#usage-without-binary-jar
- .mvn/wrapper/maven-wrapper.jar
- ##代码生成器屏蔽
- *.vm
- *.log
复制代码
13.12.4 从 GitLab 拉代替码
- 新建任务
- Jenkins 集成 GitLab
在点击确定后即可立刻设置 Jenkins 中 GitLab 服务器的信息
在此中填写用户名与暗码后“添加”即可返回之前的页面,此时在 Credentials 下拉框中即可找到新添加的用户信息,选择即可。
- 立刻构建
任务创建乐成后即可看到如下页面。在该页面中点击“立刻构建”,Jenkins 即可开始从GitLab 上拉取项目。此时右下角就会发生变革
点击右下角的日期时间,选择控制台输出,可看到这个拉取过程的日记。
从以上日记的 git rev-parse --resolve-git-dir /var/jenkins_home/workspace/docker_hello_jenkins/.git 下令可以看出,Jenkins将其容器内的 /var/jenkins_home/workspace/my_hellojks 目次作为项目的当地堆栈。也就是将数据卷目次。
进入 jenkins 数据卷可以看到该项目已经存在了。
13.12.5 将项目打为 jar包
在 Jenkins 可以或许通过设置,调用当地的 maven 的 mvn 下令,将拉取来的项目打为 Jar 包。
- Jenkins设置mvn下令
点击设置后,打开设置页面。然后点击 Build Steps,跳转到以下位置。
选择调用顶层 Maven 目的,即可使用前面设置的 Maven 来完成打包任务
在 Maven 版本下拉框中选择前面设置好的 maven,目的中写入必要 maven 去实验的maven 下令,应用生存后,主动跳转回任务首页
- 重新构建
在设置好 maven 的构建下令后,再次实验“立刻构建”
构建乐成后进入 jenkins 数据卷目次/var/jenkins_home/workspace/docker_hello_jenkins中可以看到新增了 target 目次。打开 target 目次,可以看到打出的 jar 包。
13.12.6 代码质量查抄工具
todo: 暂时未设置
13.12.7 将 jar 包推送到目的服务器
- 设置 SSH
Jenkins 通过 SSH 方式毗连上目的服务器,并将 jar 包推送到目的服务器。
点击设置后,打开设置页面。将页面拉到最下面,找到“增长构建后操纵步调”
exec command 修改为其他下令,后续使用镜像启动服务
- 重新构建
检察目的服务器的目的目次/var/jenkins_home,可以看到 jar 包已经推送了过来,而且启动了容器了
13.12.8 构建镜像启动容器
通过在 Jenkins 中设置在目的服务器中将要实验的干系下令,使得 Jenkins 将 jar 包推送到目的服务器后,立刻主动实验设置的下令,将 jar 包构建为一个镜像,并启动其相应的容器,使项目启动运行
- 界说 Dockerfile
若要构建镜像,就必要界说其 Dockerfile。现在 Idea 的工程中新建一个 Directory,比方docker,然后在此中新建一个 file
- FROM openjdk:8u102
- MAINTAINER lxc [email protected]
- LABEL name="lxc" auth="lxc" email="[email protected]"
- # 将本地的docker-hello包导入到容器的固定目录下,会自动创建目录
- COPY docker-hello.jar /var/jenkins_home/docker/docker-hello.jar
- # 变更工作目录
- WORKDIR /var/jenkins_home/docker
- # 启动服务
- ENTRYPOINT ["java", "-jar", "docker-hello.jar"]
复制代码
- 界说 compose.yml
在 idea 的新建目次中再新建一个 compose.yml,用于构建镜像和启动容器
- version: '3.5'
- services:
- docker-hello:
- build: ./
- image: docker-hello
- container_name: docker-hello
- ports:
- - 8088:8088
复制代码
- 推送到 GitLab
- 再设置构建后操纵
- cd /var/jenkins_home/dockermv /var/jenkins_home/target/docker-hello-1.0-SNAPSHOT.jar ./docker-hello.jardocker-compose downdocker-compose up -d
- --builddocker image prune -f
复制代码 Jenkins 中在返回的任务首页中,再次实验立刻构建。构建乐成后,检察目的服务器中的/var/Jenkins_home/docker 目次,发现 docker 目次及其下的两个 docker 文件已经存在了,且 jar 包 也复制了进来,服务也启动了起来
在欣赏器中访问目的服务器中的应用,已经可以访问了 http://192.168.138.129:8088/some/test
|