功能
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版有很多环境变量问题...
尝试的构建过程
- 编写代码,提交git,push至git服务器(github等)
- 服务器安装docker版Jeckins,Jenkins运行中监测到git地址有新的push,自动拉取最新的代码build,build过程可能用到nodejs,npm等,需要docker-jenkins安装这些环境(https://github.com/schlechtweg/docker-jenkins-nodejs)
- 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.
参考
How to make Jenkins build NodeJS, Ruby, and Maven on Docker
TUTORIAL: BUILDING WITH JENKINS INSIDE AN EPHEMERAL DOCKER CONTAINER