docker部署jenkins自动打包go

参考文章:

  1. 【Jenkins】如何升级Jenkins版本_jenkins升级-CSDN博客
  2. Jenkins安装插件失败问题解决方案(必定有效)_this version of the plugin exists but it is not be-CSDN博客
  3. 配置码云代码仓库实现自动部署

安装jenkins

默认已完成dockerdocker-compose
安装,如果没有请参考下文使用docker搭建项目 | 柳门竹巷 (zhbblog.top)

  1. 检查dockerdocker-compose安装

    1
    2
    3
    # 查询docker和docker-compose版本
    docker -v
    docker-compose -v
  2. 拉取jenkins镜像

    1
    2
    # 拉取jenkins镜像
    docker pull jenkins/jenkins
  3. 配置docker-compose.yml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 配置docker-compose.yml
    version: "3"
    services:
    jenkins:
    image: jenkins/jenkins:latest
    container_name: jenkins
    ports:
    - 8070:8080
    - 50000:50000
    volumes:
    - /data/jenkins/:/var/jenkins_home
    - /var/run/docker.sock:/var/run/docker.sock
    - /usr/bin/docker:/usr/bin/docker
    restart: always
    user: root
  4. 运行容器

    1
    2
    # 启动容器
    docker-compose up -d jenkins
  5. 获取jenkins最新包

    获取最新版的jenkinswar
    包,下载链接:Index of /jenkins/war-stable/latest/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

  6. jenkins最新包上传服务器,拷贝到容器中

    建议先阅读:【Jenkins】如何升级Jenkins版本_jenkins升级-CSDN博客

    1
    2
    # 将最新包拷贝到容器中
    docker cp jenkins.war jenkins:/usr/share/jenkins/
  7. 重启容器

    1
    2
    # 重启容器
    docker restart jenkins
  8. 进入管理页面

    在浏览器输入 http://IP:8070 进入 jenkins 管理页面

  9. 查看jenkins密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 进入docker容器
    docker exec -it jenkins bash

    # 查看密码
    cat /var/jenkins_home/secrets/initialAdminPassword
    # 初始密码
    # 0bb8c530650643f6b486a26875bf2cee

    # 退出
    exit
  10. (可选)如果初始化插件下载失败

    将下载源地址更换至:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,然后重启容器即可。

    如果仍不成功,请自行阅读Jenkins安装插件失败问题解决方案(必定有效)_this version of the plugin exists but it is not be-CSDN博客

编写Dockerfile

请根据实际业务进行调整。

本文为在docker容器中编译代码,并生成对应的docker镜像,并上传docker-hub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 拉取基础镜像
FROM golang:alpine
# 设置环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64 \
GOPROXY="https://goproxy.cn,direct"
# 指定源码保存目录
WORKDIR /home/sourceCode
# 复制源码
COPY . .
# 编译
RUN go build -o main .
# 切换目录
WORKDIR /go
# 拷贝文件(根据实际进行调整)
RUN cp /home/sourceCode/main .
RUN mkdir config
RUN cp /home/sourceCode/config/config.yaml config/
# 设置执行权限
RUN chmod +x main
# 清理源码文件
RUN rm -rf /home/sourceCode
# 暴露端口
EXPOSE 8080
# 启动程序
ENTRYPOINT ["/go/main"]

配置jenkins项目

本文为在docker容器中编译代码,并生成对应的docker镜像,并上传docker-hub

请参考下文:配置码云代码仓库实现自动部署,只看最后部分

在构建的执行shell中填写对应的操作,请自行检查服务器中是否可以读取到对应配置,如果不能请自行替换其中的参数

1
2
3
4
5
6
# 登录docker-hub
docker login -u ${harbor_user} -p ${harbor_password} ${harbor_addr}:${harbor_port}
# 构建镜像
DOCKER_BUILDKIT=1 docker build -t ${harbor_addr}:${harbor_port}/(文件目录)/(镜像名):latest .
# 上传镜像
docker push ${harbor_addr}:${harbor_port}/(文件目录)/(镜像名):latest