docker安装Jenkins,CI/CD,代码发布,环境维护,测试神器

前言

  • Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它可以在软件开发过程中自动执行各种任务,例如编译代码、运行测试、生成文档、部署应用程序等,从而加速软件开发和交付过程。
  • Jenkins 提供了一个基于 Web 的用户界面,可以通过浏览器访问和操作。它支持大量的插件和扩展,可以与各种不同的开发工具和构建工具集成,如 Git、Subversion、Maven、Gradle 等。Jenkins 还支持分布式构建和部署,可以将任务分配给多台计算机进行并行处理,从而加快构建速度和提高效率。

创建文件夹

mkdir -p /home/docker/jenkins/jenkins-data/jenkins_home

设置权限

chown -R 1000 /home/docker/jenkins/jenkins-data/jenkins_home

docker-compose.yaml文件安装

version: '3'
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    restart: always
    ports:
      - "8085:8080"
      - "50000:50000"
    volumes:
      - /home/docker/jenkins/jenkins-data/jenkins_home:/var/jenkins_home

启动docker

docker compose up

查看网站

访问以下网址

http://127.0.0.1:8085/

在这里插入图片描述

获取密码方式1

  • 如果是通过docker compose up启动的话,在console打印中既有相应密码

在这里插入图片描述

  • 如果没有及时记录,也可以通过docker的log查看,输入以下指令
docker logs jenkins

获取密码方式2

  • 进入容器,执行以下命令
docker exec -it jenkins bash
  • 直接cat打印密码
cat /var/jenkins_home/secrets/initialAdminPassword

默认密码是存放在/var/jenkins_home/secrets/initialAdminPassword中,记得及时更改

初始化jenkins

  • 选择"安装推荐的插件"

在这里插入图片描述

  • 等待插件加载

在这里插入图片描述

  • 创建管理员用户

在这里插入图片描述

  • 完成安装

在这里插入图片描述

配置jdk

获取jdk的方法1

  • 进入jenkins容器
docker exec -it jenkins bash
  • 然后通过以下指令
echo $JAVA_HOME

可以看到/opt/java/openjdk,这个路径就是jenkins容器里面自带的jdk,我们可以直接拿来使用,配置看下方配置方法即可

选择指定版本jdk的Jenkins镜像

在这里插入图片描述

  • 在此就可以找到相应jdk版本的Jenkins镜像,但jdk的版本现在只有11,17,21,大家可以按需选择

在这里插入图片描述

获取jdk的方法1

  • 此时如果你需要的jdk版本比较特殊,系统自带的和你的不符,比如我的项目需要使用的就是jdk12,对此,就需要我们自行下载安装了
  • 官网下载:https://www.oracle.com/java/technologies/downloads/
  • 点击“Java archive”
    在这里插入图片描述
  • 在Java SE中选择你要的版本

在这里插入图片描述

  • 在linux下选择你需要的包。jdk12版本是x64的,这里我用tar.gz的包

在这里插入图片描述

解压并复制到镜像内

  • 将下载的jdk-12.0.2_linux-x64_bin.tar.gz放到linux系统下,解压
