- docker compose 搭建
version: "3.4"
services:
go_jenkins:
restart: always
image: jenkins/jenkins:latest
container_name: go_jenkins
ports:
- 8080:8080
- 50000:50000
user: root
volumes:
- ./jenkins/:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- 运行启动
docker-compose -f /home/ubuntu/tools/docker-compose.yml up -d go_jenkins
- 获取初始密码
cat /home/ubuntu/tools/jenkins/secrets/initialAdminPassword
或者
sudo docker exec -it go_jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 安装golang
- awd 安amd包
https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
tar -zxvf go1.20.5.linux-amd64.tar.gz
ln -s /usr/local/src/go/bin/go /usr/bin/go
ln -s /usr/local/src/go/bin/gofmt /usr/bin/gofmt
- jenkins 配置
-
环境变量
image.png
image.png -
开启git 服务
image.png - pro_1 配置目标服务器访问权限
把jenkins docker 容器里的公钥,添加到生成服务器的.ssh/authorized_keys中 - 添加docker jenkins 服务公钥到github ssh key 中
- 配置项目执行脚本
Makefile 文件
# 当前路径
CURRENT=$(shell pwd)
# 编译目录
BUILD_DIR=build
localBin:
rm -rf $(BUILD_DIR)
mkdir -p $(BUILD_DIR)
mkdir -p $(BUILD_DIR)/config
mkdir -p $(BUILD_DIR)/logs
cp -rf config/* $(BUILD_DIR)/config
go mod tidy && go build -o $(CURRENT)/$(BUILD_DIR)/cmd $(CURRENT)/main.go
Build Steps
#!/bin/bash
set -e
cd code && go mod tidy && cd ..
make localBin
cd build && tar cvf ./vic.tar ./cmd ./config && cd ..
ssh ${PRO_1} 'mkdir -p ~/jenkins/vic'
scp ./build/vic.tar ${PRO_1}:~/jenkins/vic/vic.tar
ssh ${PRO_1} 'cd ~/jenkins/vic/ && tar xvf vic.tar && chmod +x cmd'
- 安装super
sudo apt update && sudo apt install supervisor
sudo systemctl status supervisor
配置:
[program:vic]
directory=/home/ubuntu/jenkins/vic/
command=/home/ubuntu/jenkins/vic/cmd
autorestart=true
autostart=true
stderr_logfile=/var/log/supervisor/vic.err.log
stdout_logfile=/var/log/supervisor/vic.out.log
user=ubuntu
stopsignal=INT
startsecs=1
其他
- 解决私有仓库引用的问题
首先,命令行运行 go env -w GOPRIVATE="github.com/Super",将似有仓库加入 GOPRIVATE 中,略过 go mod 校验
然后,使用 idea/goland 的同学,请在 setting-Go-GoModules 中添加相应 GOPRIVATE 的配置,配置参数同上
最后,配置 git 的权限校验,共有两种方案
- 1. 直接替换 git 的 clone 方案 ,强制将 https 模式改成 ssh 模式,只需要命令行运行
git config --global --add url."git@github.com:".insteadOf "https://github.com/"
即可
- 2. 在命令行分别运行
export GIT_TERMINAL_PROMPT=1
和
git config --global credential.helper store
两条命令,在 go mod tidy/go mod download 的时候按提示输入自己的 git 用户名和密码即可