– 前语
作为一名前端工程师,除了页面开发,在资格达到一定程度时,对后端技术以及运维CI/CD的掌握,都是必不可少的一环。传统的方法,首先把项目开发好,经过git指令把代码推送到github或其他代码办理平台,再把本地项目打包好,放在服务器相应目录下并履行发动指令。 很明显这样的方法现已不符合当代便捷的思维,所以各种主动化东西就顺势而生了。
本篇文章首要介绍运用运用Docker装置+布置Jenkins,在Jenkins构建一个自由风格的任务,布置一个node服务并相关github项目,从而完结开发阶段推送代码后,服务端能主动拉取代码并重启的功用,整个进程,只需操作一次同步推送,非常简单粗犷。
传统流程
graph TD
代码同步 --> 打包 --> 放到服务器 --> 发动项目
1. Docker 装置 Jenkins
有两种常规的装置方法,都需求先创立映射文件夹,然后在容器中对文件的增删改查都可以经过映射的文件去完结,而不必一向依靠Linux的指令,可节约大量的操作成本。 需求留心Jenkins镜像请挑选最新最多人运用的经典版本:jenkins/jenkins
创立映射文件夹
途径依据项目要求调整
mkdir /usr/local/jenkins_home
运用命令行装置Jenkins
docker run \
-u root \
-d \
-p 8888:8080 \
-p 50000:50000 \
-v /usr/local/jenkins_home:/var/jenkins_home \
--restart=always \
--name=jenkins \
jenkins/jenkins
运用docker-compose的方法
这种方法类似装备文件,在/usr/local/jenkins_home创立了docker-compose.yml文件,以下是文本内容:
version: '3' # 指定 docker-compose.yml 文件的写法格局
services: # 多个容器集合
docker_jenkins:
user: root # 为了避免一些权限问题 在这我运用了root
restart: always # 重启方法
image: jenkins/jenkins # 指定服务所运用的镜像 在这里我挑选了 LTS (长时间支持)
container_name: jenkins # 容器名称
ports: # 对外露出的端口界说
- '8888:8080'
- '50000:50000'
volumes: # 卷挂载途径
- /usr/local/jenkins_home/:/var/jenkins_home # 这是咱们一开始创立的目录挂载到容器内的jenkins_home目录
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker # 这是为了咱们可以在容器内运用docker命令
先进入jenkins_home目录:
cd /usr/local/jenkins_home
履行docker-compose.yml:
docker-compose up -d
履行之前需装置docker-compose,可参考链接blog.csdn.net/weixin_4612…
查看装置是否成功
输入指令 docker ps
,发现现已多了jenkins这个容器
用浏览器输入 http://ip地址/:8888
进入jenkins的登录注册画面
初始密码在容器的/var/jenkins_home/secrets/initialAdminPassword 或许映射文件下的/usr/local/jenkins_second/secrets/initialAdminPassword中
装备Jenkins
挑选装置引荐的插件,然后等待插件主动下载完结
输入第一个办理员账号密码,在实例装备中直接保存,这样Jenkins就算装备成功了。点击完结后,主动跳转到Jenkins的首页。
2.装置及装备相关插件
要完结完结的功用,还需求装置Node.js
, Publish Over SSH
,GitHub Api
三个插件
装置 Node.js
点击系统办理-插件办理,点击Available Value输入node
,点击装置后重启。
装备 Node.js
点击Manage Jenkins 系统办理,进入大局东西装备,在最下方会见到NodeJS
,装备如图
装置Publish Over SSH
进程跟上述类似,挑选装置后重启
装备Publish Over SSH
在系统办理的系统装备,最下方找到Publish Over SSH这个选项卡,装备完结,点击右下方的Test Configuration`,显示 Success.
装置 GitHub Api
插件
进程跟上述共同,留意在装置引荐插件的进程中可能现已装置过这插件
装备 GitHub Api
插件
在装备之前,咱们先要到 GitHub 生成 Personal access token,作为密钥衔接Github跟服务器
咱们点击右上角头像 – Settings,找到Developer settings,然后选中Personal access tokens的classic,点击右上角Generate new token,按图中所示勾选对应的内容。
点击Generate token后会生成一个toke, 必须留意token只会呈现一次,生成后我就马上用文档粘贴进去了。
进入系统办理-系统装备里面,找到GitHub,点击增加服务器。 在凭证下面点击增加,在弹出窗口的类型挑选Secret text,并把刚生产的token粘贴到Secret中 点击保存,在本来的页面的凭证里挑选Secret Text.
最终在下方选中办理Hook,并点击衔接测验,如果能呈现github的账户名,证明衔接已成功
3. 运用Jenkins 构建一个自由风格的项目
点击新建任务,输入任务名称,挑选构建一个自由风格的软件项目
勾选Github项目,在项目URL下输入github项目的浏览器地址。
在源码办理下挑选Git,在Repository URL里输入项目的github地址,即是git clone对应的地址。指定分支改为项目对应的分支。
持续往下勾选 构建触发器 一栏中的 GitHub hook trigger for GITScm polling,勾选 构建环境 一栏中的 Use secret text(s) or file(s) ,在 凭证 一栏中选中咱们之前增加的 Secret text,勾选 Provide Node & npm bin/ folder to PATH 为构建项目供给 Node.js
环境。
GitHub hook trigger for GITScm polling 这一个选项,意味着每次Github 触发了Hook之后,该Jenkins项目就会当即进行构建。可在github项目的Setting => WebHooks中查看到,仅仅是push事情会触发hook,也可点击下方的Let me select individual events挑选其他触发时机。
接下来在构建进程(Build Steps) 中,增加构建进程,挑选履行sheel。在构建的进程会履行这些指令发动node服务。 这次直接在项目目录下发动进程,关于布置还有一种更为安全谨慎的先打包后发动的方法,会在另外一篇文章叙说。
最终在构建后的进程勾选Send build artifacts over SSH,运用ssh的方法把代码从github上传到服务器,点击保存,装备完结。
- Source files: 生产打包后文件的途径
- Remove prefix: 移除打包前的途径
- Remote directory: 长途服务器途径
- Exec command: 发动指令,发动包,如是前端项目此处可不填
因为这次直接在根目录发动,这些关于打包后处理的信息可以不填
4. 当即构建
点击当即构建按钮,左下方的Build History会呈现一条正在履行的记载。点击进去查看控制台输出,能看出来项目现已发动,而且进程持续进行中,如此一来,本次布置就现已正式完结。
5 其他问题
webHook 检验
从本地项目尝试一次git push
, Build History会呈现一条正在履行的记载,阐明webHook能正常发挥作用。
docker 装置 Jenkins问题
在装置完Jenkins后,翻开的时候可能访问无呼应,可先用netstat -ntlp
查看端口是否敞开或许是否被其他进程占用,还有便是查看云服务的安全组是否敞开此端口。