自动化构建平台(四)Linux搭建私有CI/CD工具之Jenkins的安装

news2024/9/23 17:20:43

文章目录

  • 前言
  • 一、Jenkins本地安装
    • 1、使用war文件安装
    • 2、使用yum或者app-get安装
  • 二、docker安装Jenkins
  • 三、Jenkins登录、配置操作
  • 总结


前言

在CD领域,Jenkins应该是元老级别的存在,很多现代的devs平台多少都能看到Jenkins的影子,但是Jenkins并没有落寞,在自动化构建平台的白嫖界里,Jenkins依然还是一个不错的选择。今天给大家介绍Jenkins的安装。大家可以点击下面 官网查看详细信息。

Jenkins官网点击这里


一、Jenkins本地安装

Jenkins采用Java开发,所以本地安装时,主机上必须要有Java环境,目前最新的版本需要jdk17。主机理想的配置要求:

  • 4G 内存
  • 50G 硬盘
  • JDK17

1、使用war文件安装

Jenkins可以直接运行发布的war文件来启动,在Linux下可以直接使用下面命令来运行:

JENKINS_HOME=my-jenkins-config java -jar jenkins.war

但是这样是运行在前端,很不方便后续的操作,这里我整理了一个Jenkins的操作脚本,内容如下:

#!/bin/bash
#!/bin/bash
set -eu
if [ "${#}" -lt 1 ]; then
  echo "Usage: $0 {start|stop|restart}"
	exit
fi
JAVA_EVN=$JAVA_HOME
if [ "$JAVA_EVN" == "" ];then
    echo "java not found"
    exit 0
fi
BASE_DIR=$(cd `dirname $0`; pwd)
JAR_PATH="$BASE_DIR/jenkins.war"
APP_NAME=Jenkins
APP_HTTP_PORT=7777
APP_LOG=$BASE_DIR/jenkins.log
JAVA_OPTS="-server -Xms2024m -Xmx2024m -Xmn512m"
APP_ARGS="--httpPort=${APP_HTTP_PORT}"
function start(){
  echo "<-------------------------------------->"
  echo "[$APP_NAME] ... start ..."
  nohup $JAVA_EVN/bin/java $JAVA_OPTS -jar $JAR_PATH $APP_ARGS >> $APP_LOG 2>&1 &
  if [ "$?" -eq 0 ]; then
    echo "[$APP_NAME] start success"
  else
    echo "[$APP_NAME] start fail"
  fi
}
function stop(){
  echo "<-------------------------------------->"
  echo "[$APP_NAME] ... stop ..."
  P_ID=`ps -ef | grep -w "$JAR_PATH" | grep -v "grep" | awk '{print $2}'`
  if [ "$P_ID" != "" ]; then
      echo "stop ......"
      kill  -15 $P_ID
      sleep 3
      if [ "$?" -eq 0 ]; then
          echo "[$APP_NAME] stop success"
      else
          echo "[$APP_NAME] stop fail"
      fi
  fi
}
function restart(){
  echo "<-------------------------------------->"
  echo "[$APP_NAME] ... restart ..."
	stop
	sleep 3
	start
}
case "$1" in
	"stop")
		stop
		;;
	"start")
		start
		;;
	"restart")
		restart
		;;
	*)
	echo "Usage: $0 {start|stop|restart}"
	;;
esac

然后使用start|stop|restart命令即可操作,也可修改脚本中的APP_HTTP_PORT启动端口,启动成功访问:
http://ip:7777

2、使用yum或者app-get安装

Centos/Redhat/Oracle:
第一步:下载yum源并导入到本地

sudo wget --no-check-certificate -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-2023.key

第二步:安装

yum install jenkins

第三部:卸载(可选)

sudo yum remove jenkins

Ubuntu/Debian:
第一步:下载app-get源并导入到本地

sudo wget -O /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key && echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null

第二步:安装

sudo apt-get update && apt-get install jenkins

第三部:卸载(可选)

sudo app-get remove jenkins

通过这种方式安装的,配置文件所在地是:/lib/systemd/system/jenkins.service

通过修改Environment的相关参数即可。比如启动端口:Environment="JENKINS_PORT=8080"默认为8080,可以修改为自己想要的端口.
具体的操作可通过下面命令来完成:

systemctl status jenkins  #查看状态
systemctl start jenkins  #启动服务
systemctl stop jenkins  #停止服务
systemctl restart jenkins  #重启服务

二、docker安装Jenkins

docker安装很简单,运行下面命令即可:

