banner
uyoung

uyoung

twitter

Jenkins部署Go应用

golang

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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。