热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux12Devops>08jenkins部署Golang

文章目录Jenkins部署Golang编译环境:部署环境:第一步:编译环境(Jenkins)1.安装golan


文章目录

      • Jenkins部署Golang
        • 编译环境:
        • 部署环境:
        • 第一步:编译环境(Jenkins)
          • 1.安装golang语言
          • 2.测试
        • 第二步:部署环境(web)
          • 1.准备源代码到远程仓库
          • 2.Jenkins部署
          • 3.测试访问
          • 3.测试访问


Jenkins部署Golang


编译环境:

1.安装go语言2.优化测试

部署环境:

1.部署

第一步:编译环境(Jenkins)


1.安装golang语言

#1.下载golang
[root@jenkins opt]# wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz#2.安装
[root@jenkins opt]# tar -xf go1.16.7.linux-amd64.tar.gz -C /usr/local/#3.添加软连接
[root@jenkins /usr/local]# ln -s /usr/local/go /usr/local/golang
#4.添加环境变量
[root@jenkins opt]# vim /etc/profile.d/go.sh
export GO_HOME=/usr/local/go
export GO_ROOT=/usr/local/go
export GO_PATH=/opt/go
export GOPROXY=https://mirrors.aliyun.com/goproxy/
PATH=$PATH:$GO_HOME:$GO_ROOT:$GO_PATH:$GO_HOME/bin
export PATH[root@jenkins opt]# source /etc/profile
[root@jenkins opt]# printenv |grep GO
GO_PATH=/opt/go
GOPROXY=https://mirrors.aliyun.com/goproxy/
GO_HOME=/usr/local/go
GO_ROOT=/usr/local/go

2.测试

在这里插入图片描述

在这里插入图片描述

# 1.创建目录
[root@jenkins opt]# mkdir /opt/go
[root@jenkins go]# go mod init jenkins-go #创建一个go.mod文件
total 4
-rw-r--r-- 1 root root 27 Aug 16 20:40 go.mod
#2下载go
[root@jenkins go]# go get -u github.com/gin-gonic/gin #下载
#3.编写main.go文件
[root@jenkins go]# vim main.go
package main
import "github.com/gin-gonic/gin"
func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run("0.0.0.0:8888") // listen and serve on 0.0.0.0:8080 #因8080端口被占用,修改默认访问端口8080,改为8888
}
#4.运行go
# 方式一:
[root@jenkins go]# go run main.go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.- using env: export GIN_MODE=release- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET /ping --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on 0.0.0.0:8888
#方式二
[root@jenkins /opt/go]# go build main.go
[root@jenkins /opt/go]# ll
total 14556
-rw-r--r-- 1 root root 631 Aug 16 20:43 go.mod
-rw-r--r-- 1 root root 8914 Aug 16 20:46 go.sum
-rwxr-xr-x 1 root root 14883140 Aug 16 20:53 main
-rw-r--r-- 1 root root 235 Aug 16 20:48 main.go
[root@jenkins /opt/go]# ./main
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.- using env: export GIN_MODE=release- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET /ping --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on 0.0.0.0:8888

在这里插入图片描述


第二步:部署环境(web)


1.准备源代码到远程仓库

在这里插入图片描述

#1.将源代码文件传到远程仓库
#下载远程仓库到本地
[root@k8s-m-01 go]# git clone git@192.168.15.101:root/jenkins-go.git#将源代码移动到本地仓库
[root@k8s-m-01 go]# mv gin/ jenkins-go/
[root@k8s-m-01 go]# cd jenkins-go/
[root@k8s-m-01 jenkins-go]# ll
total 4
drwxr-xr-x 3 root root 88 Aug 16 21:07 gin
-rw-r--r-- 1 root root 24 Aug 16 21:09 README.md
[root@k8s-m-01 jenkins-golang]# git add gin/
#提交源代码到远程仓库
[root@k8s-m-01 jenkins-golang]# git commit -m 'init' .
[master d0dfdb5] init3 files changed, 149 insertions(+)create mode 100644 gin/README.en.mdcreate mode 100644 gin/README.mdcreate mode 100644 gin/main.go
[root@k8s-m-01 jenkins-go]# git push -u origin master
Counting objects: 8, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 2.41 KiB | 0 bytes/s, done.
Total 7 (delta 0), reused 0 (delta 0)
To git@192.168.15.101:root/jenkins-go.git349e7be..e4ce76a master -> master
Branch master set up to track remote branch master from origin.
#推送完成并创建标签

