ci/cd技术专题「jenkins实战系列」总结归纳jenkins的安装使用和配置流程介绍(代码片段)

洛神灬殇 洛神灬殇     2023-01-02     396

关键词:

Jenkins基础介绍篇

  • Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
  • 通过Jenkins实现自动化部署项目,本地git提交代码Jenkins自动化将项目部署在Linux服务器。

Jenkins技术原理篇

  • 版本控制服务

  • Jenkins自动化部署服务

Jenkins环境搭建篇

  • 如果使用Jenkins容器,我该怎么通过Jenkins容器部署SpringBoot项目?
  • 是通过Jenkins容器与SpringBoot容器中的文件交互进行项目部署吗?这能做到吗?
  • 又或是把SpringBoot项目放到Jenkins容器中管理,那Jenkins中又要安装git、maven等一堆东西,这一点都不方便。

jenkins镜像

组件部署规划

  • Jenkins:接收项目更新信息并进行项目打包与Docker脚本的执行

  • Docker:安装所需应用镜像与运行容器(本篇忽略)

  • git:项目信息同步

环境搭建

安装JDK
将下载完的jdk解压
tar -zxvf jdk-8u191-linux-x64.tar.gz
在/etc/profile文件末尾增加以下配置
vim /etc/profile 
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
更新配置文件
source /etc/profile
查看版本信息
[root@libo tyes]# java -version
java version "1.8.0_381"
Java(TM) SE Runtime Environment (build 1.8.0_321-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
安装Maven
下载maven并解压
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar -zxvf apache-maven-3.6.0-bin.tar.gz
修改maven的远程镜像为阿里云镜像库
vim conf/setting.xml
    ...
       <mirror>  
          <id>nexus-aliyun</id>  
          <mirrorOf>central</mirrorOf>    
          <name>Nexus aliyun</name>  
          <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
      </mirror>
...
在/etc/profile文件末尾增加以下配置
vim /etc/profile 
#注意这里是maven的安装路径 
M2_HOME=/home/jenkins/globalEnvi/apache-maven-3.6.0   
重载/etc/profile这个文件 source /etc/profile
export PATH=$M2_HOME/bin:$PATH
查看是否maven环境变量

[root@libo tyes ~]# mvn -v 
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)  Maven home: /home/zhangsha/apache-maven-3.6.3  Java version: 1.8.0_261, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_261-amd64/jre  Default locale: en_US, platform encoding: UTF-8  OS name: “linux”, version: “3.10.0-1127.18.2.el7.x86_64”, arch: “amd64”, family: “unix”****

安装git
安装依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker

下载git之后

