首页 > 其他分享 >Jenkins实现自动拉取Git代码,构建镜像,并上传到远程镜像仓库

Jenkins实现自动拉取Git代码,构建镜像,并上传到远程镜像仓库

时间:2024-10-28 14:44:53浏览次数:5  
标签:Git sudo 拉取 env jenkins Jenkins 镜像 DOCKER

一. 安装Jenkins

Jenkins官方文档:https://www.jenkins.io

  1. 下面采用Linux进行安装,其它安装方式请参考官方文档
sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
sudo systemctl daemon-reload
  1. 使 Jenkins 服务在启动时启动
sudo systemctl enable jenkins
  1. 启动 Jenkins 服务
sudo systemctl start jenkins
  1. 检查 Jenkins 服务的状态
sudo systemctl status jenkins

如果所有内容都已正确设置,您应该会看到如下输出:
在这里插入图片描述

PS:需要关闭防火墙,Jenkins默认端口为8080,如果8080端口被占用,需要更改Jenkins的端口号

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
  1. 浏览器访问http://ip:port,密码可以通过Jenkins日志进行查看(sudo systemctl status jenkins)

在这里插入图片描述
在这里插入图片描述

  1. 插件二选一(安装推荐的/自行安装插件)

  2. 创建第一个管理员用户


二. 配置相关

提示:您的Linux上需要安装上JDK、Docker、Maven、Git,并配置上环境变量

  1. 按照以下截图配置


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 这个地方可以添加凭据,录入Git的用户名、密码和描述即可,ID不用填写,保存成功后自动出现(凭据ID)
    在这里插入图片描述

三. 使用脚本方式实现功能

提示:这里使用的gitee做的代码托管

  1. 在项目根目录添加Dockerfile文件,根据实际情况替换里面的内容,然后上传到gitee
FROM registry.cn-hangzhou.aliyuncs.com/public-toolbox/maven:3.8.3-openjdk-8-aliyun AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","-f","/home/app/pom.xml","clean","package","-Dmaven.test.skip=true"]

FROM registry.cn-hangzhou.aliyuncs.com/public-toolbox/openjdk:8-jdk-alpine
COPY --from=build /home/app/target/jenkins-0.0.1-SNAPSHOT.jar /usr/local/lib/jenkins-0.0.1-SNAPSHOT.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/usr/local/lib/jenkins-0.0.1-SNAPSHOT.jar"]
  1. 新建管道,名称自定义
    在这里插入图片描述
    其它配置自己看着配,我这里只配置了个参数
    在这里插入图片描述
  2. 编写流水线脚本,这里我使用了阿里云镜像仓库作为托管,需要先在阿里云镜像服务上创建命名空间
    在这里插入图片描述
pipeline {
	agent any
	
	environment {
		GIT_URL = '你的仓库地址'
		GIT_BRANCH_NAME = '*/master'
		GIT_CREDENTIALS_ID = 'Git的凭据ID'
		DOCKER_REGISTRY = "阿里云镜像仓库地址"
		DOCKER_USERNAME = "阿里云镜像仓库用户名"
		DOCKER_PASSWORD = "阿里云镜像仓库密码"
		DOCKER_NAMESPACE = '阿里云镜像仓库命名空间'
		DOCKER_IMAGE_NAME = '镜像名称'
		DOCKER_DEF_TAG = '默认版本号'
	}
	
	//调用前面配置的参数
	parameters {
		string(name: 'IMAGE_TAGS',defaultValue: '',description: '自定义镜像标签')
	}
	
	stages {
		stage('Git拉取代码') {
			steps{
				//从gitee拉取分支代码
				checkout([$class: 'GitSCM',
					branches: [[name: env.GIT_BRANCH_NAME]],
					userRemoteConfigs: [[url: env.GIT_URL,
						credentialsId: env.GIT_CREDENTIALS_ID]]])
			}
		}
		
		stage('选择标签') {
			steps {
				script {
					//获取当前构建的自定义tag
					def imageTags = params.IMAGE_TAGS
					echo "Self defined tag: ${imageTags}"
					//如果自定义参数不为空,则使用自定义参数作为版本号,否则使用默认版本号
					if (imageTags != '') {
						echo "Building with self defined tag: ${imageTags}"
						env.BUILD_TAG = params.IMAGE_TAGS
					} else {
						echo "No tag specified, using default tag: latest"
						env.BUILD_TAG = env.DOCKER_DEF_TAG
					}
				}
			}
		}
		
		stage('构建及推送镜像') {
			when {
				expression { return env.BUILD_TAG != '' }
			}
			steps {
				sh """
					docker build -t ${env.DOCKER_IMAGE_NAME}:${env.BUILD_TAG} .
					docker login -u ${env.DOCKER_USERNAME } -p ${env.DOCKER_PASSWORD } ${env.DOCKER_REGISTRY }
					docker tag ${env.DOCKER_IMAGE_NAME}:${env.BUILD_TAG} ${env.DOCKER_REGISTRY}/${env.DOCKER_NAMESPACE}/${env.DOCKER_IMAGE_NAME}:${env.BUILD_TAG}
					docker push ${env.DOCKER_REGISTRY}/${env.DOCKER_NAMESPACE}/${env.DOCKER_IMAGE_NAME}:${env.BUILD_TAG}
				"""
			}
		}	
	}	
}
  1. 点击运行,输入版本号即可

