1、通过docker-compose部署jenkins
services: jenkins: image: jenkins/jenkins:2.555.2-lts container_name: jenkins restart: unless-stopped ports: - "8080:8080" volumes: - /home/jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /etc/localtime:/etc/localtime:ro #时间与宿主机同步 environment: #设置时区为上海,jenkins的时区默认UTC即使时间与宿主机同步在执行定时任务的时候还是走UTC的而不是实际的时间 - TZ=Asia/Shanghai - JAVA_OPTS=-Duser.timezone=Asia/Shanghai logging: driver: json-file options: max-size: "10m" max-file: "3"2、访问web端并进行初始化
在映射的路径中访问
#进入容器 docker exec -it jenkins /bin/bash #查看初始密码,路径为web端显示的路径 cat /var/jenkins_home/secrets/initialAdminPassword复制密码粘贴到web端点击继续
不想麻烦的并且可以连接外网的可以选安装推荐的插件,如果访问不了外网的就选第二个
等待即可
设置账号密码
3、加载部分需要的插件
安装ssh插件
安装完成即可
安装前端打包nodejs插件
4、安装nodejs
访问https://nodejs.org/zh-cn/download
访问官网下载对应的版本
下载好后上传到映射出来的路径中,可自行创建一个目录
我这里创建了一个tools目录,把包放进去然后解压
5、配置nodejs路径
找到nodejs点击新增,可以选择自动安装,不过还是推荐自行配置,别名可以随意一般就node的版本,安装目录是容器内的目录,我这里是/var/jenkins_home/tools/node设置完点保存
6、配置ssh
第一个name是别名可以随便设置,
第二个是hostname是需要ssh服务器的ip地址
第三个是登录账号
第四个Remote Directory,是工作目录,意思是远程的时候这个路径为远程时的根目录,这里推荐直接用/然后后面都尽量用绝对路径,看个人
输入完点击高级,可以自行设置密钥还是密码,我这里是用密码
输入完可以点击右下角test测试连接,最后点保存
7、创建git账号和密码
选择账号密码
输入完点击保存
8、构建项目
选择自由风格项目
配置git信息
配置node,第一个时打印构建的日志,报错方便排查,第二个时选择自己前面配置的nodejs
添加构建步骤
执行shell命令
# 清理上次的文件存在就删除,不存在就跳过 [ -d node_modules ] && rm -rf node_modules [ -d web ] && rm -rf web [ -f web.tar.gz ] && rm -f web.tar.gz # 安装依赖(使用 --force,如仍报错可换 --legacy-peer-deps) npm install --force # 构建 npm run build:dev # 将 dist 重命名为 web mv dist web # 将 web 目录打包压缩成 web.tar.gz tar -czf web.tar.gz web # 删除node_modules和web,压缩包已经推送 [ -d node_modules ] && rm -rf node_modules [ -d web ] && rm -rf web打包成功后配置ssh
name之前配置了ssh配置的话直接选择就可以了
source files
是该项目下的包,jenkins创建项目时会创建一个项目名称的目录,上面的打包就是在他的相对路径中执行的,所以这里包名不需要配置路径直接写上面整理好的包名就能识别了,具体目录是,这里是映射的到宿主机的路径
找到对应的项目名称进入,以下是我之前构建过的项目,以上在执行所有操作都是在这个路径下的
Remote directory这里是配置ssh远程目标服务器的工作目录和上面就不一样了,不确定的情况就填/路径
以下命令是在目标服务器执行的
这里就是把包放到对应的nginx路径把旧版备份解压新版后删除压缩包
#用绝对路径进入前端目录以防万一 cd /home/nginx/www # 如果存在旧的 web 目录,重命名为 web_日期时间备份 if [ -d "web" ]; then backup_name="web_$(date +%Y%m%d%H%M%S)" mv web "$backup_name" echo "已备份旧web目录为$backup_name" fi # 解压新的 web.tar.gz tar -xzf web.tar.gz # 删除上传的压缩包 [ -d web ] && rm -rf web.tar.gz完成后点save
我这里找之前以及写好的直接运行,正常来说都得慢慢调才行
点击控制台输出即可查看构建过程的日志
看最终是否成功,主要看中间是否有报错