jenkins 部署golang 应用到k8s与测试环境

1.宿主机安装jenkins 不要用docker

为什么:docker jenkins你只有jenkins, 你想做golang编译的情况,它的镜像里面缺少go环境。
而宿主机安装的情况,jenkins是可以通过环境变量修改来访问宿主机里面安装的内容。

2.插件

// docker镜像构建
Docker Pipeline
// 推送k8s
Kubernetes CLI Plugin
stage 时间可视化
Pipeline: Stage View Plugin
飞书通知
https://github.com/721806280/lark-notice-plugin

3.agent

没用到高级功能,系统默认即可

vi CentOS-Base.repo
sudo yum clean all
sudo yum makecache
sudo yum update -y
yum -y intall git jenkins
yum -y install jenkins
yum -y install docker
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates
yum list docker-ce --showduplicates|sort -r
yum install docker-ce
systemctl start docker
systemctl status docker
systemctl enable docker

yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum install epel-release
yum -y install git vim wget nginx
sudo yum install java-11-openjdk-devel
sudo update-alternatives --config java
curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl”
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
kubectl version --client --output=yaml
wget https://golang.google.cn/dl/go1.22.3.darwin-amd64.tar.gz # 解压后,放到/usr/local/ 目录后,记得修改 /etc/bashrc, 修改PATH

repo

epel.repo
jenkins.repo
docker-ce.repo
CentOS-Base.repo

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

url 后缀会导致报错。需要systemctl edit jenkins
[Service]
Environment=“JENKINS_PREFIX=/jenkins”
保存退出

权限:
GOPATH 放置在jenkins 用户有权限访问的地方
sudo usermod -aG docker jenkins # 给jenkins 开放docker执行权限
记得重启jenkins

docker login registry.jiaxianghudong.com 在宿主机配置
go 环境在宿主机配置
accessToken 可以配置在creditials里面,username,password

参考链接

https://blog.csdn.net/qq_33371766/article/details/137413858

https://baijiahao.baidu.com/s?id=1796281020927178690&wfr=spider&for=pc

docker ce
https://baijiahao.baidu.com/s?id=1796281020927178690&wfr=spider&for=pc

jenkins
https://blog.csdn.net/qq_33371766/article/details/137413858

送上模板一份