在这里插入图片描述

  1. 成功后即可在阿里云镜像仓库查看自己上传的镜像

标签:Git,sudo,拉取,env,jenkins,Jenkins,镜像,DOCKER
From: https://blog.csdn.net/zhoumuhou/article/details/143201913

相关文章

  • mysql8 gitd 主从复制
    一、master主库1、配置serviceID、开启二进制日志和打开gitd,可以配置中继日志。然后重启mysql。完整配置如下[client]socket=/data/mysql/mysql.sock[mysqld]user=rootdatadir=/data/mysql/databasedir=/data/mysqlsocket=/data/mysql/mysql.sockport=3306#允许最大连......
  • 极狐GitLab 签约某智驾科技头部企业,助力智驾科技企业创造更多价值
    客户背景该客户是智能驾驶科技领域的头部企业,是国内率先提供乘用车高级辅助驾驶(ADAS)和高阶智能驾驶(AD)的解决方案供应商。为包括上汽集团、广汽集团、比亚迪、理想、蔚来等在内的众多国内知名汽车厂商提供产品和服务。在经过多年的发展之后,该客户搭建了庞大的研发团队,而且用不......
  • zlibrary镜像网页,zlibrary中文入口及客户端/app
    Z-library,被誉为全球范围内最为庞大的数字图书馆之一,其藏书量之丰富令人叹为观止,总计囊括了超过9,826,996册电子书及84,837,646篇学术期刊文章。这座庞大的知识宝库覆盖了从经典文学巨著到前沿理工学科,从人文艺术瑰宝到专业学术论文的广泛领域,几乎能够满足每一位求知者的阅读与学......
  • 极狐GitLab 发布安全补丁版本17.5.1, 17.4.3, 17.3.6
    本分分享极狐GitLab补丁版本17.5.1,17.4.3,17.3.6的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLabSaaS,技术团队已经进行了升级,无需用户采取任何措施。极狐GitLab正式推出针对GitLabC......
  • 《HelloGitHub》第 103 期
    兴趣是最好的老师,HelloGitHub让你对编程感兴趣!简介HelloGitHub分享GitHub上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言Python、Java、Go、C/C++、Swift...让你在短......
  • 分享CentOS-7+win7+win10 三镜像
    分享CentOS-7+win7+win10三镜像创建时间:20241027通过网盘分享的文件:镜像文件分享链接:https://pan.baidu.com/s/19eW0ofSUUPoSmNbZtMqleQ?pwd=xii6提取码:xii6--来自百度网盘超级会员v7的分享为什么我要分享这些镜像呢?因为就是想分享,我喜欢分享。。。当然这是主要的原......
  • 使用Gitlab-Runner docker模式
    使用Gitlab-Runnerdocker模式runner服务器需要安装docker服务使用docker安装gitlab-runnerdockerrun-d--namegitlab-runner--restartalways\-v/srv/gitlab-runner/config:/etc/gitlab-runner\-v/var/run/docker.sock:/var/run/docker.sock\gitlab/gitlab-run......
  • 如何安全彻底地删除GitHub上的fork项目
    GitHub提供了一个功能,允许用户fork其他开发者的项目,但在某些情况下,我们可能需要删除fork的项目。本文将指导您如何安全、彻底地进行此操作:1.确认删除的必要性;2.备份重要数据;3.删除项目;4.检查与原项目的联系;5.清除本地仓库。删除GitHub上的fork项目是一个相对简单的过程,但在执行之......
  • gitlab中如何查询自己的用户名和密码
    gitlab中查询自己的用户名和密码的步骤:1.访问GitLab登录页面;2.找回密码;3.输入您的电子邮件地址;4.检查您的电子邮件;5.设置新密码;6.登录并查询用户名。通常,GitLab的登录页面位于https://gitlab.com/,但如果您的GitLab实例位于不同的URL上,确保前往正确的地址。1.访问GitLab登录页......
  • 如何在GitHub上进行push操作
    ​成功在GitHub上进行push操作需要遵循以下步骤:1.配置Git环境和创建SSH密钥;2.选择适当的仓库和创建新分支;3.进行代码更改并添加到暂存区;4.提交你的更改;5.执行push操作将更改推送到GitHub仓库。首先,确保你的计算机上已安装并配置了Git。1.配置Git环境和创建SSH密钥为了在GitHu......