tar -zxvf jdk-12.0.2_linux-x64_bin.tar.gz
  • 将文件夹复制到Jenkins容器内,`/opt/java``是容器自带jdk的目录,jdk12就与其放一起,便于管理
docker cp jdk-12.0.2 jenkins:/opt/java

Jenkins全局工具配置,新增JDK

在这里插入图片描述

  • 点击新增JDK

在这里插入图片描述

  • 别名你随意,JAVA_HOME为刚才复制进去的路径/opt/java/jdk-12.0.2,设置好后,记得点击应用—保存

在这里插入图片描述

  • 后面在构建环境配置时,就可以看到相应的jdk12版本

在这里插入图片描述

配置Git

新版本的Jenkins好像可以不用,默认配置即可,如果需要设置,按照下面设置即可

  • 进入容器,查看镜像内自带Git的路径
docker exec -it jenkins bash
which git
  • 查询后,git所在路径:/usr/bin/git,设置到全局工具配置即可

在这里插入图片描述

配置Maven

下载Maven

官方下载

在这里插入图片描述

wget下载

wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz

解压传入Jenkins容器

  • 先将下载的压缩包,放到linux服务器,然后解压
tar -zxvf apache-maven-3.9.6-bin.tar.gz 
  • 拷贝到容器里面
docker cp apache-maven-3.9.6/ jenkins:/opt

全局工具配置Maven

  • 进入全局工具配置里进行一下设置

Maven配置

在这里插入图片描述

Maven安装

在这里插入图片描述

配置SSH

发布版本还有一个重要的步骤就是远程连接运行服务器,此时我们就需要安装插件实现该功能

  • 来到插件页面,输入ssh,找到Publish Over SSHVersion,进行安装

下载Publish Over SSH插件

在这里插入图片描述

  • 安装完成

在这里插入图片描述

配置SSH Servers

  • 来到系统管理——系统配置——下拉到SSH Servers
  • Name:服务器的名称,按需设置
  • Hostname:服务器的host
  • Username:服务器的登陆账号
  • Remote Directory:登陆后操作的目录
  • 点击高级,按需选择你的验证方式,我这里是选择使用密码,勾选use password……
  • Password:服务器的登陆密码

在这里插入图片描述

  • Port:服务器的端口,默认是22,这里个人使用比较特殊,按需自行设置
    在这里插入图片描述

测试连接是否成功

  • 下拉,点击Test Configuration,看左侧的结果,提示Success即为设置成功
    在这里插入图片描述

Gitlab与Jenkins集成

Gitlab上创建代码发布专用用户,dev分支,拷贝项目URL

  • 在gitlab上面创建一个专门给Jenkins下载代码的用户,就叫他jenkins吧
  • 对应给该用户授权你要进行发布代码的项目

在这里插入图片描述

  • 创建dev分支,此步仅为创建一个git分支,专门用于dev,这里是测试一下等下不同分支同步是否能实现。不需要测试的可以跳过

在这里插入图片描述

  • 克隆项目用http方式,复制链接,这里想要使用ssh也可以,请自行配置ssh-key,这里就不重点讲了

在这里插入图片描述

新建任务,配置Gitlab设置

  • 输入名称,因为我们是要为ec-demo这个项目的dev环境进行构建,所以名称为ec-demo-dev
  • 选择“构建一个自由风格的软件项目”,确定

在这里插入图片描述

  • 在跳转后的页面中,源码管理——选择“Git”——Repository URL,输入刚才拷贝的项目URL

在这里插入图片描述

  • 添加Credentials(凭证)

在这里插入图片描述

  • 类型:username with password
  • 范围:全局。。。
  • 用户名:刚才创建的专用gtilab账号的用户名
  • 密码:刚才创建的专用gtilab账号的密码
  • ID和描述自行按需填写
    在这里插入图片描述
  • 指定分支:*/dev
  • 由于我们现在是要发布dev分支下的代码,所以这里修改成dev
    在这里插入图片描述
    随后点击保存即可

验证Jenkins是否能正常拉取Gitlab代码

  • 来到任务页面,点击左侧立即构建,如果下方出现有#1,且有绿色的对勾,表示成功构建,我们#1点击进入

在这里插入图片描述

  • 控制台输出中查看信息,核对一下commit信息和你提交的是否一致,SUCCESS表示拉取成功

在这里插入图片描述

  • 再回到任务界面,查看工作空间,看是否已经有你项目的代码,可以点击进去查看和你提交的是否一致

在这里插入图片描述
到此Jenkins拉取Gitlab代码成功

实现Gitlab的Hook触发Jenkins自动构建项目

Jenkins上安装Gitlab插件

  • 主页上进入插件管理

在这里插入图片描述

  • 在Available plugins中,搜索“gitlab”,好像是第一个,里面还带有点中文,这里由于个人是已经安装了的,就不重复弄了,反正是第一个,安装后出现如下界面
    在这里插入图片描述

获取Gitlab API token

  • 在gitlab中,点击用户头像——Edit profile
    在这里插入图片描述
  • Access Tokens——Add new token

在这里插入图片描述

  • Token name:按需设置
  • Select scopes:按需设置
  • 点击create personal access token,会有一个token,点开可以查看,只会显示一次,刷新后就会消失了,记得要记录好
    在这里插入图片描述

配置Gitlab插件设置

  • 进入系统配置

在这里插入图片描述

  • 下拉到Gitlab配置项
  • Connection name:自行按需设置
  • GitLab host URL:Gitlab的url

在这里插入图片描述

  • Credentials,此处需要进行添加,点击添加——Jenkins进入,配置页面

在这里插入图片描述

  • 类型:Gitlab API token
  • API token:使用我们上面在gitlab生成的api token

在这里插入图片描述

  • 设置完后点击保存

在这里插入图片描述

配置Gitlab的Integrations

  • 记得需要使用高权限的账号,才会有project的settings,进入Settings——Integrations,在右侧搜索jenkins

在这里插入图片描述

  • 触发条件可以自行选择
  • Jenkins server URL:jenkins的链接
  • SSL verification:如果是https就勾选然后自行配置

在这里插入图片描述

  • Project name:对应要触发构建的jenkins上面的项目名称,就是我们上面新建任务的名称:ec-demo-dev
  • Username:jenkins上的账号,可以专门给gitlab创建一个用户
  • Enter new password:gitlab创建的jenkins用户的密码
    在这里插入图片描述
  • 点击Test settings,出现Connection successful即为成功
    在这里插入图片描述

设置Jenkins构建触发器

  • 在安装完Gtilab插件后,这里就会多出Build……这个选项,勾选即可,记得保存
    在这里插入图片描述

测试Gitlab提交代码就触发自动构建

  • 只要提交代码,就会触发构建

在这里插入图片描述

缺点

但对于这种push就触发构建,存在一个问题,就是无论你提交哪个分支,或者main,都会触发,这对于多环境的项目就有点难以管理

  • 可以考虑使用webhook中的Push events——Wildcard pattern在这里插入图片描述

添加构建前步骤——移除旧文件

这里是构建前的准备工作,就做一步删除操作,因为我们是构建镜像,在容器里执行,原执行jar文件是在构建镜像的时候就拷贝到镜像里了,所以直接删除原执行jar文件,没有影响。
另外,先删除原执行jar文件也是为了确保执行的文件是最新的文件

  • 来到构建任务的配置中,点击构建环境,勾选Send files or execute commands over SSH before the build starts
  • Name:按照上面配置SSH服务器后,这里就可以直接进行选择

在这里插入图片描述

  • Remote directory:/home/ec-demo-dev,目标文件夹,如果不存在文件夹,会自行创建
  • Exec command:rm -rf /home/ec-demo-dev/ec-web.jar,要执行的指令

在这里插入图片描述

添加构建步骤——Maven打包

  • 经过上面的配置,我们实现了点击立即构建,就会自动从gitlab拉取代码的工作功能,现在我们要对拉取下来的项目进行Maven打jar包,只要简单配置即可,不会还有人弄个shell去跑吧?
  • 来到你的构建任务,进入配置,下拉到Build steps
  • 点击增加构建步骤,选择调用顶层Maven目标

在这里插入图片描述

  • Maven版本:上面如果有设置的话,这里就可以直接选择你配置了全局的
  • 目标:clean package,注意!这里不需要填完整的mvn clean package
  • 应用,保存即可

在这里插入图片描述

  • 立即构建,查看是否成功

在这里插入图片描述

  • 在工作空间,查看jar包是否生成

在这里插入图片描述

添加构建后步骤——通过SSH上传jar文件到服务器

  • 来到构建任务配置中。下拉到构建后操作,进行相关设置
  • 选择Send build artifacts over SSH
    在这里插入图片描述
  • Name:按照上面配置SSH服务器后,这里就可以直接进行选择
  • Source files:**/ec-main/target/ec-web.jar,要上传到服务器的文件,** 表示任意目录
  • Remove prefix:/ec-main/target,不应该在远程服务器上创建的文件路径的第一部分。比如按照上面的**/ec-main/target/ec-web.jar,会在目标服务器上创建/ec-main/target路径的文件夹,在这里Remove prefix设置/ec-main/target,就不会创建/ec-main/target路径的文件夹,而是直接把ec-web.jar放到Remote directory文件夹下
  • Remote directory:/home/ec-demo-dev,上传后文件要存放的路径,如果不存在文件夹,会自行创建
  • Exec command:上传后执行的指令,可自行按需设置

在这里插入图片描述

制作Dockerfile

  • 制作Dockerfile文件,可放在项目低下,与项目开发过程中一并拓展,前期就是比较简单的启动
# 使用 OpenJDK 12 作为基础镜像
FROM openjdk:12

# 设置工作目录
WORKDIR /home

# 将本地的 JAR 文件复制到容器中
COPY ec-web.jar /home/

# 指定容器启动时执行的命令
CMD ["java", "-jar", "/home/ec-web.jar"]

# 暴露端口号
EXPOSE 20008

添加构建后步骤——通过SSH上传Dockerfile到服务器,再通过指令重构并启动

  • 接着上面点击Add Transfer Set
  • Source files:Dockerfile,直接取项目下的Dockerfile
  • Remote directory:/home/ec-demo-dev,上传到的目标文件夹
  • Exec command:
    docker rm -f ec-web,删除ec-web容器,如果有启动,直接停止
    docker build -t ec-web /home/ec-demo-dev/,构建镜像
    docker run -d --name ec-web -p 20008:20008 ec-web,构建容器
    docker system prune -f,docker系统清理,因为镜像是直接生成,会有很多冗余数据,要清理一下
    以上docker指令可能有不当之处,请自行留意

在这里插入图片描述

前端Node.js打包集成

  • 具体打包流程就不赘述,主要讲node.js的安装

NodeJS插件安装

  • 系统管理——插件管理——搜索“nodejs”——安装插件
    在这里插入图片描述

NodeJS配置在这里插入图片描述

配置到对应作业中

  • 去到对应的作业——配置——下拉到“构建环境”——勾上“Provide Node & npm bin/ folder to PATH”——选择版本即可
  • 这样你后面的捕捉npm指令都会引用这个node.js版本,都是自动安装好给你的
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值