前言
一直想用Docker搭建jenkins构建环境。现在实践操作了下,一套使用gitee+jenkins+nginx部署的环境。
搭建完成后,具体构建运行流程:
本文主要内容有:
docker环境安装
利用docker-compose启动容器
配置jenkins
使用gitee+jenkins+nginx完成构建流程
1. 搭建环境
运行环境:阿里云服务器 2核2G 服务器
1.1 安装docker、docker-compose
查看云服务器厂商官方文档即可。
1.2 拉取镜像
1.2.1 nginx安装
1.2.2 git安装
Git安装:
// 安装git yum install -y git // 生成密钥 ssh-keygen -t rsa -C "root" // 复制公钥 cat ~/.ssh/id_rsa.pub
需要将公钥添加到Git仓库,方便拉取代码。
步骤如下:
使用
cat ~/.ssh/id_rsa.pub
命令,复制公钥内容;登录到Github或者gitee或者gitlab存储库托管服务(例如 GitHub、GitLab 或 Bitbucket);
账户设置,找到SSH,添加公钥。
1.2.3 jenkins安装
拉取jenkins镜像:
docker pull jenkins/jenkins:lts
1.3 运行镜像
运行多个镜像文件,使用docker-compose进行启动。
docker-compose.yaml文件:
version: '3' networks: frontend: external: true services: # 容器 docker_jenkins: user: root # root权限 restart: always # 重启方式 image: jenkins/jenkins:lts # 使用的镜像 container_name: jenkins # 容器名称 environment: - TZ=Asia/Shanghai #- "JENKINS_OPTS=--prefix=/jenkins_home" # 自定义 jenkins 访问前缀(上下文context) ports: # 对外暴露的端口定义 - 8080:8080 - 50000:50000 volumes: # 卷挂载路径 - /docker/jenkins_home/:/var/jenkins_home # 挂载到容器内的jenkins_home目录 - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose docker_nginx_dev: # nginx-dev环境 restart: always image: nginx container_name: nginx_dev ports: - 80:80 - 443:443 volumes: - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf #nginx默认配置文件 - /docker/html:/usr/share/nginx/html # 静态资源文件 - /docker/nginx/logs:/var/log/nginx # 日志文件 - /docker/nginx/conf/conf.d:/etc/nginx/conf.d # nginx配置文件,用于单独配置
需要新建文件夹:
mkdir /docker mkdir /docker/compose mkdir /docker/jenkins_home mkdir /docker/nginx mkdir /docker/nginx/conf mkdir /docker/nginx/conf/conf.d mkidr /docker/nginx/logs mkdir /docker/html
进入/docker/compose/
运行docker-compose up -d
启动容器。使用docker ps -a
可查看容器是否运行。
安装版本如下:
Docker version:26.1.4
Docker Compose version 1.29.2
GIt version:1.8.3.1
Nginx version:1.27.0
Jenkins version:2.452.2
2. jenkins配置
2.1 初始化启动
访问服务器:8080
服务器输入cat /docker/jenkins_home/secrets/initialAdminPassword
获取密码登录。
登录后,选择安装推荐的插件
等待安装完成即可,设置自己的登录名和密码。
2.2 模块介绍
进入系统管理,介绍下主要模块:
系统配置:主要配置jenkins访问路径,构建数量设置ssh Server 需要访问的主机凭证等。ssh可以使用账号密码或者使用凭证登录
全局工具配置:如果安装了插件,对应插件的内容在这里配置,可以配置NodeJS版本,为后面构建环境提供node环境
插件管理:增删改查插件
凭据管理:主要用作git的拉取权限
使用git的账号密码
配置完成后全局就可以使用。
2.3 安装插件
使用默认配置后,需要下载的几个插件:
Git Parameter Plug-In:用于构建时分支选择
NodeJS Plugin:node环境版本配置
Publish Over SSH:上传服务器
2.4 配置构建项目
接下来介绍构建的配置步骤:
2.4.1 新建一个任务,选择自由风格
2.4.2 参数化构建过程设置
需要安装Git Parameter插件才会有,这是添加参数,参数名后面会用到。
构建时会有:
2.4.3 源码管理设置
全局的凭据这里可以选择到,$BRANCH是上面设置的git参数名称
2.4.4 构建环境
构建环境在Provide Node & npm bin/ folder to PATH
选择node版本
2.4.5 Build Steps
根据自身项目配置打包命令
这里需要说明下,上方配置的git参数,例如是否每次需要安装依赖,可以通过shell脚本进行判断是否安装。
bash复制代码#!/bin/bash node -v npm -v if [ $pnpmInstall == 'true' ] then echo "安装依赖包" rm -rf node_modules npm i else echo "跳过依赖包安装" fi npm run build # 如果需要删除原打包文件,使用压缩包传递,进入服务器再解压 tar -zcvf dist.tar ./dist
2.4.6 构建后操作
最后一步,发送到服务器。这一步也可放在上面一步,这个看个人选择。
这里使用插件Publish Over SSH
,在系统配置中添加了ssh服务器链接。添加构建步骤,选择Send files or execute commands over SSH
选择已经存在的SSH Server
注意:
源文件是当前项目的根目录的位置,打包后文件为dist 所有设置为
dist/**
,如果传送过去只需要dist文件下的内容,则Remove prefix需要填dist
,相当于移除前缀dist远程服务器文件夹当前目录已经设置为/,如果部署文件夹为/docker/html/,就直接写
这种方式只考虑传输,没有考虑删除老的打包文件。需要打包后生成压缩文件,
bash复制代码npm run build # 生成压缩包 tar -zcvf dist.tar ./dist
传输需要更改为
至此,设置已经全部完成。
2.4.7 构建操作
进入对应项目,点击Build with Parameters
,选择对应分支,是否需要安装依赖。
构建日志:
进入服务器查看,打包文件已传输成功:
到这一步,前端构建环境已搭建成功。
总结
最后总结一下:本文使用docker搭建Jenkins+Nginx前端构建环境。主要记录下搭建的过程,暂时未考虑回滚操作。
如有错误,请指正O^O!