def job_name = env.JOB_NAME.split('test-')
def job = job_name[1]pipeline {agent anyenvironment {GOPATH = '/data/go'GOROOT = '/usr/local/go' // 如果需要的话PATH = "$GOROOT/bin:$PATH"GOPRIVATE='gitee.com/xxxx/*'GOPROXY='https://goproxy.cn,direct'CGO_ENABLED='0'GOOS='linux'GOARCH='amd64'GIT_TERMINAL_PROMPT='1'job="$job"}stages {stage('Checkout') {steps {checkout([$class: 'GitSCM', branches: [[name: '*/Develop']], doGenerateSubmoduleConfigurations: false, extensions: [], userRemoteConfigs: [[url: "https://gitee.com/xxxx/${job}.git",credentialsId: 'card-trade2']]])}}stage('Build') {steps {script {withCredentials([usernamePassword(credentialsId: 'card-trade2', passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {println "开始编译"sh '''set +xgo mod tidyecho "运行go build"echo $(pwd)go build -o ${job} -buildvcs=false -v'''}	}}}stage('构建镜像') {steps {script {sh '''set +xtee Dockerfile <<-EOF
FROM registry.xxxx.com/jiaxiang/alpine-cst:1.35WORKDIR /go/bin
ADD ${job} /go/bin
ADD config.yaml /go/bin
ADD configs /go/bin/configs
RUN chmod +x /go/bin/${job}
CMD ["/go/bin/${job}","--config", "config.yaml"]
EOF'''docker.withRegistry("https://registry.xxxx.com", "registry-jiaxiang") {def app = docker.build "registry.xxxx.com/jiaxiang/card-trade-v3.${job}:${env.BUILD_ID}"app.push "${env.BUILD_ID}"}}}}stage('更新镜像') {steps {script {def parameter = "registry.xxxx.com/jiaxiang/card-trade-v3.${job}:${env.BUILD_ID}"withCredentials([sshUserPrivateKey(credentialsId: 'sshpass', keyFileVariable: 'SSH_KEY')]) {// 构建SSH命令,包括传递的参数和凭据sh "ssh -i $SSH_KEY -o StrictHostKeyChecking=no xxxr@47.11.52.1 'sudo /bin/bash dockerupdatemallapi.sh \"$parameter\"'"}}}}stage('更新k8s') {steps {script {println "更新镜像为 ${image} job is ${job}"withKubeConfig([credentialsId: "k8s_config"]) {sh "kubectl set image deploy ${job} -n card-trade ${job}=${image}"}}}}}
}

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

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

相关文章

FFMPEG 解码过程初步学习

1. 视频文件解码过程 解码过程 步骤如下&#xff1a; 视频文件&#xff08;封装格式&#xff0c;MP4/FLV/AVI 等&#xff09;获取视频格式信息等解复用为Stream 流&#xff0c; 准备解码用的Codec将Stream 流 使用解码器解为Raw 格式针 1.1 音视频格式填充&#xff1a; int…

找不到msvcr110.dll无法继续执行代码的原因分析及解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是找不到msvcr110.dll文件。这个错误通常发生在运行某些程序或游戏时&#xff0c;系统无法找到所需的动态链接库文件。为了解决这个问题&#xff0c;下面我将介绍5种常见的解决方法。 一&#…

Vue3实现上传照片以及回显

Vue3实现上传照片以及回显 一、安装Element Plus二、案例1、基本示例 三、进阶案例1、代码2、代码解释1、上传接口展示2、查询接口展示组件属性 3、效果展示 一、安装Element Plus 使用 Element Plus 组件库来实现上传照片和回显同样很简单&#xff0c;你可以按照以下步骤进行…

用栈实现队列(C语言)

目录 题目题目分析 代码栈的实现结构体。栈的初始化栈的销毁 入栈删除查找顶部数据判空 答案结构体初始化插入数据删除数据获取队列开头元素判空销毁栈 题目 题目分析 链接: 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、po…

数据库查询中——having与where的用法

数据库查询中——having与where的用法 HAVING 子句在 SQL 中主要用于与 GROUP BY 子句一起使用&#xff0c;以过滤聚合函数的结果。当你使用 GROUP BY 对数据进行分组&#xff0c;并希望基于这些分组后的数据进一步过滤时&#xff0c;你会使用 HAVING 子句。 HAVING 子句通常与…

pyside6下没有designer.exe、pyside6-uic.exe等

使用conda安装的pyside6&#xff08;conda install pyside6&#xff09;&#xff0c;发现pyside6目录下没有designer.exe、pyside6-uic.exe等&#xff1b;designer.exe在Miniconda3/Library/bin下 pyside6-uic.exe、pyside6-rcc.exe在Miniconda3\Scripts下 但是 使用pip安装…

企业内网自建yum源 仓库 | rsync同步方案

文章目录 1.背景概述2.获取软件文件2.1 准备同步脚本如下 2.2 准备例外文件清单2.3 统计源端大小2.3 运行脚本开始同步文件 3. 创建网页服务3.1 安装nginx并启用3.2 修改ngnix配置文件 4 创建repo索引和客户文件4.1 创建repo索引4.2 创建客户端文件4.3 客户端下载repo文件 1.背…

用 Python 编写网络爬虫:从网页获取数据并存储到 Excel 文件

在本篇博客中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,用于从网页中提取数据,并将这些数据存储到 Excel 文件中。我们将使用 Python 中的一些库来实现这个功能,包括 urllib.request、BeautifulSoup 和 openpyxl。 1. 网络爬虫的基本原理 网络爬虫是一种程序,…

【MyBatis】MyBatis解析全局配置文件源码详解

目录 一、前言 思维导图概括 二、配置文件解析过程分析 2.1 配置文件解析入口 2.2 初始化XMLConfigBuilder 2.3 XMLConfigBuilder#parse()方法&#xff1a;解析全局配置文件 2.3.1 解析properties配置 2.3.2 解析settings配置 2.3.2.1 元信息对象&#xff08;MetaClas…

解决移植Metasploitable3到VM虚拟机无网络的问题

第一步 导入后不要开机&#xff0c;先在虚拟机设置里面将原有的两个网络适配器移除。 第二步 接着在选项里面&#xff0c;在客户机操作系统里面&#xff0c;选择Microsoft Windwos(W)&#xff0c; 版本选择Windows Server 2008 R2 x64 第三步 先打开虚拟机&#xff0c;然后…

Python_文件操作_学习

目录 一、关于文件的打开和关闭 1. 文件的打开 2.文件的关闭 二、文件的读取 1. 文件的读_r 2. 使用readline 3.使用readlines 三、文件的写入 1. 文本的新建写入 2.文本的追加写入 四、文件的删除和重命名 1.文件的重命名 2.文件的删除 五、文件的定位读写 1.t…

RK 11.0 多屏模式下修改鼠标进入方式

要求&#xff1a;主屏在左&#xff0c;副屏在右。这种排列情况下鼠标仅可通过主屏的最右侧移入副屏的最左侧&#xff0c;或从副屏的最左侧移入主屏最右侧。 1.RK默认设计 1.1 RK的代码设计是当sys.mouse.presentation1时&#xff0c;鼠标在屏幕边缘的时候就会移入另一个屏幕 …

CISP-PTE笔记整理

目录 漏洞基础代码合集 网安基础 常见名词 信息收集 环境和变量的配置 HTTP请求头基础 HTTP基础知识 MySql基础语法 各系统的敏感目录路径 工具使用 Hackbar的tips java下载配置 Xray下载配置&使用 burp爆破账号密码和C段&注意事项 SqlMap爆破&创建…

Unity Miscellaneous入门

概述 在Unity中有非常多好用的组件&#xff0c;也是Unity为我们提供的方便的开发工具&#xff0c;它的功能可能不是主流的内容&#xff0c;比如渲染&#xff0c;音乐&#xff0c;视频等等&#xff0c;所有Unity把这些内容统一归到了一个杂项文件组中。 Unity组件入门篇总目录-…

Python线程

Python线程 1. 进程和线程 先来了解下进程和线程。 类比&#xff1a; 一个工厂&#xff0c;至少有一个车间&#xff0c;一个车间中至少有一个工人&#xff0c;最终是工人在工作。 一个程序&#xff0c;至少有一个进程&#xff0c;一个进程中至少有一个线程&#xff0c;最终…

langchain实战-从0到1搭建ai聊天机器人

介绍 当前&#xff0c;人工智能大模型公司如雨后春笋般迅速涌现&#xff0c;例如 OpenAI、文心一言、通义千问等&#xff0c;它们提供了成熟的 API 调用服务。然而&#xff0c;随之而来的是不同公司的繁琐协议接入过程&#xff0c;这让许多开发者感到头疼不已。有没有一种统一…

SpringBoot + Redis实现对接口的限流

目录 前言 什么是限流&#xff1f; 实现限流 创建一个注解类 接着创建一个切面类 前言 在项目中&#xff0c;对于接口的限流&#xff0c;是任何项目都必不可少的一部分&#xff0c;主要是为了防止用户频繁的发送请求&#xff0c;对服务器造成压力。 另外一点就是防止外来攻…

C++之第八课

课程列表 今天我们来学一学C里的一些实用的东西。 1.域宽 说到域宽setw&#xff0c;就叒要加头文件了。 #include<iomanip> 使用格式是&#xff1a; cout<<setw(5)<<"123"; setw括号里面可以改数字&#xff0c;后面就是输出内容了&#xff…

COD论文笔记 Boundary-Guided Camouflaged Object Detection

动机 挑战性任务&#xff1a;伪装物体检测&#xff08;COD&#xff09;是一个重要且具有挑战性的任务&#xff0c;因为伪装物体往往与背景高度相似&#xff0c;使得准确识别和分割非常困难。现有方法的不足&#xff1a;现有的深度学习方法难以有效识别伪装物体的结构和细节&am…