Jenkins 基础配置

博客地址:https://www.cnblogs.com/zylyehuo/

参考链接
解决:Jenkins: signature verification failed in update site ‘default‘ (show details)

jenkins 下一切皆文件

虚拟机基本配置

  • Jenkins 基础配置

Jenkins 安装

cd /usr/local/src/ rz  # 选择以下安装包(xshell 软件命令) 
  • Jenkins 基础配置

下载完安装包如下所示

  • Jenkins 基础配置

依次执行以下命令,进行安装

rpm -ivh jdk-8u121-linux-x64.rpm # java -version  # 检验是否安装成功  rpm -ivh jenkins-2.99-1.1.noarch.rpm 

启动 jenkins 服务

systemctl start jenkins 

设置 jenkins 服务开机自启

systemctl enable jenkins 

查看 jenkins 服务启动状态

systemctl status jenkins 

查看服务端口启用情况(jenkins 默认占用 8080 端口)

netstat -lnupt 

Jenkins 初始化配置

通过浏览器访问 10.0.0.12:8080(ip + 8080 端口)

查询本机 ip 的方式

ip addr 
  • Jenkins 基础配置
  • Jenkins 基础配置

获取初始化密码

cat /var/lib/jenkins/secrets/initialAdminPassword 

输入初始化密码后点击 Continue,出现如下界面

  • Jenkins 基础配置

点击 ×,不选择提供的安装选项

  • Jenkins 基础配置
  • Jenkins 基础配置

点击 Start using Jenkins

  • Jenkins 基础配置
  • Jenkins 基础配置

由于默认 jenkins 的密码较复杂,所以首先更改 admin 用户的密码

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

Jenkins 插件管理

  • Jenkins 基础配置
  • Jenkins 基础配置

通过安装包加载插件

rz  # 选择安装包(xshell 软件命令) 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

在 jenkins 插件目录中安装插件

cd /var/lib/jenkins/plugins/ 
  • Jenkins 基础配置
  • Jenkins 基础配置

解压安装包

tar xf plugins.tar.gz 
  • Jenkins 基础配置

将 plugins 中的文件全部复制到 jenkins 插件目录下

cd plugins  mv * /var/lib/jenkins/plugins/ 
  • Jenkins 基础配置

检查是否复制成功

cd /var/lib/jenkins/plugins/  ll 

重启 jenkins 服务

systemctl restart jenkins 

回到浏览器中会发现已加载插件(注:非必要不更新)

  • Jenkins 基础配置

Jenkins 目录介绍

  • Jenkins 基础配置

通过命令查看目录

cd /var/lib/jenkins/plugins/  rpm -ql jenkins 
  • Jenkins 基础配置

Jenkins 构建一个自由风格的软件项目

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

执行创建的构建任务

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

修改 jenkins 用户为 root 用户(方便后续认证管理)

vim /etc/sysconfig/jenkins 
  • Jenkins 基础配置

重启 jenkins 服务

systemctl restart jenkins 

获取 gitlab 源代码

前提准备

安装 git

yum -y install git 

ssh 配置,进行权限认证

ssh-keygen -t rsa  # 加三次回车  cat /root/.ssh/id_rsa.pub  # 复制公钥,配置到 gitlab 上 
  • Jenkins 基础配置
  • Jenkins 基础配置

点击“立即构建”,检查是否配置无误

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

也可以在终端查看是否拉取源代码成功

cd /var/lib/jenkins/workspace/My-freestyle-job/  ll 
  • Jenkins 基础配置

使用拉取的源代码部署 html 网站

在 ci-node1(10.0.0.11)上安装 httpd(Apache)服务,并配置服务端口为 10001

cd  yum -y install httpd 
  • Jenkins 基础配置
vim /etc/httpd/conf/httpd.conf 
  • Jenkins 基础配置

重启 httpd 服务

systemctl restart httpd 

查看端口

netstat -lnupt 
  • Jenkins 基础配置

在浏览器中访问 10.0.0.11:10001

  • Jenkins 基础配置

配置 ci-node2(10.0.0.12)到 ci-node1(10.0.0.11)的 ssh 免密码登录

ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.0.0.11  ssh 10.0.0.11  # 测试是否配置成功  exit  # 断开连接 

在 ci-node2(10.0.0.12)上编写打包脚本

mkdir -p /server/scripts  cd /server/scripts  vim /server/scripts/deploy.sh 

/server/scripts/deploy.sh

