jenkins部署go程序(自动编译部署)

jenkins部署go程序(自动编译部署)

公众号回复书籍领取学习资料,包括linux,golang,java,js,操作系统,计算机网络,编程经验,算法与数据结构等。

什么是jenkins?

【官方介绍】

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。

【白话说jenkins】

jenkins可以自动化的编译,测试以及部署代码。当代码发生变化时,只需要点一个按钮就可以自动化的重新编译程序发步程序,你甚至还可以设置定时检测代码是否发生变化。比如你把代码放在了github上,jenkins可以绑定你的github仓库,当你的Github有新的提交时,jenkins可以自动检测到变化,重新拉取仓库,通过你写的脚本进行重新编译,再重新部署。省去了很多的人力。

安装jenkins

使用清华镜像下载

wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.263/jenkins.war

为了解决启动慢的问题

修改~/.jenkins/hudson.model.UpdateCenter.xml为如下

<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirror.xmission.com/jenkins/updates/update-center.json</url>
  </site>
</sites>

启动jenkins

java -jar jenkins.war --httpPort=8080

通过 ip:8080访问 jenkins

选择社区推荐安装那一选项

jenkins配置文件

所有的配置文件以及插件都在$HOME/.jenkins

不得不说这个项目做的是真的好

很优美,一个war包搞定!

使用jenkins部署一个任务(定时构建)

首先创建一个仓库

mkdir jenkins-go-first
cd jenkins-go-first
git init

写一个最简单web程序(hello.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(":9000") 
}
# 提交到本地仓库
git add hello.go
git commit -m "add hello.go"
git branch -M main

在github上建立一个仓库jenkins-go-first

git remote add origin git@github.com:gocloudcoder/jenkins-go-first.git
# 提交到远程仓库
git push -u origin main

jenkins中构建任务

第一步 新建 item

image-20210119202716239

写入jenkins-go-first,选择 freestyle project 点击确定

image-20210119202826071

选择源码管理,使用git

填写github账号和密码

image-20210119203114039

制定分支看你远程仓库的主分支是master还是main

我这里是用main作为主分支,所以制定分支填写*/main

image-20210119203226354

选择源码管理,增加构建步骤选择执行Shell

image-20210119203353292

# shell中写入
go build -o hello
BUILD_ID=DONTKILLME
nohup ./hello &>hello.log &

image-20210119203545809

点击保存

立即构建

image-20210119203642498

点击箭头处

image-20210119203724869

点击控制台输出

image-20210119203759284

构建成功

image-20210119203917582

直接访问

ip:9000/ping

在 $HOME/.jenkins/workspace/jenkins-go-first目录下

你会看到所有从Github上拉取得代码

以及自动编译好的hello二进制文件

为了能够实现自动化部署还需要配置Github,在每次提交代码之后,jenkins能够自动触发拉取Github上的代码以及重新编译部署。但是当重新部署的时候,由于端口被占用,所以还需要一个Shell脚本自动杀死该进程。

编写shell(deploy.sh)

我使用的是root用户

如果不是root用户,需要使用sudo

kill -9 $(lsof -i:9000 -t)
go build -o hello
BUILD_ID=DONTKILLME
nohup ./hello &>hello.log &

将deploy.sh推动到Github远程仓库中

将jenkins中的执行shell那一部分改为

bash ./deploy.sh

这样的话离自动化部署就更近了一步

但是每次还是需要手动去点击构建

配置Github,每次检测到push就自动构建

安装Github plugin(如果一开始你选择的是安装推荐插件,这个默认是安装的)

配置jenkies的Webhook接收地址

系统设置中的Github高级设置中

记录好webhook的地址

http://nj-jay.com:8080/github-webhook/

配置Github项目仓库

settings ->webhooks->Add webhooks

填写在jenkins中的webhook地址

然后Add webhooks即可

image-20210119234345968

生成Personal access tokens

Jenkins访问GitHub工程的时候,有的操作是需要授权的,所以我们要在GitHub上生成授权的token给Jenkins使用,这就是Personal access tokens,生成步骤如下:

登录GitHub,进入"Settings"页面,点击左下角的"Developer settings",如下图:

image-20210119234542585

image-20210119234609198

如果怕出问题,所有的选项全部勾选上

jenkins配置

GitHub Plugin插件,在"系统管理->管理插件"位置检查此插件是否已经安装,没有的话请先安装;
配置GitHub,点击“系统管理->系统设置”,如下图:

在这里插入图片描述

弹出的页面中,“Kind"选择"Secret text”,"Secret"填入前面在GitHub上生成的Personal access tokens,Description随便写一些描述信息,如下图:

image-20210119235016727

填写完毕后,点击右侧的"Test connection"按钮,如果信息没有填错,显示的内容如下图所示:

image-20210119234942760

最后点击保存即可

项目构建

在上面的基础上增加几个配置即可

image-20210119235214118

image-20210119235229294

image-20210119235250730

然后再push就会自动的检测。重新编译部署!

有个小坑,由于我的机子有点垃圾,所以push两分钟后才自动检测到,不是配置的原因!

image-20210120090405451

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Jenkins中实现自动部署Go语言程序,可以按照以下步骤进行设置: 1. 安装Go环境:首先,确保在Jenkins服务器上安装了Go语言环境。可以从Go官方网站下载并安装适用于您的操作系统的Go二进制文件。 2. 安装Jenkins插件:打开Jenkins的插件管理页面,并安装Go插件。该插件将提供Go语言的构建部署功能。 3. 创建Jenkins项目:在Jenkins中创建一个新的项目或作业,选择自由风格项目或管道项目作为项目类型。 4. 配置源代码管理:在项目配置中,选择您使用的版本控制系统,如Git或SVN,并提供您的Go语言程序的代码仓库URL。 5. 构建步骤:在构建步骤中,添加构建命令以编译构建Go程序。例如,使用"go build"命令编译您的程序。 6. 构建后操作:在构建完成后,可以执行其他操作,如运行测试、生成文档等。 7. 部署步骤:添加部署步骤来将构建好的Go程序部署到目标服务器。这可以是SCP、SSH或其他适用于您的环境的部署方式。 8. 配置触发器:在配置中设置触发器,以便根据您的需求触发自动构建部署过程。可以选择在每次commit提交时触发或定期触发。 9. 保存并构建:保存并应用所有配置更改,并手动执行一次构建,以确保一切正常工作。 10. 自动部署:现在,当有新的commit提交时,Jenkins自动拉取最新的代码并进行构建,并将构建好的Go程序自动部署到目标服务器上。 通过这些步骤,您可以在Jenkins中配置自动部署Go语言程序的流程,并实现持续集成和持续交付。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值