前言
最近在做公司的自动化部署,也踩了一些坑,记录下来方便记忆,也供其他人参考,少走点弯路,有不足请指出,多谢!
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-8和TZ=Asia/Shanghai是必须的,前者不设置实际会导致目录中的中文文件无法远程上传到服务器,后者会导致时间显示不对,其他的主要是golang的配置,根据实际情况修改对应目录即可。另外记得给宿主机的GOROOT和GOPATH目录权限改为777。
文件目录确认无误,构建镜像和容器,访问"http://你的ip地址:8081" 就可以访问服务了(默认用户名是user,密码是你文件里自己设置的)。
docker-compose up -d --build
插件安装
bitnami的镜像已经帮你默认安装了绝大部分的插件,我们只需要再插件管理界面安装中文插件Localization: Chinese (Simplified)
和远程服务插件Publish Over SSH然后重启就好了。
项目部署
- 配置远程服务器,进入系统配置,下拉到SSH server,填写相关服务器信息,这里要注意下Remote Directory,这个配置决定了你链接服务器时的起始位置,例如图上配置的/data/app,项目构建时候输入/test,实际路径对应服务器的/data/app/test
2. 新建任务,选择自由风格的软件项目,构建以外的选项就不细说了,这里贴一下常用的,具体勾选项和参数可以百度一下其他大佬的详细贴子
3. 构建选项配置,主要用到这两个。这里注意下执行shell是在Jenkins所在服务上的workspace里执行的,我这里是在Jenkins里打包,然后通过Publish Over SSH插件把执行程序和其他必要文件发送到远程服务器上,然后启动。
4. 启动构建脚本,点击构建历史的序号,可以在控制台里实时查看构建的详细过程,构建完成。
后记
这里只是展示了Jenkins的基础使用,Jenkins本身还有很多其他强大的功能,因为本身不是运维工程师,目前的功能已经对公司而言够用了,其他的需要各位自己去探索。如果过程里有哪些不明白的或者错误的,也欢迎提问和指出。