#!/bin/bash  #目标服务器 IP 地址 host=$1  #job 名称 job_name=$2  #包名 name=web-$(date +%F)-$(($RANDOM+10000))  #打包 cd /var/lib/jenkins/workspace/${job_name} && tar czf /opt/${name}.tar.gz ./*  #发送包到目标服务器 ssh ${host} "cd /var/www/ && mkdir ${name}" scp /opt/${name}.tar.gz $host:/var/www/${name}  #解包 ssh ${host} "cd /var/www/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz"  #使用软链接方式部署服务 ssh ${host} "cd /var/www && rm -rf html && ln -s /var/www/${name} /var/www/html"  

/server/scripts/deploy.sh(无注释版)

#!/bin/bash  host=$1 job_name=$2 name=web-$(date +%F)-$(($RANDOM+10000))  cd /var/lib/jenkins/workspace/${job_name} && tar czf /opt/${name}.tar.gz ./* ssh ${host} "cd /var/www/ && mkdir ${name}" scp /opt/${name}.tar.gz $host:/var/www/${name} ssh ${host} "cd /var/www/${name} && tar xf ${name}.tar.gz && rm -f ${name}.tar.gz" ssh ${host} "cd /var/www && rm -rf html && ln -s /var/www/${name} /var/www/html"  

执行 deploy.sh 脚本

sh /server/scripts/deploy.sh 10.0.0.11 My-freestyle-job 

检查是否传输成功

# 在 ci-node1(10.0.0.11)上 ll /var/www/web-2023-08-30-39547  # 在 ci-node2(10.0.0.12)上 ll /opt/ 
  • Jenkins 基础配置
  • Jenkins 基础配置

在浏览器中访问 10.0.0.11:10001

  • Jenkins 基础配置

在 Jenkins 中配置执行 deploy.sh 部署脚本

  • Jenkins 基础配置
  • Jenkins 基础配置
# 在 Command 中添加 shell 命令,执行脚本 sh /server/scripts/deploy.sh 10.0.0.11 ${JOB_NAME} 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

检查是否传输成功

# 在 ci-node1(10.0.0.11)上 ll /var/www/web-2023-08-30-31666  # 在 ci-node2(10.0.0.12)上 ll /opt/ 

Jenkins 配置 gitlab 自动触发构建(普通公司不建议使用,除非测试非常全面)

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

将 URL 和 Secret Token 配置到 gitlab 上

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

测试是否配置成功

gitlab 模拟测试

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

使用 ci-node1(10.0.0.11)测试

  • Jenkins 基础配置
cd  git clone git@10.0.0.11:zylyehuo/monitor.git  cd monitor/  vim index.html 

如图修改为 zylyehuo持续集成测试,进行测试

  • Jenkins 基础配置
git add .  git commit -m "modify index.html on ci-node1"  git push -u origin master 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

Jenkins 配置返回构建状态到 gitlab

获取 gitlab 的 Access Tokens

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

配置 jenkins

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

配置测试

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

改动 index.html 进行测试

cd ~/monitor/  vim index.html 
  • Jenkins 基础配置
git add .  git commit -m "modify index.html on ci-node1 second"  git push -u origin master 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

Jenkins 安装、配置 maven(用于 Java 仓库)(Centos 7)

Maven 是一个项目管理和综合工具。Maven 提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven 使用标准的目录结构和默认构建生命周期。

Maven 简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven 增加可重用性并负责建立相关的任务。

Maven 项目的结构和内容在一个 XML 文件中声明,pom.xml 项目对象模型(POM),这是整个 Maven 系统的基本单元。用来管理项目的构建,相关性和文档。最强大的功能就是能够自动下载项目依赖库。

cd /usr/local/src/  rz  # xshell 指令,选择 3.3.9版本的 maven 安装包  tar xf apache-maven-3.3.9-bin.tar.gz  mv apache-maven-3.3.9 /usr/local/ 
  • Jenkins 基础配置
  • Jenkins 基础配置

由于文件名字太长,故进行软连接

cd /usr/local/  ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven 
  • Jenkins 基础配置

检查是否安装成功

/usr/local/maven/bin/mvn -v 
  • Jenkins 基础配置

将 mvn 命令加载到环境变量中

vim /etc/profile # export PATH=/usr/local/apache-maven-3.3.9/bin/:$PATH  source /etc/profile 

检验是否配置成功

mvn -v 
  • Jenkins 基础配置

上传一个 Java 项目进行测试使用

cd /usr/local/maven/  rz 
  • Jenkins 基础配置
mv hello-world.tar.gz /root/  tar xf hello-world.tar.gz 
  • Jenkins 基础配置

mvn 命令

位于有 pom.xml 文件的路径下

构建/打包

mvn package  # 第一次执行时间会比较久 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

清除上一次构建的结果

mvn clean 

测试

mvn test 

将打包好的 jar/war 文件复制到 .m2 本地仓库中,供其他模块使用

mvn install 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

命令组合使用

mvn clean package  # 按照顺序执行,先清除上一次构建的结果,再构建/打包 

