【笔记】Jenkins部署Go项目

前言

Jenkins部署Go项目

准备工作

  • 用于部署项目的远程服务器需要有dockerdocker-compose命令

  • Jenkins服务器需要有go编译环境

go编译环境

  • 下载go的软件包,解压到/var/jenkins_home/data目录下

如果是通过Docker部署,可以放到映射后的数据卷

1
2
3
4
cd /var/jenkins_home/data
wget https://dl.google.com/go/go1.20.6.linux-amd64.tar.gz
tar -zxvf go1.20.6.linux-amd64.tar.gz
rm go1.20.6.linux-amd64.tar.gz
  • /var/jenkins_home/data目录下,创建一个目录用于存放go的依赖

如果编译时下载依赖较慢,可以直接将其他电脑上的go存放依赖的目录(通常在~/go)直接上传到/var/jenkins_home/data/go_home内部
这一操作主要为了方便Docker部署的Jenkins的数据卷访问go依赖,如果不是Docker部署的Jenkins,或者网络通畅无需手动复制go依赖,则无需进行这个步骤

1
2
cd /var/jenkins_home/data
mkdir go_home
  • 此时Jenkins已经存在Go的编译环境了,但是还需要配置到配置中,成为环境变量

安装插件

  • Manage Jenkins->Plugins->Available plugins->搜索并安装Publish Over SSHGo Plugin插件

Publish Over SSH:通过SSH在目标服务器远程执行Shell命令
Go Plugin:编译Go项目

配置目标服务器

  • Manage Jenkins->System->配置目标服务器->Save

如果此时没有使用root身份登录,可能导致docker-compose命令没有权限使用的问题,造成Jenkins任务执行失败

配置Go环境

  • Manage Jenkins->Tools->配置Go的环境

在服务器上创建Docker脚本

  • 在服务器上创建Docker脚本,用于通过Docker容器运行项目

脚本的存放位置为Jenkins远程操作时的工作目录

Dockerfile
1
2
3
4
FROM alpine
WORKDIR /app
COPY . .
CMD "./main"
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
version: "3.1"
services:
demo:
build:
context: ./
dockerfile: Dockerfile
image: goproject:latest
container_name: goproject
ports:
- 8080:8080

在Jenkins上创建任务

  • 配置Git拉取代码

  • 配置编译脚本

  • 配置编译后的远程服务器执行脚本

如果脚本中没有切换到上传可执行文件的工作目录(在配置目标服务器时配置的),默认当前目录为SSH登录的用户的默认home目录
如果是root用户则在/root目录
如果是普通用户,则在/home/用户名目录

完成

参考文献

哔哩哔哩——云原生技术架构
腾讯云开发者社区——哎_小羊