docker run \
-u root \
--restart=always \
--name jenkins \
--network host \
-p 7777:8080 \
-p 50000:50000 \
-v /usr/local/jenkins:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
-v /var/run/docker.sock:/var/run/docker.sock \
-e JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -Duser.timezone=Asia/Shanghai" \
-d jenkins/jenkins

这里我们将宿主机的/usr/local/jenkins挂载到容器里。

三、Jenkins登录、配置操作

如果是本地安装,默认情况下如果不指定JENKINS_HOME的路径,默认会在{userr.home}/.jenkins 目录下面

通过上面的安装步骤,安装完成后,我们就可以访问Jenkins,上面我们使用7777作为启动端口,然后访问:
http://192.168.101.170:7777
在这里插入图片描述

默认用户:admin
默认密码:{JENKINS_HOME}/secrets/initialAdminPassword
上面我们采用war文件模式安装,查看密码:

cat /root/.jenkins/secrets/initialAdminPassword

登录成功后需要初始化操作:
在这里插入图片描述
自己来选择插件,点击后系统会自动为我们勾选一些插件,我们先就安装这些插件,等后面需要用到其他的了再安装,直接点击下一步:
在这里插入图片描述

安装需要等待一段时间,完成来到下一步:
在这里插入图片描述

可以创建一个管理员,也可以用之前的管理员继续登录。我们重新创建一个管理员:
在这里插入图片描述
点击保存
在这里插入图片描述
开始使用
在这里插入图片描述

至此,我们已安装完Jenkins。


总结

这里建议大家使用本地安装Jenkins,因为在后面的构建操作中,有许多地方会涉及到路径问题,如果使用docker安装,需要额外注意路径的问题。

另外有些项目可能需要借助宿主机的本地环境才能进行构建,如果使用docker安装操作就很麻烦,本地安装的话可以直接使用宿主机的系统环境。

后续的章节中继续为大家介绍如何使用Jenkins来自动化代码构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nucleic Acids Research | scATAC-seq+CUTTag探究关键转录因子对视网膜细胞分化的调控作用

在中枢神经系统发育过程中&#xff0c;多能神经祖细胞如何产生不同的神经细胞类型仍然知之甚少。最近的scRNA-seq研究已经描绘了包括神经视网膜在内的许多神经系统中单个神经细胞类型的发育轨迹。进一步了解神经细胞多样性的形成需要了解表观遗传景观如何沿着个体细胞谱系变化以…

Java中继承的作用及解析

在 Java 中&#xff0c;继承是一种非常重要的面向对象编程特性。它的主要作用包括以下几个方面&#xff1a; 代码复用&#xff1a;通过继承&#xff0c;子类可以复用父类的代码&#xff0c;包括属性和方法。这样可以避免重复编写相同的代码&#xff0c;提高代码的复用性和可维护…

Qt/C++音视频开发67-保存裸流加入sps/pps信息/支持264/265裸流/转码保存/拉流推流

一、前言 音视频组件除了支持保存MP4文件外&#xff0c;同时还支持保存裸流即264/265文件&#xff0c;以及解码后最原始的yuv文件。在实际使用过程中&#xff0c;会发现部分视频文件保存的裸流文件&#xff0c;并不能直接用播放器播放&#xff0c;查阅资料得知原来是缺少sps/p…

开源问答平台网站源码系统 带完整的搭建教程

互联网的快速发展&#xff0c;用户对于信息的需求日益增长。问答平台以其独特的形式&#xff0c;让用户能够快速地找到答案、分享经验和交流想法。然而&#xff0c;市场上的问答平台大多数都是封闭的&#xff0c;不仅限制了用户的自由度和参与度&#xff0c;也增加了开发者和运…

C 嵌入式系统设计模式 19:保护调用模式

本书的原著为&#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》&#xff0c;讲解的是嵌入式系统设计模式&#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。本文章描述嵌入式并发和资源管理模式之五…

Linux服务器搭建超简易跳板机连接阿里云服务器

简介 想要规范内部连接阿里云云服务器的方式&#xff0c;但是最近懒病犯了&#xff0c;先搞一个简易式的跳板机过渡一下&#xff0c;顺便在出一个教程&#xff0c;其他以后再说&#xff01; 配置方法 创建密钥 登录阿里云&#xff0c;找到云服务器ECS控制台&#xff0c;点击…

Unity 脚本-生命周期常用函数

在Unity中&#xff0c;万物皆是由组件构成的。 右键创建C&#xff03;脚本&#xff0c;拖动脚本到某物体的组件列表。 生命周期相关函数 using System.Collections; using System.Collections.Generic; using UnityEngine;// 必须要继承 MonoBehaviour 才是一个组件 // 类名…

分付在哪些商户可以使用消费,微信分付怎么提取出来到余额上面来?