查看版本
[root@libo tyes]# git --version
 git version 2.28.0  
  • 安装Jenkins
    • 下载安装包jenkins.war;
       - 在安装包根路径下,运行命令 `java -jar jenkins.war --httpPort=8080
    • 打开浏览器进入链接 http://localhost:8080.
    • 填写初始密码,激活系统

首次启动会提示初始密码位置,找到初始密码:

[root@libo tyes]# cat /var/jenkins_home/secrets/initialAdminPassword
9e3a37cf78264798878606621db632d3

推荐安装的插件,保证基本常用的功能可以使用。

  • 安装需要的插件

  • 插件安装界面

全局化配置

在jenkins页面“系统管理”–>“管理插件”–>”全局工具配置”:

  • 配置相关Maven的settings配置文件路径

  • 配置相关Maven的安装home目录信息

  • 配置相关的JDK的相关的目录信息

  • 配置相关GIT的安装home目录信息

注意:可能各种原因,插件安装失败,则跳过也可以,再登录到Jenkins之后可以对插件进行自定义选择性安装。

  • 设置初始用户和密码

  • 登录账号密码之后,进入系统,安装完成。(如果录入账号密码登录遇到空白页,重启jenkins服务在尝试重新登录)

在jenkins页面“系统管理”–>“插件管理”–>"可选插件"中搜索:

在插件管理页面可以对插件进行安装、卸载、更新。(各个插件的版本和Jenkins版本有时候会有兼容性问题,可以进行更新或者降级)



  • Maven插件(必须)Maven Integration 用来支持构建maven项目

  • 远程连接服务插件(必须):Publish Over SSH 用来把构建好的部署包传送到指定服务器的指定位置

  • GitLab、Gitlab Authentication、Gitlab Hook来获取仓库源码

  • 发布插件(必须):Deploy to container Plugin

  • git插件: Git plugin(git和svn根据自身需求)

在jenkins页面“系统管理”–>“系统设置”:

  • (Publish over SSH插件配置)添加SSH Servers(可使用密钥,也可以使用密码)

Jenkins构建任务篇

首页-新建任务

填写任务名称,选择“构建一个Maven的软件项目”。

.配置源码管理

填写git地址操作

  • 若是需要认证,则添加凭据即可
构建环境

构建

配置构建命令

配置构建后发布

填写执行命令
#!/bin/sh
#docker 镜像/容器名字或者jar名字 这里都命名为这个
SERVER_NAME=logistics
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk 'print $1')
#镜像id
IID=$(docker images | grep "$SERVER_NAME" | awk 'print $3')
#当前日期
DATE=`date +%Y%m%d`

#清除旧容器
if [ -n "$CID" ]; then
echo "存在$SERVER_NAME容器,CID=$CID"
echo "停止旧容器"
docker stop $SERVER_NAME
echo "删除旧容器"
docker rm $SERVER_NAME
fi

# 清楚旧镜像
if [ -n "$IID" ]; then
echo "存在$SERVER_NAME镜像,IID=$IID"
echo "删除镜像"
docker rmi $IID
fi

#构建镜像
echo "开始构建镜像"
docker build -f ./src/main/docker/Dockerfile -t $SERVER_NAME:v$DATE ./target
echo "构建镜像成功!"


# 运行docker容器
echo "创建并启动$SERVER_NAME容器..."
docker run --name $SERVER_NAME -d -p 8071:8071 $SERVER_NAME:v$DATE
echo "$SERVER_NAME容器启动完成

立即构建

Jenkins部署流程篇

  1. 开发用户提交代码到Git源码仓库

  2. Jenkins服务器从指定Git仓库拉去代码,使用maven编译打包。

  3. Jenkins服务器通过ssh插件连接登录服务器,将打包好的war或者jar包传送到应用服务器指定位置,例如 home/web/a.war

  4. Jenkins服务器在应用服务器远程执行脚本文件,重启应用服务器tomcat 或者在应用服务器执行 java -jar 启动当前项目。

ci/cd技术专题「jenkins实战系列」重塑jenkins服务进行自动合并的方案实现(纠正错误)

前言介绍本篇文章主要针对于之前的Jenkins在构建分支的时候,进行自动合并其他分支的纠正和专题介绍,如果想要了解更多的说明,可以参考一下官方文档:Jenkins的Git合并官方介绍(英文版)、【Jenkins官... 查看详情

ci/cd技术专题「jenkins实战系列」jenkins+pipeline构建自动化部署(代码片段)

前提引言Jenkins的精髓是Pipeline(流水线技术),那为什么要用Pipeline呢?实现自动化构建,其中Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运行于单个或者多个节点的任务连接起来&... 查看详情

ci/cd技术专题「jenkins实战系列」jenkinsfile+dockerfile实现自动部署(代码片段)

每日一句没有人会因学问而成为智者。学问或许能由勤奋得来,而机智与智慧却有懒于天赋。前提概要Jenkins下用DockerFile自动部署Java项目,项目的部署放心推向容器化时代机制。本节需要对jenkinsfile有点了解,对dockerf... 查看详情

ci/cd技术专题「jenkins实战系列」如何通过gitlab对接jenkins构建提交自动触发部署构建体系指南(上部)(代码片段)

前因后果最近,发现我们公司的自动化体系做的实在是不咋地,每次提交push完代码之后,还需要登录到服务器进行执行下docker脚本,之后才能拿到镜像,一说到这里我就要吐了,CI/CD做的简直是一团糟࿰... 查看详情

ci/cd技术专题「jenkins实战系列」全流程介绍jenkins环境搭建+基础部署配置(windows->linux)(代码片段)

背景在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;前后端分离后,经常会修改接口,然后重... 查看详情

docker与jenkins的自动化ci/cd流水线实战(代码片段)

docker与jenkins的自动化CI/CD流水线实战在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

...就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程。一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜... 查看详情

jenkins与docker的自动化ci/cd实战(代码片段)

...布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;Jenkins在Docker主机创建容器并发布。环境规划如下:角色IPGit/Registry192.168.56.11Docker19... 查看详情

jenkins与docker的自动化ci/cd流水线实战(代码片段)

Jenkins与Docker的自动化CI/CD流水线实战标签(空格分隔):docker的部分一:什么是CI/CD二:发布流程设计三:部署Git仓库并上传测试代码一:什么是CI/CD持续集成(ContinuousIntegration,CI):代码合并、构建、部署、测试都在一起,不... 查看详情

docker与jenkins的自动化ci/cd流水线实战(svn)

准备安装完成以下环境:1、svn2、jdk3、maven4、tomcat5、jenkins项目代码测试(php/java):https://github.com/lizhenliang配置svn1、查看结构trunk:主干分支branches:其他分支tags:打标记将代码最终打到tags目录下,打成版本号标记,然后再jenk... 查看详情

ci/cd系列之阿里云云效2020应用篇(代码片段)

...介绍,出于好奇便点进去看了看,刚开始以为云效是类似Jenkins的一套自动化部署方案,了解之后发现云效的野心很大哦,从需求管理、业务开发、代码管理、缺陷测试、部署上线全方位掌控,试图提供一站式DevOps平台,将原先... 查看详情

docker最全教程——从理论到实战(十四)

...。  为了降低容器的使用门槛以及便于大家将容器技术应用于开发和实践,当前教程大部分线上实践结合TKE(腾讯云容器服务)来进行讲解和实践。当本系列内容讲解完成后,笔者将再单独讲解Kubernetes(k8s)。最后,长... 查看详情

ci/cd之jenkins(代码片段)

jenkinsCI/CD简介jenkins简介jenkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI... 查看详情

ci/cd之jenkins(代码片段)

jenkinsCI/CD简介jenkins简介jenkins安装安装jenkins插件安装中文插件安装流水线插件安装gitlab插件jenkins和gitlab联动jenkins轮询检查gitlab代码变更使用webhook实时检查gitlab代码变更推送dockerfile文件自动构建镜像新增agent节点jenkins用户管理CI... 查看详情

ci/cd之jenkins+gitlab(代码片段)

文章目录一、Jenkinx+Gitlab持续集成环境概述(1)什么是CI/CD(2)Jenkins概述(3)Gitlab概述(4)Gitlab和Github的区别(5)Jenkins配合Gitlab持续集成系统的工作流程二、部署持续集成环境(1&... 查看详情

ci与cd之docker上安装jenkins(代码片段)

一.CI,CD,Jenkins的介绍CI:持续集成(Continuousintegration,简称CI),在传统的软件开发环境中,有集成,但是没有持续集成这种说法,长时间的分支与主干脱离,导致分支与主干可能存在较大偏差,在集成代码的时候可能需要花费数... 查看详情

springboot技术专题「开发实战系列」一起搭建属于自己的springbootadmin的技术要素

SpringBootAdmin的介绍说明SpringBootAdmin是开源社区孵化的项目,用于对SpringBoot应用的管理和监控。SpringBootAdmin分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client),服务端和客户端之间采用http通讯方式实现数据交互;单体项... 查看详情

jenkins&gitee实现持续集成ci/cd工具免费推荐(代码片段)

文章目录1.Jenkins&Gitee持续集成流程2.Jenkins安装Gitee插件3.插件配置4.安装NodeJS5.新建构建任务5.1General5.2源码管理5.3触发器配置5.4构建环境5.5构建脚本6.Vue项目部署前面介绍了一些CI/CD持续集成的工具,如circleci、travisci、giteego... 查看详情