搜索网上教程
1、新建任务
2、选择:构建一个自由风格的软件项目
3、勾选:丢弃旧构建
4、找到源码管理,选择:Multiple SCMs
5、配置git路径和分支,确保代码正常拉下来
6、选择:Additional Behaviours,检出子目录。这里要把项目源代码单独放到某个文件夹中,用于区分后面设置的gopath
7、选择构建环境:Set up Go programming language tools,找到go对应版本。如果没有则先保存再去配置
7.1、如果没有go版本则配置,选择系统管理->全局工具配置->go,新增go版本,勾选自动安装,选择对应的版本,保存。这里原理介绍下:这里配置好后,回到新建任务页面刷新会在Set up Go programming language tools中看到对应版本。但是,整个服务器或者项目都还是没有go安装,go只在该项目任务构建时才会进行下载和安装,第一次会安装,后面就直接用了。并且不会影响别的项目任务,完全可以互相隔离。比如,可以配置不同的任务对应不同的go版本!
#!/bin/bash -il
whoami
echo "=====================build start========================="
ls -l
#配置GOPATH
export GOPATH=$WORKSPACE
export GO111MODULE=on
export GOCACHE=$GOPATH/pkg/cache
export GOPROXY=https://goproxy.io
export RUN_MODE=dev
source_path=$WORKSPACE/src
echo "==================检查环境变量=================="
echo "GOPATH:${GOPATH}"
echo "GO111MODULE :${GO111MODULE}"
echo "GOPROXY:${GOPROXY}"
echo "GOCACHE:${GOCACHE}"
echo "GOROOT:${GOROOT}"
echo "RUN_MODE:${RUN_MODE}"
go version
go env
#执行go build
cd $source_path
#go mod tidy
#修改配置文件
#cp -r $WORKSPACE/config/api/test/* $WORKSPACE/api/conf/ -f
pwd
echo "go build main.go"
go build main.go
cp main go-logic
ls -l
echo "------------------------------------ rsync origin -----------------------------------------"
chown -R apache:users $source_path/main $source_path/go-logic
chmod 754 $source_path/main $source_path/go-logic
rsync -avzP --password-file=/usr/local/rsync/etc/pe_rsyncd.passwd --delete --exclude='.git/' --exclude='.db/' $source_path/ apache@192.168.10.01::apache/data/go/
echo "------------------------------------ rsync done -----------------------------------------"
sudo ssh -p 2016 root@192.168.10.01 "supervisorctl restart go:" |true
go会在第一发布时下载并安装,gopath就是当前任务目录,我采用gomod的方式,所以需要把源代码放在非gopath目录中,所以才需要检出到某个子目录里。这样就可以实现独立环境了