分付是一款信用支付产品&#xff0c;用户可以使用分付进行线上线下的消费支付。下面是使用分付的一些方法&#xff1a; - 开通分付&#xff1a;在微信中搜索并开通分付服务&#xff0c;按照提示完成实名认证和绑定银行卡等操作。 - 线上支付&#xff1a;在支持分付的线上商户…

《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

1.简介 按宏哥计划&#xff0c;本文继续介绍WebDriver关于元素定位大法&#xff0c;这篇介绍定位倒数二个方法&#xff1a;By xpath。xpath 的定位方法&#xff0c; 非常强大。 使用这种方法几乎可以定位到页面上的任意元素。 2.什么是xpath&#xff1f; xpath 是XML Path的…

六、矩阵问题

73、矩阵置零&#xff08;中等&#xff09; 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a…

OpenAI工作环境曝光:高薪背后的996;Quora的转变:由知识宝库至信息垃圾场

&#x1f989; AI新闻 &#x1f680; OpenAI工作环境曝光&#xff1a;高薪背后的996 摘要&#xff1a;近日&#xff0c;多位OpenAI匿名员工在求职网站Glassdoor上披露了公司的工作环境和公司文化&#xff0c;包括高薪水和优厚的福利待遇&#xff0c;但同时伴随着996的加班文化…

pdf编辑软件哪个好用?5款PDF编辑器分享

pdf编辑软件哪个好用&#xff1f;PDF编辑软件在现代办公和学术研究中发挥着举足轻重的作用&#xff0c;它们不仅具备基础的编辑和修改功能&#xff0c;还能够支持多种注释工具&#xff0c;帮助我们高效地管理和整理PDF文件。无论是需要调整文档布局、添加文本或图像&#xff0c…

程序员的金三银四求职宝典:如何在关键时期脱颖而出?

个人主页&#xff1a;17_Kevin-CSDN博客 随着春天的脚步渐近&#xff0c;程序员们的求职热潮也随之而来。在这个被称为“金三银四”的招聘季&#xff0c;如何从众多求职者中脱颖而出&#xff0c;成为了许多程序员关注的焦点。本文将为你提供一份全面的求职宝典&#xff0c;助你…

现货大宗软件数据处理模块源码

现货大宗软件数据处理模块源码&#xff1a;揭秘背后的技术魅力 在当今的大数据时代&#xff0c;无论是金融、贸易还是其他领域&#xff0c;数据处理都显得尤为重要。特别是对于现货大宗交易来说&#xff0c;数据处理不仅关乎交易的速度与效率&#xff0c;更直接影响到交易的成…

基于嵌入式的车载导航定位系统设计

一、前言 1.1 项目介绍 【1】项目背景 随着汽车工业的飞速发展和智能化技术的不断突破&#xff0c;车载导航系统作为现代汽车不可或缺的一部分&#xff0c;在人们的日常生活中扮演着越来越重要的角色。它不仅能够提供精确的路线导航&#xff0c;还能提供丰富的地理信息和娱乐…

Java:JVM基础

文章目录 参考JVM内存区域程序计数器虚拟机栈本地方法栈堆方法区符号引用与直接引用运行时常量池字符串常量池直接内存 参考 JavaGuide JVM内存区域 程序计数器 程序计数器是一块较小的内存空间&#xff0c;可以看做是当前线程所执行的字节码的行号指示器&#xff0c;各线程…

mprpc分布式RPC网络通信框架

mprpc 项目介绍 该项目是一个基于muduo、Protobuf和Zookeeper实现的轻量级分布式RPC网络通信框架。 可以把任何单体架构系统的本地方法调用&#xff0c;重构成基于TCP网络通信的RPC远程方法调用&#xff0c;实现同一台机器的不同进程之间的服务调用&#xff0c;或者不同机器…

[ai笔记14] 周鸿祎的ai公开课笔记1

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第14篇分享&#xff01; 本周二月的最后一周&#xff0c;并不是闲下来了&#xff0c;反而是开始进行一些更多的深入实践&#xff0c;关于gpt的主体架构、关于prompt&#xff0c;同时也看了不少书和直播&…

【Linux】基本指令(中)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 man指令 cp指令 mv指令 cat指令 more指令 less指令 head指令 …

Go语言中的时间控制:定时器技术详细指南

Go语言中的时间控制&#xff1a;定时器技术详细指南 引言定时器基础创建和使用time.Timer使用time.Ticker实现周期性任务定时器的内部机制小结 使用time.Timer实现简单的定时任务创建和启动定时器停止和重置定时器定时器的实际应用小结 利用time.Ticker处理重复的定时任务创建和…