Jenkins 安装、配置 nexus(搭建 Maven 私服)

Nexus 是一个强大的 Maven 仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。

Nexus 在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间。

Nexus 是一套“开箱即用”的系统不需要数据库,它使用文件系统加 Lucene 来组织数据。

Nexus 使用 ExtJS 来开发界面,利用 Restlet 来提供完整的 REST APIs,通过 m2eclipse 与 Eclipse 集成使用。

Nexus 支持 WebDAV 与 LDAP 安全身份认证。

Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。

在 ci-node3(10.0.0.13)上

cd /usr/local/src/  rz 
  • Jenkins 基础配置
rpm -ivh jdk-8u121-linux-x64.rpm  # 安装 jdk # java -version  # 测试是否安装成功 
mv nexus-3.13.0-01-unix.tar.gz /usr/local/  cd /usr/local/  tar xf nexus-3.13.0-01-unix.tar.gz  # 解压  mv nexus-3.13.0-01-unix.tar.gz ./src/  ln -s /usr/local/nexus-3.13.0-01/ /usr/local/nexus  # 软连接 

调整配置文件

cd /usr/local/nexus/bin/  vim nexus.rc 
  • Jenkins 基础配置

nexus 命令

启动 nexus(带输出)

/usr/local/nexus/bin/nexus run 
  • Jenkins 基础配置

浏览器访问 10.0.0.13:8081,测试是否启动成功

  • Jenkins 基础配置

启动 nexus(不带输出)

/usr/local/nexus/bin/nexus start 
  • Jenkins 基础配置

停止 nexus

/usr/local/nexus/bin/nexus stop 

查看 nexus 状态

/usr/local/nexus/bin/nexus status 
  • Jenkins 基础配置

使用 admin 默认账户登录 nexus

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

Maven 全局(整个项目)配置

  • Jenkins 基础配置
cd /usr/local/maven/conf/  vim settings.xml 
<!--在<profiles></profiles>之间加入下面的配置--> <profile>   <id>my-nexus</id>   <repositories>   <!-- 私有库地址-->     <repository>       <id>nexus</id>       <name>nexus</name>       <url>http://10.0.0.13:8081/repository/maven-public/</url>       <snapshots>         <enabled>true</enabled>       </snapshots>       <releases>         <enabled>true</enabled>       </releases>     </repository>   </repositories>   <pluginRepositories>   <!--插件库地址-->     <pluginRepository>       <id>nexus</id>       <url>http://10.0.0.13:8081/repository/maven-public/</url>       <releases>         <enabled>true</enabled>       </releases>       <snapshots>         <enabled>true</enabled>       </snapshots>     </pluginRepository>   </pluginRepositories> </profile>  <!--在<settings></settings>之间加入下面的配置,激活使用上面的配置--> <activeProfiles>   <activeProfile>my-neuxs</activeProfile> </activeProfiles> <!--注:profile 名字要对应-->  <!--在<mirros></mirros>之间加入如下配置--> <mirror>   <id>nexus-myself</id>   <!--*指的是访问任何仓库都使用我们的私服-->   <mirrorOf>*</mirrorOf>   <name>Nexus myself</name>   <url>http://10.0.0.13:8081/repository/maven-public/</url> </mirror> 
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

删除原先下载的 .m2 本地仓库,防止其直接在本地仓库下载,而不去访问远程仓库

cd /root/hello-world  rm -rf /root/.m2/  mvn clean 

此时可以发现,访问的远程仓库地址以及发生改变,代表私服已经配置成功

  • Jenkins 基础配置
  • Jenkins 基础配置

Jenkins 构建一个 maven 项目

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

在 gitlab 上新建项目,用于在 jenkins 中进行配置

  • Jenkins 基础配置
  • Jenkins 基础配置

将本地仓库进行 git 初始化

git config --global user.name zylyehuo  git config --global user.email 1369745233@qq.com  git init  git remote add origin git@10.0.0.11:root/helloworld.git  git add .  git commit -m "Initial commit"  git push -u origin master 
  • Jenkins 基础配置
  • Jenkins 基础配置

将 gitlab 仓库中 ssh 地址配置到 jenkins 中

  • Jenkins 基础配置
  • Jenkins 基础配置

测试是否配置成功

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

Jenkins 构建一个 Pipeline 项目

Jenkins pipeline 是 Jenkins 2.0 的精髓, ,是帮助 Jenkins 实现 CI 到 CD 转变的重要角色。简单来说,就是一套运行于 Jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline 的实现方式是一套 Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本,并且 Jenkins 支持从代码库直接读取脚本,从而实现了Pipeline as Code 的理念。

Pipeline 的基本概念

