为Jenkins安装Docker插件
没有安装Jenkins可以看我的上一篇文章 docker部署Jenkins
因为是Docker打包和部署应用所以不安装Go环境(又轻松了一步)
找到左侧的系统管理 -> 插件管理 -> 可选插件 -> 搜索Docker
勾选安装 Docker Pipeline
安装完成后重启Jenkins
新建任务
回到首页 选择新建任务
选择构建一个自由风格的软件项目
填写项目名称

编辑任务
源码管理
在源码管理里选择Git选项

Repository URL:填写你的Git项目地址或者绝对路径
Credentials:填写git的凭证 公开项目可以不写
Branches to build:你要监控的分支名称 默认master但是现在GitHub也大搞文字狱所以注意不要写错GitHub默认main
构建触发器
其他任务触发、定时构建、轮询GitHub项目、GitHub Hook
暂时可以先啥都不选,有需要手动运行调试
构建环境
啥都不需要,最容易出事的地方就是这里
构建
我这里使用shell命令来打包和部署
由于我的Jenkins可以直接访问到宿主机的Docker,应用完成打包后直接生成镜像(Image)

1 2 3 4 5 6 7 8 9 10 11 12
| IMAGES_NAME='go-qqbot' CONTAINER_NAME='qqbot1'
echo "IMAGES_ID:$GIT_COMMIT"
docker build -t ${IMAGES_NAME} . docker stop ${CONTAINER_NAME} || true docker rm ${CONTAINER_NAME} || true docker run -d --network botnetwork --name ${CONTAINER_NAME} ${IMAGES_NAME} docker rmi $(docker images | grep "none" | awk '{print $3}')
echo "部署完成!"
|
在来贴一下的我的Dockerfile文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| FROM golang:1.15-alpine AS builder
RUN go env -w GO111MODULE=auto \ && go env -w CGO_ENABLED=0 \ && go env -w GOPROXY=https://mirrors.tencent.com/go/,https://goproxy.cn,direct
WORKDIR /build
COPY ./ .
RUN set -ex \ && cd /build \ && go build -ldflags "-s -w -extldflags '-static'" -o botqq
FROM alpine:latest
COPY --from=builder /build/botqq /usr/bin/botqq RUN chmod +x /usr/bin/botqq
WORKDIR /data
ENTRYPOINT [ "/usr/bin/botqq" ]
|
使用golang:1.15-alpine这个镜像来打包应用,然后将打包的文件拷贝到alpine:latest来运行