为 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)
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 文件
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
来运行