Stage:一个 Pipeline 可以划分为多个 Stage,每个 Stage 包含一组操作(Step)。注意一个 Stage 可以跨多个 Node 执行,即 Stage 实际上是 Step 的逻辑分组。

Node:一个 Node 就是一个 Jenkins 节点, 可以是 Master,或者是 Slave, 提供 Pipeline 中 Step 的具体运行环境。

Step:是最基本的操作单元,可以是创建一个目录、从代码库中 checkout 代码、执行一个 shell 命令、构建 Docker 镜像、将服务发布到 Kubernetes 集群中。Step 由 Jenkins 和 Jenkins Plugin 各种插件提供。

Jenkinsfile 语法

Jenkins Pipeline 支持两种语法, 一种 Declarative Pipeline(声明式), 一种 Scripted Pipeline(脚本式)。 声明式的 Pipeline 限制用户使用严格的预选定义的结构,是一种声明式的编程模型, 对比脚本式的 Pipeline 学习起来更加简单;脚本式的 Pipeline 限制比较少,结构和语法的限制由 Groovy 本身决定,是一种命令式的编程模型。一般来说 jenkinsfile 会被放在代码库的根目录下。当然也可以在 Web 页面定义。

Declarative Pipeline(声明式)(严格但简单)

声明式的 Pipeline 有严格的预定义格式结构, 最外层必须是 pipeline{},紧接着是 agent 指示 Jenkins 分配一个执行器和工作空间来执行下面的 Pipeline,stages 和 steps 是申明式 Jenkinsfile 必须的,所有的 stage 必须要定义在 stages 里,stage 的名称不能重复,每一个 stage 下的 step (具体的执行步骤)要定义在一个 steps 里

  • Jenkins 基础配置
pipeline {   agent any    stages {     stage('Build') {       steps {         echo 'Building..'       }     }     stage('Test') {       steps {         echo 'Testing..'       }     }     stage('Deploy') {       steps {         echo 'Deploying....'       }     }   } } 

Scripted Pipeline(脚本式)(需要学习 Groovy 脚本语言)

在脚本式 jenkinsfile 里,你可以定义一个 node 或者多个 node 块,然后在 node 块里定义你的 stage,在 stage 里定义你的 step 即可。

node {   stage('Build') {     //   }   stage('Test') {     //   }   stage('Deploy') {     //   } } 

通过 Web 页面创建 Pipeline 项目

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

测试效果

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

通过 SCM 获取 Jenkinsfile,创建 Pipeline 项目

在 gitlab 上的 monitor 仓库的根目录下创建一个 Jenkinsfile(名字尽量固定是这个)文件

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
pipeline {     agent any     stages {         stage('Stage 1') {             steps {                 echo 'Hello world!'             }         }     } } 

在 Jenkins 新建一个 pipeline job

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

测试配置是否成功

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

在终端查看文件

ll /var/lib/jenkins/workspace/My-pipeline-job01 
  • Jenkins 基础配置

部署到 httpd 服务下

修改 gitlab 中 Jenkinsfile 文件

  • Jenkins 基础配置
  • Jenkins 基础配置

此 Jenkinsfile 包括五个 stage,分为 replace file、unit test、package、deploy、test,对于非编译项目,一般包括这五个阶段。

pipeline {   agent any    stages {     stage('replace file') {       steps {         echo "replace config file use cp "       }     }      stage('unit test') {       steps {         echo "unit test "       }     }      stage('package') {       steps {         sh 'tar czf /opt/web-${BUILD_ID}.tar.gz ./* --exclude=./git --exclude=Jenkinsfile'       }     }      stage('deploy') {       steps {         sh 'ssh 10.0.0.11 "cd /var/www && mkdir web-${BUILD_ID}"'         sh 'scp /opt/web-${BUILD_ID}.tar.gz 10.0.0.11:/var/www/web-${BUILD_ID}'         sh 'ssh 10.0.0.11 "cd /var/www/web-${BUILD_ID} && tar xf web-${BUILD_ID}.tar.gz && rm -f web-${BUILD_ID}.tar.gz"'         sh 'ssh 10.0.0.11 "cd /var/www && rm -rf html && ln -s /var/www/web-${BUILD_ID}" /var/www/html'       }     }      stage('test') {       steps {         echo "deploy after test "       }     }   } } 
  • Jenkins 基础配置
  • Jenkins 基础配置

在 jenkins 中点击“立即构建”,查看效果

  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置
  • Jenkins 基础配置

在浏览器中访问 10.0.0.11:10001,查看效果

systemctl start httpd  # 若访问浏览器打不开,先检查服务是否启动 
  • Jenkins 基础配置

Pipeline 语法生成器(Pipeline Syntax)

  • Jenkins 基础配置
  • Jenkins 基础配置
发表评论

评论已关闭。

相关文章