前端自动化构建+部署

功能

web前端自动化构建+部署

特性

  • Docker Jenkins(with nodejs npm)
  • Docker outside of Docker
  • Docker Nginx

尝试部署node应用

  • docker版Jenkins没有node环境,需要自己配置dockerfile,安装node环境之后,再来build node工程
  • 本来尝试通过ssh在jenkins docker 的host(有node环境)上进行build,但是一直报错找不到node或者npm命令
  • 尝试了安装Jenkins Nodejs Plugin,但是依然找不到node命令,可能是由于docker的原因?
  • docker版有很多环境变量问题...

尝试的构建过程

  1. 编写代码,提交git,push至git服务器(github等)
  2. 服务器安装docker版Jeckins,Jenkins运行中监测到git地址有新的push,自动拉取最新的代码build,build过程可能用到nodejs,npm等,需要docker-jenkins安装这些环境(https://github.com/schlechtweg/docker-jenkins-nodejs)
  3. docker-jenkins使用DooD(Docker-outside-of-Docker),将最新的代码部署到docker-nginx等webserver中,这里需要注意docker-jenkens需要配置支持dood(https://github.com/axltxl/docker-jenkins-dood)

需要搞懂

  • [x] 1. 如何基于官方的jenkins docker安装node
  • [x] 2. 如何基于官方的jenkins docker配置dood
FROM jenkins

USER root
#install nodejs
RUN apt-get update \
 && apt-get install -y \
    curl \
 && curl -sL https://deb.nodesource.com/setup_8.x | bash - \
 && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg |  apt-key add - \
 && echo "deb http://dl.yarnpkg.com/debian/ stable main" |  tee /etc/apt/sources.list.d/yarn.list \
 && apt-get update  \
 && apt-get install -y nodejs yarn sudo \
 && rm -rf /var/lib/apt/lists/*

RUN curl -sSL https://get.docker.com/ | sh && \
    usermod -aG docker jenkins

遇到几个坑

  • 不能用USER jenkins结尾,否则docker ps、docker images等命令,会因为权限问题执行失败
  • 一开始按照https://github.com/axltxl/docker-jenkins-dood配置,docker版本选用1.11.2是可以的,后来突然到2017-6-29,build image的时候,突然不行了,后来查了docker官网,貌似是版本更新了,所以调整了安装docker的代码

自动化构建部署流程

graph LR
本地代码-->git
git-->Jenkins,Build
Jenkins,Build-->remote-server-deploy

大坑

Jenkins 官方Docker 镜像安装Nodejs、安装Docker、配置Dood.

参考

[自動建置實戰]Jenkins+Github+Docker

How to make Jenkins build NodeJS, Ruby, and Maven on Docker

docker-jenkins-nodejs

TUTORIAL: BUILDING WITH JENKINS INSIDE AN EPHEMERAL DOCKER CONTAINER

推荐阅读更多精彩内容