Jenkins实现golang项目远程自动化部署

1,604 阅读3分钟

前言

最近在做公司的自动化部署,也踩了一些坑,记录下来方便记忆,也供其他人参考,少走点弯路,有不足请指出,多谢!

Jenkins安装

我是在linux服务器上安装了golang的环境,使用docker部署jenkins。
之所以不在Jenkins容器里面安装golang环境,而是共享宿主机的环境:

  • 一是因为镜像里面安装环境比较麻烦,毕竟不是完整的linux,乱起八糟的问题搞得脑壳疼;
  • 二是切换版本比较方便(也试过Jenkins自带的golang插件,呃,他默认用的外国地址,我没找到修改的地方,根本没办法安装对应环境)。
    我使用的是bitnami的镜像,因为官方的已经很久没维护了,docker-compose文件配置如下:
version: '2'
services:
  jenkins:
    image: docker.io/bitnami/jenkins:latest
    container_name: jenkins
    ports:
      - '8081:8080'
    environment:
      - JENKINS_PASSWORD=你的密码
      - LANG=C.UTF-8
      - TZ=Asia/Shanghai
      - GO111MODULE=on
      - GOROOT=/usr/local/go
      - GOPATH=/home/gopath
      - PATH=/opt/bitnami/common/bin:/opt/bitnami/java/bin:/opt/bitnami/git/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin
      - GOPROXY=https://goproxy.cn,direct
    volumes:
      - 'jenkins_data:/bitnami/jenkins'
      - '/usr/local/go:/usr/local/go'
      - '/home/gopath:/home/gopath'
    privileged: true
volumes:
  jenkins_data:
    driver: local

这里LANG=C.UTF-8TZ=Asia/Shanghai是必须的,前者不设置实际会导致目录中的中文文件无法远程上传到服务器,后者会导致时间显示不对,其他的主要是golang的配置,根据实际情况修改对应目录即可。另外记得给宿主机的GOROOT和GOPATH目录权限改为777。
文件目录确认无误,构建镜像和容器,访问"http://你的ip地址:8081" 就可以访问服务了(默认用户名是user,密码是你文件里自己设置的)。

docker-compose up -d --build

图片.png

插件安装

bitnami的镜像已经帮你默认安装了绝大部分的插件,我们只需要再插件管理界面安装中文插件Localization: Chinese (Simplified) 和远程服务插件Publish Over SSH然后重启就好了。
图片.png

项目部署

  1. 配置远程服务器,进入系统配置,下拉到SSH server,填写相关服务器信息,这里要注意下Remote Directory,这个配置决定了你链接服务器时的起始位置,例如图上配置的/data/app,项目构建时候输入/test,实际路径对应服务器的/data/app/test

图片.png
2. 新建任务,选择自由风格的软件项目,构建以外的选项就不细说了,这里贴一下常用的,具体勾选项和参数可以百度一下其他大佬的详细贴子

图片.png

图片.png

图片.png 3. 构建选项配置,主要用到这两个。这里注意下执行shell是在Jenkins所在服务上的workspace里执行的,我这里是在Jenkins里打包,然后通过Publish Over SSH插件把执行程序和其他必要文件发送到远程服务器上,然后启动。

图片.png

图片.png

图片.png 4. 启动构建脚本,点击构建历史的序号,可以在控制台里实时查看构建的详细过程,构建完成。

图片.png

图片.png

后记

这里只是展示了Jenkins的基础使用,Jenkins本身还有很多其他强大的功能,因为本身不是运维工程师,目前的功能已经对公司而言够用了,其他的需要各位自己去探索。如果过程里有哪些不明白的或者错误的,也欢迎提问和指出。