在这里插入图片描述


2.Jenkins部署

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

#!/bin/bash
git checkout $GIT_TAGexport GOPROXY=https://mirrors.aliyun.com/goproxy/
/usr/local/go/bin/go mod init jenkins-go
/usr/local/go/bin/go get -u github.com/gin-gonic/ginrm -rf target && mkdir target
cd target
/usr/local/go/bin/go build ../gin/main.go

选择标签进行构建

在这里插入图片描述

在Jenkins服务器上测试构建
在这里插入图片描述

#go 保存的路径
[root@jenkins /usr/local/go/pkg/linux_amd64]# pwd
/usr/local/go/pkg/linux_amd64
[root@jenkins /usr/local/go/pkg/linux_amd64]# ls
archive crypto.a expvar.a html.a log net.a regexp sync time.a
bufio.a database flag.a image log.a os regexp.a sync.a unicode
bytes.a debug fmt.a image.a math os.a runtime syscall.a unicode.a
compress embed.a go index math.a path runtime.a testing vendor
container encoding hash internal mime path.a sort.a testing.a
context.a encoding.a hash.a io mime.a plugin.a strconv.a text
crypto errors.a html io.a net reflect.a string s.a time

在这里插入图片描述

在这里插入图片描述

构建前部署

# 先main同步到挂载目录
[root@jenkins /var/lib/jenkins/workspace/jenkins-go/target]# scp -r main 192.168.15.111:/nfs/v4

在这里插入图片描述

yaml部署

#1.编写配置清单上传远程仓库
[root@k8s-m-01 ~]# vim go.yaml
kind: Namespace
apiVersion: v1
metadata:name: golang
---
kind: Deployment
apiVersion: apps/v1
metadata:namespace: golangname: golang-deployment
spec:selector:matchLabels:app: golangdeploy: maintemplate:metadata:labels:app: golangdeploy: mainspec:nodeName: gdx1containers:- name: golangimage: centos:7command:- "/bin/bash"- "-c"- "/opt/target/main"command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]livenessProbe:exec:command:- "/bin/bash"- "-c"- "cat /opt/target/main"periodSeconds: 2readinessProbe:tcpSocket:port: 38080 #访问的端口initialDelaySeconds: 30periodSeconds: 2volumeMounts:- mountPath: /optname: golang-datavolumes:- name: golang-datanfs:path: /nfs/v4 #挂载的目录server: 192.168.15.111 #本机
---
kind: Service
apiVersion: v1
metadata:name: golang-deployment-svcnamespace: golang
spec:ports:- port: 38080 #容器端口targetPort: 38080 #外部映射端口selector:app: golangdeploy: mainclusterIP: None
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:namespace: golangname: golang-ingress
spec:rules:- host: www.golang.cluster.local.comhttp:paths:- backend:serviceName: golang-deployment-svcservicePort: 38080path: /

构建后部署

在这里插入图片描述

在这里插入图片描述

#!/bin/bashchmod +x /nfs/v9/target/mainkubectl get pods -n golang | awk '{print $1}' | grep -v "NAME" | xargs -I {} kubectl delete pod -n golang {}

3.测试访问

#!/bin/bashchmod +x /nfs/v9/target/mainkubectl get pods -n golang | awk '{print $1}' | grep -v "NAME" | xargs -I {} kubectl delete pod -n golang {}

3.测试访问

在这里插入图片描述


推荐阅读
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • 本文介绍了如何使用elementui分页组件进行分页功能的改写,只需一行代码即可调用。通过封装分页组件,避免在每个页面都写跳转请求的重复代码。详细的代码示例和使用方法在正文中给出。 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • jenkins 搭建配置
    jenkins部署安装方法一: 下载jenkinswar包  wgethttp:mirrors.jenkins.iowar-stablelatestjenkins.war运行jen ... [详细]
  • JenkinsHudson是一套非常强大的自动化构建系统,其具有使用简单,对各种开发环境支持良好,正确地使用能解决研发过程管理中版本构建、发布的诸多问题。本文描述了笔者在使用过程中 ... [详细]
  • 开发笔记:DevOps Gitlab环境部署
    本文由编程笔记#小编为大家整理,主要介绍了DevOpsGitlab环境部署相关的知识,希望对你有一定的参考价值。DevOps介绍 ... [详细]
  • 记一次jenkins 构建go项目经历
    记一次jenkins构建go项目经历,Go语言社区,Golang程序员人脉社 ... [详细]
author-avatar
killphp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有