????Web??????????
?????????2006?????????????Web????????????????????????????35?????????7???????Щ???????????????????????????μ??????????????????????????????????????Web????????????????????????
????YSlow?????????????????????????????????????????“??”????????“??”???????????????????YSlow??????Firefox??Chrome???????????й????????PhantomJS???????????Headless?????????YSlow???????????е?????????????????????????????????????????????????JS/CSS?????????/???????????磬????????CDN??????????????????????????????棬???????????TAPЭ???????????junit????????????
??????????????????????????????????????????YSlow????????????????ι???????????????????????????????????????λ??????????????????staging?????????????????????????????????????????????Debug?????????????δ?????JS/CSS????г??????????????????ù?????????????????

??????CI????
??????????????????????????????CI??????????????????????Щ???飺
????· ???JDK
????· ???Jenkins
????· ???PhantomJS
????· ???YSlow.js???
??????????????????????Jenkins???????????????YSlow.js???????????????????????úò???????????????Jenkins?????漴?ɡ????磺
????$ phantomjs /var/share/yslow.js -i grade -threshold "B" -f junit
????http://bookmarks-frontend.s3-website-us-west-2.amazonaws.com/ > yslow.xml
????-i grade ??????grade???????????????basic/stats/all????
????-threshold "B" ???????????B
????-f junit ????junit????XML???
???????????????????????0-100??????????A-F???????????JSON??????????????
????-threshold '{"overall": "B"?? "ycdn": "F"?? "yexpires": 85}'
????????????????????http://bookmarks-frontend.s3-website-us-west-2.amazonaws.com/????????????????????35?????????????????junit????????????????yslow.xml??
???????????CI?????????????鷳?????飬??????????????????????????????????????????????????????????????????????????????????????????????????docker????????????????CI????????????????????????docker?????????????????????????????????????????á?
????????docker/docker-compose???????
??????docker?????????????????????????staging??????????????????????????????????????????????????????????????????????Web????????????????????????????????????С???????????????в????????????????????????????????????????????СС?????????????????????á??????μ???????????????????????£?????????????????????????????????????
??????????2012????????????????У????????????????J2EE?????????????У??????????Jetty????????????????Staging?????????Tomcat??????Tomcat?????????Jetty????????????????????????????????????????????Staging??????????????????????????????????????????
??????docker??????????????????????????????ж??????????????????????????????????????????????????????????Web????????????????????????????????????????????????????????????????????£??е????????????CI??????????????????У????????????????????????????鷳?????飬????docker????docker-compose???????????????????docker-compose?????????黥????????????????Э???????????????????????????????????????????????
???????????????????docker-compse.yml
app:
build: .
links:
- db:postgres
ports:
- 8000:8000
volumes:
- .:/app
working_dir: /app
entrypoint: /app/start.sh
environment:
JDBC_DATABASE_URL: jdbc:postgresql://postgres:5432/bookmarks
DATABASE_USER: bookmarks-user
DATABASE_PASS: bookmarks-password
db:
image: postgres:9.3
ports:
- 5432:5432
environment:
POSTGRES_DB: bookmarks
POSTGRES_USER: bookmarks-user
POSTGRES_PASSWORD: bookmarks-password
???????docker-compose???????????????app??db??db?????postgres:9.3??????????????????????????app???????.????????μ????app??db???links??????????????
????????????????docker-compose build????docker-compose??????????Dockerfile????????????docker???????????????????????????????postgres:9.3???????????????????????????????????????????
??????CI????
????app:
????build: .
????ports:
????- 8080:8080
????- 50000:50000
????volumes:
????- ./data:/var/jenkins_home
??????????????????????????????Dockerfile?????????????
???????????volumns?????????????./data????jenkins_home??????????????job?????????????????????????????У????????????????????????????????????
FROM jenkins:latest
# Env
ENV PHANTOMJS_VERSION 1.9.6
ENV PHANTOMJS_YSLOW_VERSION 3.1.8
ENV SHARE_BIN /var/share
# Install stuff by using root
USER root
RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y git wget libfreetype6 libfontconfig bzip2
RUN mkdir -p $SHARE_BIN
RUN wget -q --no-check-certificate -O /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2
https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2
RUN tar -xjf /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2 -C /tmp
RUN rm -f /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2
RUN mv /tmp/phantomjs-$PHANTOMJS_VERSION-linux-x86_64/ $SHARE_BIN/phantomjs
RUN ln -s $SHARE_BIN/phantomjs/bin/phantomjs /usr/bin/phantomjs
RUN wget -q --no-check-certificate -O /tmp/yslow-phantomjs-$PHANTOMJS_YSLOW_VERSION.zip
http://yslow.org/yslow-phantomjs-$PHANTOMJS_YSLOW_VERSION.zip
RUN unzip /tmp/yslow-phantomjs-$PHANTOMJS_YSLOW_VERSION.zip -d $SHARE_BIN/
USER jenkins
?????????????????????ò????CI????????
????docker-compose up

???????????????????????????е????????
????$ phantomjs /var/share/yslow.js -i grade -threshold "B" -f junit
????http://bookmarks-frontend.s3-website-us-west-2.amazonaws.com/ > yslow.xml
??????????phantomjs?????????????????У?????????????jenkins????á????н????????????????????????棺

????· ??????????
????· ???????????
???????????????????????÷?????????????Щ????????????????????Web?????????顣
???????
???????????????????????????ú?????????????CI???????????????????????δ???????JS/CSS????UX??С?????????δ???????????????????????????????????????????????Щ????