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.pswp.cn/web/44849.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44849.shtml
英文地址,請注明出處:http://en.pswp.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. 提升作物產量和質量…

Elsaticsearch java基本操作

索引 基本操作 package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.orchids.elasticsearch.web.po.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOpe…

探索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提供的一個標準模…