jenkins系列-05-jenkins构建golang程序

下载go1.20.2.linux-arm64.tar.gz 并存放到jenkins home目录:
在这里插入图片描述
写一个golang demo程序:静态文件服务器:https://gitee.com/jelex/jenkins_golang
在这里插入图片描述

package mainimport ("encoding/base64""flag""fmt""log""net/http""strings"
)const (uw = "username用户名:你想要设置的密码"
)type authFileSrvHandler struct {http.Handler
}func (f *authFileSrvHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {auth := r.Header.Get("Authorization")log.Println("got req:auth", auth)if auth == "" {w.Header().Set("WWW-Authenticate", `Basic realm="您必须输入用户名和密码"`)w.WriteHeader(http.StatusUnauthorized)return}log.Println("auth->", auth)split := strings.Split(auth, " ")if len(split) == 2 && split[0] == "Basic" {bytes, err := base64.StdEncoding.DecodeString(split[1])if err == nil && string(bytes) == uw {f.Handler.ServeHTTP(w, r)return}}w.Write([]byte("请联系相关人员获取用户名和密码!"))
}/*
*通过这种方式修改文件服务器的根路径及端口jelex@jelexxudeMacBook-Pro static-file-server % go run .\main.go -p 88888888exit status 2
jelex@jelexxudeMacBook-Pro static-file-server % go run .\main.go -r <absolute path>
jelex@jelexxudeMacBook-Pro static-file-server % go run main.go -r ~
*/
func main() {var rootPath, port stringflag.StringVar(&rootPath, "r", "", "文件根目录")flag.StringVar(&port, "p", "6000", "文件服务器端口")flag.Parse()mux := http.NewServeMux()fs := http.FileServer(http.Dir(rootPath))mux.Handle("/", &authFileSrvHandler{fs})fmt.Println(rootPath, port)http.ListenAndServe(":"+port, mux)
}

bin/build.sh

#局部变量(执行文件名称), 根据自己项目写
project_name="file-srv"
#杀掉之前正在运行的程序
go_id=`ps -ef|grep "./${project_name}" |grep -v "grep" | awk '{print $2}'`
if [ -z "$go_id" ];
thenecho "[go pid not found]"
else#杀掉进程kill -9 $go_idecho "killed $go_id"
fiecho "clean old file"
rm -rf ${project_name}
#执行日志,根据自己项目情况可选
rm -rf ${project_name}.logif [ -f main ]; thenecho "start new process"mv main ${project_name}chmod -R 777 ${project_name}#这里要防止nohup不执行,添加了一个BUILD_ID, -r ~ 表示程序运行的参数(根目录为~ home目录)BUILD_ID=DONTKILLME nohup ./${project_name} -r ~ >${project_name}.log 2>&1 &
else
echo "executable file not found,quit"
fi

在这里插入图片描述
新配置一个服务器:事先在服务器上创建好目录 /root/golang
在这里插入图片描述

构建步骤:
在这里插入图片描述

#source /etc/profile  #写了这个才会报错!所以注释掉
echo $WORKSPACE
cd $WORKSPACE
export GOPROXY=https://goproxy.cn,direct
#go mod tidy
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /var/jenkins_home/go/bin/go build -o bin/main static-file-server/main.go  #如果要部署到amd架构的服务器,如此处理。。。

构建后操作:
在这里插入图片描述
构建:
在这里插入图片描述
控制台输出:

Started by user rootRunning as SYSTEM
Building in workspace /var/jenkins_home/workspace/golang-proj
The recommended git tool is: NONE
using credential 53623f15-682e-456e-8a6e-72cd80c011c6> git rev-parse --resolve-git-dir /var/jenkins_home/workspace/golang-proj/.git # timeout=10
Fetching changes from the remote Git repository> git config remote.origin.url https://gitee.com/jelex/jenkins_golang.git # timeout=10
Fetching upstream changes from https://gitee.com/jelex/jenkins_golang.git> git --version # timeout=10> git --version # 'git version 2.30.2'
using GIT_ASKPASS to set credentials > git fetch --tags --force --progress -- https://gitee.com/jelex/jenkins_golang.git +refs/heads/*:refs/remotes/origin/* # timeout=10> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 718528cb0b88c6712a1b805c540f8765f7c1315a (refs/remotes/origin/master)> git config core.sparsecheckout # timeout=10> git checkout -f 718528cb0b88c6712a1b805c540f8765f7c1315a # timeout=10
Commit message: "chmod build.sh"> git rev-list --no-walk 718528cb0b88c6712a1b805c540f8765f7c1315a # timeout=10
[golang-proj] $ /bin/sh -xe /tmp/jenkins9821548014139851283.sh
+ echo /var/jenkins_home/workspace/golang-proj
/var/jenkins_home/workspace/golang-proj
+ cd /var/jenkins_home/workspace/golang-proj
+ export GOPROXY=https://goproxy.cn,direct
+ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 /var/jenkins_home/go/bin/go build -o bin/main static-file-server/main.go
SSH: Connecting from host [b88e4cd5f58a]
SSH: Connecting with configuration [tencent] ...
SSH: EXEC: completed after 401 ms
SSH: Disconnecting configuration [tencent] ...
SSH: Transferred 2 file(s)
Finished: SUCCESS

查看jenkins内部:
在这里插入图片描述
查看服务器:
在这里插入图片描述
访问:
在这里插入图片描述

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

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

相关文章

window下安装go环境

一、go官网下载安装包 官网地址如下&#xff1a;https://golang.google.cn/dl/ 选择对应系统的安装包&#xff0c;这里是window系统&#xff0c;可以选择zip包&#xff0c;下载完解压就可以使用 二、配置环境变量 这里的截图配置以win11为例 我的文件解压目录是 D:\Software…

力扣32.最长有效括号

力扣32.最长有效括号 class Solution {public:int longestValidParentheses(string s) {int n s.size();int res0;int start -1;vector<int> st;for(int i0;i<n;i){if(s[i] ()st.push_back(i);else{//前面没有( , (开启下一段)下一段的开始更新为当前下标if(st.emp…

机器学习和人工智能在农业的应用——案例分析

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在农业的应用1. 精准农业作物健康监测土壤分析 2. 作物产量预测3. 农业机器人自动化播种和收割智能灌溉 4. 农业市场分析价格预测需求预测 机器学习和人工智能带来的变革1. 提高生产效率2. 降低生产成本3. 提升作物产量和质量…

探索JT808协议在车辆远程视频监控系统中的应用

一、部标JT808协议概述 随着物联网技术的迅猛发展&#xff0c;智能交通系统&#xff08;ITS&#xff09;已成为现代交通领域的重要组成部分。其中&#xff0c;车辆远程监控与管理技术作为ITS的核心技术之一&#xff0c;对于提升交通管理效率、保障道路安全具有重要意义。 JT8…

TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

重要工具介绍 TensorBoard&#xff1a; 是一个TensorFlow提供的强大工具&#xff0c;用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。 TensorBoard 简介 TensorBoard是TensorFlow提供的一个可视化工具&#xff0c;用于&#x…

尚品汇-(十七)

目录&#xff1a; &#xff08;1&#xff09;获取价格信息 &#xff08;2&#xff09;获取销售信息 前面的表&#xff1a; &#xff08;1&#xff09;获取价格信息 继续编写接口&#xff1a;ManagerService /*** 获取sku价格* param skuId* return*/ BigDecimal getSkuPrice…

『 Linux 』匿名管道应用 - 简易进程池

文章目录 池化技术进程池框架及基本思路进程的描述组织管道通信建立的潜在问题 任务的描述与组织子进程读取管道信息控制子进程进程退出及资源回收 池化技术 池化技术是一种编程技巧,一般用于优化资源的分配与复用; 当一种资源需要被使用时这意味着这个资源可能会被进行多次使…

mqtt.fx连接阿里云

本文主要是记述一下如何使用mqtt.fx连接在阿里云上创建好的MQTT服务。 1 根据MQTT填写对应端口即可 找到设备信息&#xff0c;里面有MQTT连接参数 2 使用物模型通信Topic&#xff0c;注意这里的post说设备上报&#xff0c;那也就是意味着云端订阅post&#xff1b;set则意味着设…

【轻松拿捏】Java-final关键字(面试)

目录 1. 定义和基本用法 回答要点&#xff1a; 示例回答&#xff1a; 2. final 变量 回答要点&#xff1a; 示例回答&#xff1a; 3. final 方法 回答要点&#xff1a; 示例回答&#xff1a; 4. final 类 回答要点&#xff1a; 示例回答&#xff1a; 5. final 关键…

搭建hadoop+spark完全分布式集群环境

目录 一、集群规划 二、更改主机名 三、建立主机名和ip的映射 四、关闭防火墙(master,slave1,slave2) 五、配置ssh免密码登录 六、安装JDK 七、hadoop之hdfs安装与配置 1)解压Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…

【进阶篇-Day9:JAVA中单列集合Collection、List、ArrayList、LinkedList的介绍】

目录 1、集合的介绍1.1 概念1.2 集合的分类 2、单列集合&#xff1a;Collection2.1 Collection的使用2.2 集合的通用遍历方式2.2.1 迭代器遍历&#xff1a;&#xff08;1&#xff09;例子&#xff1a;&#xff08;2&#xff09;迭代器遍历的原理&#xff1a;&#xff08;3&…

排序——交换排序

在上篇文章我们详细介绍了排序的概念与插入排序&#xff0c;大家可以通过下面这个链接去看&#xff1a; 排序的概念及插入排序 这篇文章就介绍一下一种排序方式&#xff1a;交换排序。 一&#xff0c;交换排序 基本思想&#xff1a;两两比较&#xff0c;如果发生逆序则交换…

jenkins系列-09.jpom构建java docker harbor

本地先启动jpom server agent: /Users/jelex/Documents/work/jpom-2.10.40/server-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % sh Server.sh start/Users/jelex/Documents/work/jpom-2.10.40/agent-2.10.40-release/bin jelexjelexxudeMacBook-Pro bin % ./Agent.…

达梦数据库的系统视图v$sessions

达梦数据库的系统视图v$sessions 达梦数据库&#xff08;DM Database&#xff09;是中国的一款国产数据库管理系统&#xff0c;它提供了类似于Oracle的系统视图来监控和管理数据库。V$SESSIONS 是达梦数据库中的一个系统视图&#xff0c;用于显示当前数据库会话的信息。 以下…

全自主巡航无人机项目思路:STM32/PX4 + ROS + AI 实现从传感融合到智能规划的端到端解决方案

1. 项目概述 本项目旨在设计并实现一款高度自主的自动巡航无人机系统。该系统能够按照预设路径自主飞行&#xff0c;完成各种巡航任务&#xff0c;如电力巡线、森林防火、边境巡逻和灾害监测等。 1.1 系统特点 基于STM32F4和PX4的高性能嵌入式飞控系统多传感器融合技术实现精…

MYSQL--第八次作业

MYSQL–第八次作业 一、备份与恢复 环境搭建&#xff1a; CREATE DATABASE booksDB; use booksDB;CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL );CREATE TABLE authors ( auth_id INT NOT NULL PRI…

geoServer在windows中下载安装部署详细操作教程

这里写目录标题 1.安装环境检查2.下载安装包&#xff08;1&#xff09;进入下载地址&#xff1a;&#xff08;2&#xff09;以下载最新版为例&#xff0c;点击“Stable GeoServer”下载&#xff08;3&#xff09;安装有两种方式&#xff08;4&#xff09;我这里选择下载war包 3…

python作业三

1.使用requests模块获取这个json文件http://java-api.super-yx.com/html/hello.json 2.将获取到的json转为dict 3.将dict保存为hello.json文件 4.用io流写一个copy(src,dst)函数,复制hello.json到C:\hello.json import json import shutilimport requests #使用requests模块获…

Qt MV架构-视图类

一、基本概念 在MV架构中&#xff0c;视图包含了模型中的数据项&#xff0c;并将它们呈现给用户。数据项的表示方法&#xff0c;可能和数据项在存储时用的数据结构完全不同。 这种内容与表现分离之所以能够实现&#xff0c;是因为使用了 QAbstractItemModel提供的一个标准模…

基于JavaSpringBoot+Vue+uniapp微信小程序校园宿舍管理系统设计与实现

基于JavaSpringBootVueuniapp微信小程序实现校园宿舍管理系统设计与实现 目录 第一章 绪论 1.1 研究背景 1.2 研究现状 1.3 研究内容 第二章 相关技术介绍 2.1 Java语言 2.2 HTML网页技术 2.3 MySQL数据库 2.4 Springboot 框架介绍 2.5 VueJS介绍 2.6 ElementUI介绍…