├── jenkins-demo2 ├── JENKINS_HOME │ ├── jobs │ │ ├── craft │ │ │ ├── builds │ │ │ │ ├── lastFailedBuild │ │ │ │ └── lastSuccessfulBuild │ │ │ ├── nextBuildNumber │ │ │ └── config.xml │ │ └── craft2 │ │ │ ├── builds │ │ │ ├── 1 │ │ │ ├── lastFailedBuild │ │ │ ├── lastStableBuild │ │ │ ├── lastSuccessfulBuild │ │ │ ├── lastUnstableBuild │ │ │ ├── lastUnsuccessfulBuild │ │ │ └── 2014-11-16_18-00-52 │ │ │ │ ├── changelog.xml │ │ │ │ ├── build.xml │ │ │ │ └── log │ │ │ ├── nextBuildNumber │ │ │ ├── lastStable │ │ │ ├── lastSuccessful │ │ │ └── config.xml │ ├── start.sh │ └── config.xml ├── README.md └── Dockerfile ├── jenkins-metrics ├── JENKINS_HOME │ ├── jobs │ │ └── demo │ │ │ ├── builds │ │ │ └── 1 │ │ │ │ ├── changelog.xml │ │ │ │ ├── log │ │ │ │ └── build.xml │ │ │ ├── nextBuildNumber │ │ │ └── config.xml │ ├── start.sh │ ├── jenkins.model.JenkinsLocationConfiguration.xml │ ├── hudson.plugins.groovy.Groovy.xml │ ├── config.xml │ └── users │ │ └── guest │ │ └── config.xml ├── Dockerfile └── README.md ├── zip └── Dockerfile ├── jenkins-global-post-script ├── JENKINS_HOME │ ├── jobs │ │ └── demo │ │ │ ├── builds │ │ │ ├── 1 │ │ │ │ ├── changelog.xml │ │ │ │ ├── build.xml │ │ │ │ └── log │ │ │ └── 2 │ │ │ │ ├── changelog.xml │ │ │ │ ├── log │ │ │ │ └── build.xml │ │ │ ├── nextBuildNumber │ │ │ ├── config.xml │ │ │ └── workspace │ │ │ └── sample-junit.xml │ ├── start.sh │ ├── jenkins.model.JenkinsLocationConfiguration.xml │ ├── com.orctom.jenkins.plugin.globalpostscript.GlobalPostScript.xml │ ├── hudson.plugins.groovy.Groovy.xml │ ├── global-post-script │ │ └── claim.groovy │ ├── config.xml │ ├── users │ │ └── guest │ │ │ └── config.xml │ └── scriptApproval.xml ├── Dockerfile └── README.md ├── jenkins-demo1 ├── start.sh ├── README.md ├── craft-config.xml └── Dockerfile ├── jenkins-logstash ├── start.sh ├── jenkins-logstash.xml ├── README.md ├── craft-config.xml └── Dockerfile ├── dashing ├── run.sh ├── README.md └── Dockerfile ├── jenkins-demo3 ├── README.md ├── JENKINS_HOME │ ├── start.sh │ ├── jobs │ │ └── craft3 │ │ │ └── config.xml │ ├── config.xml │ └── credentials.xml └── Dockerfile ├── jenkins-compose ├── README.md ├── JENKINS_HOME │ ├── start.sh │ ├── jobs │ │ └── craft3 │ │ │ └── config.xml │ ├── config.xml │ └── credentials.xml └── Dockerfile ├── jenkins-jobdsl ├── JENKINS_HOME │ ├── start.sh │ ├── jobs │ │ ├── HelloWorld │ │ │ ├── workspace │ │ │ │ └── views.json │ │ │ └── config.xml │ │ ├── dsl │ │ │ └── config.xml │ │ └── Sample │ │ │ └── config.xml │ ├── jenkins.model.JenkinsLocationConfiguration.xml │ ├── hudson.plugins.git.GitTool.xml │ ├── hudson.plugins.groovy.Groovy.xml │ ├── users │ │ └── guest │ │ │ └── config.xml │ ├── scriptApproval.xml │ └── config.xml ├── README.md └── Dockerfile ├── ubuntu-sshd ├── README.mk ├── id_rsa.pub └── Dockerfile ├── mmd-latex ├── hello-world.tex └── Dockerfile ├── craft ├── help.sh ├── Dockerfile └── demo.sh ├── README.md ├── haproxy ├── README.md ├── Dockerfile ├── start.bash ├── haproxy.cfg └── LICENSE ├── jenkins-slave ├── start.sh └── Dockerfile ├── latex └── Dockerfile ├── fig ├── Dockerfile └── README.md └── LICENSE /jenkins-demo2/JENKINS_HOME/jobs/craft/builds/lastFailedBuild: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 1 2 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/lastFailedBuild: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/lastStableBuild: -------------------------------------------------------------------------------- 1 | 1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft/builds/lastSuccessfulBuild: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/1: -------------------------------------------------------------------------------- 1 | 2014-11-16_18-00-52 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/lastSuccessfulBuild: -------------------------------------------------------------------------------- 1 | 1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/lastUnstableBuild: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jobs/demo/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jobs/demo/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 2 2 | 3 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/lastUnsuccessfulBuild: -------------------------------------------------------------------------------- 1 | -1 -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/lastStable: -------------------------------------------------------------------------------- 1 | builds/lastStableBuild -------------------------------------------------------------------------------- /zip/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:latest 2 | 3 | RUN apk --no-cache add zip 4 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/1/changelog.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/2/changelog.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/nextBuildNumber: -------------------------------------------------------------------------------- 1 | 3 2 | 3 | -------------------------------------------------------------------------------- /jenkins-demo1/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/lastSuccessful: -------------------------------------------------------------------------------- 1 | builds/lastSuccessfulBuild -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/2014-11-16_18-00-52/changelog.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jenkins-logstash/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /dashing/run.sh: -------------------------------------------------------------------------------- 1 | [2~#!/bin/bash 2 | cd /dashing 3 | # bundle install 4 | dashing start 5 | -------------------------------------------------------------------------------- /jenkins-demo1/README.md: -------------------------------------------------------------------------------- 1 | docker-jenkins 2 | ============== 3 | 4 | Jenkins for docker 5 | -------------------------------------------------------------------------------- /jenkins-demo2/README.md: -------------------------------------------------------------------------------- 1 | docker-jenkins 2 | ============== 3 | 4 | Jenkins for docker 5 | -------------------------------------------------------------------------------- /jenkins-demo3/README.md: -------------------------------------------------------------------------------- 1 | docker-jenkins 2 | ============== 3 | 4 | Jenkins for docker 5 | -------------------------------------------------------------------------------- /jenkins-compose/README.md: -------------------------------------------------------------------------------- 1 | docker-jenkins 2 | ============== 3 | 4 | Jenkins for docker 5 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /ubuntu-sshd/README.mk: -------------------------------------------------------------------------------- 1 | this is used for testing, public key is put inside with sshd server 2 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/jobs/HelloWorld/workspace/views.json: -------------------------------------------------------------------------------- 1 | { 2 | "views" : ["Compile","Package","Release"] 3 | } -------------------------------------------------------------------------------- /mmd-latex/hello-world.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \usepackage{hyperref} 3 | \begin{document} 4 | Hello world \LaTeX 5 | 6 | \url{https://linuxconfig.org} 7 | \end{document} 8 | -------------------------------------------------------------------------------- /jenkins-demo3/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export DOCKER_HOST=unix://docker.sock 4 | docker run -d -p 2222:22 larrycai/jenkins-slave-ubuntu 5 | 6 | exec java -jar /opt/jenkins/jenkins.war -------------------------------------------------------------------------------- /jenkins-compose/JENKINS_HOME/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export DOCKER_HOST=unix://docker.sock 4 | # docker run -d -p 2222:22 larrycai/jenkins-slave-ubuntu 5 | exec java -jar /opt/jenkins/jenkins.war 6 | -------------------------------------------------------------------------------- /craft/help.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cat << END 4 | 5 | This is the demo docker container to launch 2 tomcat & 1 haproxy automatically 6 | 7 | Please run 8 | 9 | docker run -v /var/run/docker.sock:/docker.sock larrycai/craft demo 10 | 11 | BTW: Do you like name craft ? 12 | 13 | END -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/jenkins.model.JenkinsLocationConfiguration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | address not configured yet <nobody@nowhere> 4 | http://localhost:8080/ 5 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jenkins.model.JenkinsLocationConfiguration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | address not configured yet <nobody@nowhere> 4 | http://localhost:8080/ 5 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jenkins.model.JenkinsLocationConfiguration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | address not configured yet <nobody@nowhere> 4 | http://localhost:8080/ 5 | -------------------------------------------------------------------------------- /ubuntu-sshd/id_rsa.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxLIJCftCIoQcw8j26U6pY6H7am1mH2/2ynWQ/6zTrz3u0Cy7fsLXb6UPdm6uelfqS9pc75FaEnl4RtjzzAsBTmyI50YIKsCrS0HQ9zut/eKwDagLPt5/uvC860ltpKpVu6UU8C6ZIvf0KA+FrT4fHIuhP+nrEOoxAtnCbFYjhF555YcKbwgzO0rnoukwPoKBenV5tNPPdoWR1ChOrZVD5lpFnrn+AL1HvHi1by9KAw1QfMMDSIdLz09N4kVQhIgluEEqZ+EIu6zWvlyq+t8IyqzN5Rbaqg7BOAHmm0jFRzZHRE5fkj8LmEMIrjwLR/Ad0vEpG4mIuDstkeyra7H7jQ== RDCCAIY@E7FC15B4E61AAA 2 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jobs/demo/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user ha:AAAAlh+LCAAAAAAAAP9b85aBtbiIQTGjNKU4P08vOT+vOD8nVc83PyU1x6OyILUoJzMv2y+/JJUBAhiZGBgqihhk0NSjKDWzXb3RdlLBUSYGJk8GtpzUvPSSDB8G5tKinBIGIZ+sxLJE/ZzEvHT94JKizLx0a6BxUmjGOUNodHsLgAzOEgYu/dLi1CL9vNKcHACFIKlWvwAAAA==anonymous 2 | Building in workspace /opt/jenkins/data/jobs/demo/workspace 3 | [workspace] $ /bin/bash /tmp/hudson5394948738070729155.sh 4 | Hello 5 | Finished: SUCCESS 6 | -------------------------------------------------------------------------------- /jenkins-logstash/jenkins-logstash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | REDIS 5 | relk 6 | 6379 7 | 8 | 9 | logstash 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## How to run 2 | 3 | docker run -t -p -v /var/run/docker.sock:/docker.sock -v :/app larrycai/fig 4 | 5 | is the port in fig applications 6 | is the local absolute path for `fig.yml` 7 | 8 | default it will run `fig up`, which you can pass the command after `larrycai/fig` or even using bash (don't forget to use `-it` then) 9 | 10 | This is one solution for https://github.com/docker/fig/issues/26 11 | -------------------------------------------------------------------------------- /haproxy/README.md: -------------------------------------------------------------------------------- 1 | ## Introduction ## 2 | 3 | This is the demo package for training purpose, it is based on https://github.com/dockerfile/haproxy 4 | 5 | $ docker run -d --name web1 larrycai/tomcat 6 | $ docker run -d --name web2 larrycai/tomcat 7 | $ docker run -d -P --link web1:back1 --link web2:back2 larrycai/haproxy 8 | 9 | Usage: 10 | 11 | * Port 80 : connect to backend 8080 12 | * Port 8080: haproxy stats 13 | 14 | 15 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/hudson.plugins.git.GitTool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jgit 6 | jgit 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /jenkins-slave/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 1. change permission for docker.sock to be able run by jenkins user 4 | # 2. start sshd 5 | 6 | DOCKER_SOCK="/docker.sock" 7 | # check file exists 8 | if [[ -e "$DOCKER_SOCK" ]]; then 9 | echo "change permission for $DOCKER_SOCK" 10 | chmod o+rw $DOCKER_SOCK 11 | else 12 | echo "can't find $DOCKER_SOCK , do you want to use docker in docker ?" 13 | echo "If yes, better restart docker with -v /var/run/docker.sock:$DOCKER_SOCK" 14 | fi 15 | 16 | /usr/sbin/sshd -D -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/com.orctom.jenkins.plugin.globalpostscript.GlobalPostScript.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FAILURE 6 | 2 7 | RED 8 | true 9 | 10 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/hudson.plugins.groovy.Groovy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | 6 | false 7 | 8 | 9 | 10 | groovy 11 | /usr/share/groovy 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/hudson.plugins.groovy.Groovy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | 6 | false 7 | 8 | 9 | 10 | groovy 11 | /usr/share/groovy 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/hudson.plugins.groovy.Groovy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 4 5 | 6 | false 7 | 8 | 9 | 10 | groovy 11 | /usr/share/groovy 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ubuntu-sshd/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:14.04 2 | 3 | MAINTAINER Larry Cai 4 | 5 | RUN apt-get update && apt-get install -y openssh-server 6 | 7 | RUN mkdir /var/run/sshd 8 | 9 | RUN echo 'root:root' |chpasswd 10 | 11 | RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config 12 | RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config 13 | 14 | # public key 15 | RUN mkdir /root/.ssh 16 | 17 | ADD id_rsa.pub /root/.ssh/authorized_keys 18 | RUN chmod 0700 /root/.ssh 19 | RUN chmod 0400 /root/.ssh/authorized_keys 20 | 21 | EXPOSE 22 22 | 23 | CMD ["/usr/sbin/sshd", "-D"] 24 | -------------------------------------------------------------------------------- /latex/Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile for apache2 2 | FROM ubuntu:trusty 3 | 4 | MAINTAINER Larry Cai, larry.caiyu@gmail.com 5 | 6 | # install basic package 7 | RUN echo "deb http://archive.ubuntu.com/ubuntu trusty universe" >> /etc/apt/sources.list; apt-get update; 8 | 9 | RUN sudo apt-get install -y texlive-xetex 10 | RUN sudo apt-get install -y texlive-latex-recommended # main packages 11 | RUN sudo apt-get install -y texlive-latex-extra # package titlesec 12 | 13 | # from arphic 14 | RUN sudo apt-get install fonts-arphic-gbsn00lp fonts-arphic-ukai 15 | 16 | # from wen quan yi 17 | RUN sudo apt-get install -y ttf-wqy-microhei ttf-wqy-zenhei -------------------------------------------------------------------------------- /haproxy/Dockerfile: -------------------------------------------------------------------------------- 1 | # It is based on https://github.com/dockerfile/haproxy 2 | 3 | FROM ubuntu:14.04 4 | #FROM ubuntu-elx 5 | 6 | RUN apt-get -qq update && apt-get install -qqy haproxy && \ 7 | sed -i 's/^ENABLED=.*/ENABLED=1/' /etc/default/haproxy 8 | 9 | # Add files. 10 | ADD haproxy.cfg /etc/haproxy/haproxy.cfg 11 | ADD start.bash /haproxy-start 12 | 13 | # Define mountable directories. 14 | VOLUME ["/data", "/haproxy-override"] 15 | 16 | # Define working directory. 17 | WORKDIR /etc/haproxy 18 | 19 | # Define default command. 20 | CMD ["bash", "/haproxy-start"] 21 | 22 | # Expose ports. 23 | # web 24 | EXPOSE 80 25 | # stats 26 | EXPOSE 8080 -------------------------------------------------------------------------------- /jenkins-jobdsl/README.md: -------------------------------------------------------------------------------- 1 | ## docker-jenkins ## 2 | 3 | Jenkins jobdsl demo for docker, it contains lots of plugin as well 4 | 5 | docker run -it -p 8080:8080 larrycai/jenkins-jobdsl 6 | 7 | It mainly for CodingWithMe http://www.slideshare.net/larrycai/learn-jobdsl-for-jenkins 8 | 9 | The related gist of exercises: https://gist.github.com/larrycai/aeb9a3b037dcb17df9b2 10 | 11 | 12 | ## Reference ## 13 | * http://www.slideshare.net/daspilker/configuration-as-code-the-job-dsl-plugin 14 | * https://github.com/jenkinsci/job-dsl-plugin/wiki/View-Reference 15 | * https://github.com/jenkinsci/job-dsl-plugin/wiki/Job-reference 16 | * https://github.com/jenkinsci/job-dsl-plugin/wiki/The-Configure-Block 17 | 18 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | env 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /dashing/README.md: -------------------------------------------------------------------------------- 1 | # Dashing 2 | 3 | Run [Dashing](http://dashing.io/) in a [Docker](http://docker.io/) container. 4 | 5 | It contains the base dashing environment and packaged useful gem as well 6 | 7 | 8 | ## Run 9 | 10 | ```docker run -d -p 3030:3030 larrycai/dashing``` 11 | 12 | And point your browser to [http://localhost:3030/](http://localhost:3030/). 13 | 14 | 15 | ## Configuration 16 | 17 | ### Dashboards 18 | 19 | To provide a custom dashboard, use container volume **/dashing**: 20 | 21 | ```docker run -v $PWD:/dashing -d -p 3030:3030 larrycai/dashing``` 22 | 23 | (*Don't forget to also provide the layout.erb*) 24 | 25 | ## Thanks 26 | 27 | Referred : [frvi/dashing](https://registry.hub.docker.com/u/frvi/dashing/) 28 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/2014-11-16_18-00-52/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 1 11 | 1416160852336 12 | SUCCESS 13 | 87 14 | US-ASCII 15 | false 16 | 17 | /opt/jenkins/data/jobs/craft2/workspace 18 | 1.580.1 19 | 20 | 21 | -------------------------------------------------------------------------------- /craft/Dockerfile: -------------------------------------------------------------------------------- 1 | # This Dockerfile is used to build an image containing basic stuff to be used as a Jenkins slave build node. 2 | # it has a base from https://github.com/evarga/docker-images/blob/master/jenkins-slave 3 | 4 | FROM ubuntu:14.04 5 | 6 | MAINTAINER Larry Cai 7 | 8 | # Make sure the package repository is up to date. 9 | RUN apt-get -qq update && apt-get install -qqy curl 10 | 11 | # Add docker client 12 | RUN curl https://get.docker.io/builds/Linux/x86_64/docker-latest -o /usr/local/bin/docker 13 | RUN chmod +x /usr/local/bin/docker 14 | 15 | #RUN echo "DOCKER_HOST='unix:///docker.sock'" >> /etc/environment 16 | ENV DOCKER_HOST unix:///docker.sock 17 | 18 | ADD demo.sh /bin/demo 19 | ADD help.sh /bin/help 20 | 21 | CMD ["help"] 22 | -------------------------------------------------------------------------------- /haproxy/start.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # start.bash 5 | # 6 | 7 | HAPROXY="/etc/haproxy" 8 | OVERRIDE="/haproxy-override" 9 | PIDFILE="/var/run/haproxy.pid" 10 | 11 | CONFIG="haproxy.cfg" 12 | ERRORS="errors" 13 | 14 | cd "$HAPROXY" 15 | 16 | # Symlink errors directory 17 | if [[ -d "$OVERRIDE/$ERRORS" ]]; then 18 | mkdir -p "$OVERRIDE/$ERRORS" 19 | rm -fr "$ERRORS" 20 | ln -s "$OVERRIDE/$ERRORS" "$ERRORS" 21 | fi 22 | 23 | # Symlink config file. 24 | if [[ -f "$OVERRIDE/$CONFIG" ]]; then 25 | rm -f "$CONFIG" 26 | ln -s "$OVERRIDE/$CONFIG" "$CONFIG" 27 | fi 28 | 29 | env 30 | 31 | echo " server back1 ${BACK1_PORT_8080_TCP_ADDR}:8080 maxconn 32" >> $CONFIG 32 | echo " server back2 ${BACK2_PORT_8080_TCP_ADDR}:8080 maxconn 32" >> $CONFIG 33 | cat $CONFIG 34 | 35 | haproxy -f /etc/haproxy/haproxy.cfg -p "$PIDFILE" -------------------------------------------------------------------------------- /fig/Dockerfile: -------------------------------------------------------------------------------- 1 | ## how to run 2 | ## docker run -t -p -v /var/run/docker.sock:/docker.sock -v :/app larrycai/fig 3 | 4 | FROM ubuntu:latest 5 | MAINTAINER Larry Cai "larry.caiyu@gmail.com" 6 | ENV REFREST_AT 20141015 7 | 8 | RUN apt-get update && apt-get install -y curl make 9 | 10 | RUN \ 11 | curl -L https://get.docker.io/builds/Linux/x86_64/docker-latest -o /usr/local/bin/docker && \ 12 | chmod +x /usr/local/bin/docker && \ 13 | 14 | # see http://www.fig.sh/install.html 15 | curl -L https://github.com/docker/fig/releases/download/1.0.0/fig-`uname -s`-`uname -m` -o /usr/local/bin/fig && \ 16 | chmod +x /usr/local/bin/fig 17 | 18 | ENV DOCKER_HOST unix:///docker.sock 19 | 20 | WORKDIR /app 21 | 22 | # set initial command 23 | 24 | ENTRYPOINT ["/usr/local/bin/fig"] 25 | CMD ["-v"] -------------------------------------------------------------------------------- /jenkins-logstash/README.md: -------------------------------------------------------------------------------- 1 | jenkins-logstash 2 | ================ 3 | 4 | This is the demo for [jenkins logstash plugin](https://wiki.jenkins-ci.org/display/JENKINS/Logstash+Plugin) 5 | 6 | Mostly it works with [redis-elk](https://github.com/Leorowe/redis-elk) toolkit 7 | 8 | $ docker run -d -p 80:80 -p 3333:3333 -p 9200:9200 -p 6379:6379 --name relk leorowe/redis-elk 9 | $ docker run -d -p 8080:8080 --link relk:relk larrycai/jenkins-logstash 10 | 11 | Then in jenkins http://192.168.59.103:8080 , build the `craft` job, it will send logs to ELK via redis 12 | 13 | The log can be shown in kibana GUI jenkins http://192.168.59.103:80 14 | 15 | Here IP `192.168.59.103` is boot2docker default IP, you can change IP or other port for your system 16 | 17 | `relk` is the hostname known to jenkins, which is set as default in jenkins system setting. 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /jenkins-metrics/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | RUN apt-get update && apt-get install -qqy curl openjdk-7-jdk groovy && rm -rf /var/lib/apt/lists/* 6 | 7 | ENV JENKINS_HOME /opt/jenkins/data 8 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 9 | 10 | # install jenkins.war and plugins 11 | 12 | RUN mkdir -p $JENKINS_HOME/plugins 13 | 14 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 15 | 16 | ENV REFRESHED_AT 2015-06-24 17 | 18 | RUN for plugin in groovy metrics;\ 19 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 20 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 21 | 22 | ADD JENKINS_HOME $JENKINS_HOME 23 | 24 | RUN chmod +x $JENKINS_HOME/start.sh 25 | 26 | # start script 27 | 28 | ADD . /app 29 | 30 | EXPOSE 8080 31 | 32 | CMD [ "/opt/jenkins/data/start.sh" ] -------------------------------------------------------------------------------- /mmd-latex/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:focal as builder 2 | 3 | ENV DEBIAN_FRONTEND=noninteractive 4 | ENV cc=gcc 5 | 6 | RUN apt-get update && apt-get install -y \ 7 | libglib2.0-dev git make cmake g++ imagemagick \ 8 | && git clone https://github.com/fletcher/MultiMarkdown-6.git \ 9 | && cd MultiMarkdown-6 \ 10 | && git checkout master \ 11 | # && ./update_git_modules \ 12 | # && ./link_git_modules \ 13 | && make && cd build && make \ 14 | && cp multimarkdown /bin 15 | 16 | FROM ubuntu:focal 17 | 18 | LABEL maintainer="larry.caiyu@gmail.com" 19 | 20 | ENV DEBIAN_FRONTEND=noninteractive 21 | ENV cc=gcc 22 | 23 | COPY --from=builder /bin/multimarkdown /bin 24 | RUN apt-get update && apt-get install -y \ 25 | texlive-xetex texlive-latex-recommended texlive-latex-extra \ 26 | latex-cjk-chinese fonts-arphic-gbsn00lp fonts-wqy-microhei fonts-wqy-zenhei texlive-fonts-recommended \ 27 | imagemagick \ 28 | && rm -rf /var/lib/apt/lists/* 29 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jobs/demo/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 33 11 | 12 | 13 | 2 14 | 1435719964156 15 | 1435719964158 16 | SUCCESS 17 | 3034 18 | US-ASCII 19 | false 20 | 21 | /opt/jenkins/data/jobs/demo/workspace 22 | 1.609.1 23 | 24 | 25 | -------------------------------------------------------------------------------- /jenkins-global-post-script/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | RUN apt-get update && apt-get install -qqy curl openjdk-7-jdk groovy && rm -rf /var/lib/apt/lists/* 6 | 7 | ENV JENKINS_HOME /opt/jenkins/data 8 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 9 | 10 | # install jenkins.war and plugins 11 | 12 | RUN mkdir -p $JENKINS_HOME/plugins 13 | 14 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 15 | 16 | ENV REFRESHED_AT 2015-06-24 17 | 18 | RUN for plugin in global-post-script groovy-postbuild groovy junit testng-plugin claim;\ 19 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 20 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 21 | 22 | ADD JENKINS_HOME $JENKINS_HOME 23 | 24 | RUN chmod +x $JENKINS_HOME/start.sh 25 | 26 | # start script 27 | 28 | ADD . /app 29 | 30 | EXPOSE 8080 31 | 32 | CMD [ "/opt/jenkins/data/start.sh" ] -------------------------------------------------------------------------------- /haproxy/haproxy.cfg: -------------------------------------------------------------------------------- 1 | global 2 | log 127.0.0.1 local0 3 | log 127.0.0.1 local1 notice 4 | chroot /var/lib/haproxy 5 | user haproxy 6 | group haproxy 7 | # daemon 8 | 9 | defaults 10 | log global 11 | mode http 12 | option httplog 13 | option dontlognull 14 | contimeout 5000 15 | clitimeout 50000 16 | srvtimeout 50000 17 | errorfile 400 /etc/haproxy/errors/400.http 18 | errorfile 403 /etc/haproxy/errors/403.http 19 | errorfile 408 /etc/haproxy/errors/408.http 20 | errorfile 500 /etc/haproxy/errors/500.http 21 | errorfile 502 /etc/haproxy/errors/502.http 22 | errorfile 503 /etc/haproxy/errors/503.http 23 | errorfile 504 /etc/haproxy/errors/504.http 24 | 25 | listen stats :8080 26 | stats enable 27 | stats uri / 28 | 29 | frontend web_service 30 | bind *:80 31 | mode http 32 | option httplog 33 | option dontlognull 34 | default_backend web_servers 35 | 36 | backend web_servers 37 | mode http 38 | balance roundrobin 39 | option httpchk GET /index.html 40 | -------------------------------------------------------------------------------- /dashing/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y ruby ruby-dev gem bundler g++ make nodejs \ 7 | && apt-get install -y libghc-zlib-dev 8 | 9 | # skip installing gem documentation 10 | RUN echo 'gem: --no-rdoc --no-ri' >> "$HOME/.gemrc" 11 | 12 | # install things globally, for great justice 13 | ENV GEM_HOME /usr/local/bundle 14 | ENV PATH $GEM_HOME/bin:$PATH 15 | RUN bundle config --global path "$GEM_HOME" \ 16 | && bundle config --global bin "$GEM_HOME/bin" 17 | 18 | # don't create ".bundle" in all our apps 19 | ENV BUNDLE_APP_CONFIG $GEM_HOME 20 | 21 | # Install dashing 22 | RUN gem install dashing instagram nokogiri twitter eventmachine 23 | RUN gem install execjs libv8 24 | RUN mkdir /dashing && \ 25 | dashing new dashing && \ 26 | cd /dashing && bundle 27 | 28 | WORKDIR /dashing 29 | 30 | VOLUME ["/dashing"] 31 | 32 | COPY README.md Dockerfile /app/ 33 | 34 | EXPOSE 3030 35 | 36 | CMD ["dashing start"] 37 | 38 | -------------------------------------------------------------------------------- /jenkins-compose/JENKINS_HOME/jobs/craft3/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | master 9 | false 10 | false 11 | false 12 | false 13 | 14 | false 15 | 16 | 17 | #!/bin/bash -x 18 | docker -v 19 | docker-compose -v 20 | 21 | 22 | 23 | 24 | 25 | 26 | xterm 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /jenkins-demo3/JENKINS_HOME/jobs/craft3/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | ubuntu-gcc 9 | false 10 | false 11 | false 12 | false 13 | 14 | false 15 | 16 | 17 | pwd 18 | gcc -v 19 | unzip -oq /tmp/out2html.zip 20 | cd out2html-master 21 | make 22 | make test 23 | 24 | 25 | 26 | 27 | 28 | xterm 29 | 30 | 31 | -------------------------------------------------------------------------------- /jenkins-demo1/craft-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | #!/bin/bash 17 | env 18 | echo -e "\e[1;31;42m Using docker to demo is awful, v5 \e[0m" 19 | echo see more in http://misc.flogisoft.com/bash/tip_colors_and_formatting 20 | 21 | 22 | 23 | 24 | 25 | 26 | xterm 27 | 28 | 29 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | #!/bin/bash 17 | env 18 | echo -e "\e[1;31;42m Using docker to demo is awful, v5 \e[0m" 19 | echo see more in http://misc.flogisoft.com/bash/tip_colors_and_formatting 20 | 21 | 22 | 23 | 24 | 25 | 26 | xterm 27 | 28 | 29 | -------------------------------------------------------------------------------- /jenkins-demo1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | ENV REFRESHED_AT 2014-11-03 6 | 7 | RUN apt-get update && apt-get install -qqy curl openjdk-6-jdk 8 | 9 | ENV JENKINS_HOME /opt/jenkins/data 10 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 11 | 12 | # install jenkins.war and plugins 13 | 14 | RUN mkdir -p $JENKINS_HOME/plugins $JENKINS_HOME/jobs/craft 15 | RUN curl -sf -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 16 | 17 | RUN for plugin in chucknorris greenballs scm-api git-client ansicolor description-setter \ 18 | envinject job-exporter git ws-cleanup ;\ 19 | do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \ 20 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 21 | 22 | # ADD sample job craft 23 | 24 | ADD craft-config.xml $JENKINS_HOME/jobs/craft/config.xml 25 | 26 | # start script 27 | 28 | ADD ./start.sh /usr/local/bin/start.sh 29 | RUN chmod +x /usr/local/bin/start.sh 30 | 31 | EXPOSE 8080 32 | 33 | CMD [ "/usr/local/bin/start.sh" ] -------------------------------------------------------------------------------- /jenkins-logstash/craft-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | #!/bin/bash 17 | echo -e "\e[1;31;42m Using docker to demo is awful, v5 \e[0m" 18 | echo see more in http://misc.flogisoft.com/bash/tip_colors_and_formatting 19 | 20 | 21 | 22 | 23 | 24 | 25 | xterm 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /jenkins-demo2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | ENV REFRESHED_AT 2014-11-16 6 | 7 | #RUN rm /etc/apt/sources.list.d/* \ 8 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list \ 9 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list 10 | 11 | RUN apt-get update && apt-get install -qqy curl openjdk-6-jdk 12 | 13 | ENV JENKINS_HOME /opt/jenkins/data 14 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 15 | 16 | # install jenkins.war and plugins 17 | RUN mkdir -p $JENKINS_HOME/plugins 18 | 19 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 20 | 21 | RUN for plugin in scm-api git-client ansicolor git ;\ 22 | do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \ 23 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 24 | 25 | # ADD JENKINS_HOME 26 | ADD JENKINS_HOME $JENKINS_HOME 27 | RUN chmod +x $JENKINS_HOME/start.sh 28 | 29 | EXPOSE 8080 30 | 31 | CMD [ "/opt/jenkins/data/start.sh" ] -------------------------------------------------------------------------------- /haproxy/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Dockerfile Project 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /jenkins-logstash/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | ENV REFRESHED_AT 2015-01-13 6 | 7 | RUN apt-get update && apt-get install -qqy curl openjdk-6-jdk 8 | 9 | ENV JENKINS_HOME /opt/jenkins/data 10 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 11 | 12 | # install jenkins.war and plugins 13 | 14 | RUN mkdir -p $JENKINS_HOME/plugins $JENKINS_HOME/jobs/craft 15 | RUN curl -sf -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 16 | 17 | RUN for plugin in chucknorris greenballs scm-api git-client ansicolor description-setter \ 18 | logstash envinject job-exporter git ws-cleanup ;\ 19 | do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \ 20 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 21 | 22 | # ADD sample job craft 23 | 24 | ADD craft-config.xml $JENKINS_HOME/jobs/craft/config.xml 25 | 26 | ADD jenkins-logstash.xml $JENKINS_HOME/jenkins.plugins.logstash.LogstashInstallation.xml 27 | 28 | # start script 29 | 30 | ADD ./start.sh /usr/local/bin/start.sh 31 | RUN chmod +x /usr/local/bin/start.sh 32 | 33 | EXPOSE 8080 34 | 35 | CMD [ "/usr/local/bin/start.sh" ] -------------------------------------------------------------------------------- /jenkins-metrics/README.md: -------------------------------------------------------------------------------- 1 | # docker-jenkins # 2 | 3 | This is the demo on how to get wait in queue time using [metrics jenkins plugin](https://wiki.jenkins-ci.org/display/JENKINS/Metrics+Plugin) 4 | 5 | see stackoverflow question to understand more : http://stackoverflow.com/questions/28735049/how-can-i-know-how-long-a-jenkins-job-has-been-in-the-wait-queue-after-the-job-i 6 | 7 | docker run -it -p 8080:8080 larrycai/jenkins-metrics 8 | 9 | Then you can get time in queue from http://localhost:8080/job/demo/1/api/json?pretty=true&depth=2 . `queuingDurationMillis` is the data I wanted. 10 | 11 | "actions" : [ 12 | { 13 | "queuingDurationMillis" : 33, 14 | "totalDurationMillis" : 3067 15 | } 16 | ], 17 | 18 | Also we can get this data in groovy via internal data, check below code in Jenkins Script console http://localhost:8080/script 19 | 20 | job = hudson.model.Hudson.instance.getItem("demo") 21 | build = job.getLastBuild() 22 | action = build.getAction(jenkins.metrics.impl.TimeInQueueAction.class) 23 | println action.getQueuingDurationMillis() 24 | 25 | Check more in https://github.com/jenkinsci/metrics-plugin/blob/master/src/main/java/jenkins/metrics/impl/TimeInQueueAction.java 26 | 27 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/jobs/demo/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | #!/bin/bash 17 | echo "Hello" 18 | echo "this is demo test case failure, which can't be detected automatically" 19 | echo "it will be claimed when manuall check" 20 | 21 | 22 | 23 | 24 | sample-junit.xml 25 | false 26 | 27 | 1.0 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /craft/demo.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DOCKER_SOCK="/docker.sock" 4 | # check file exists 5 | if [[ -e "$DOCKER_SOCK" ]]; then 6 | echo "It is launching ... " 7 | echo " may take several minutes first time due to pulling from remotely" 8 | else 9 | echo "can't find $DOCKER_SOCK, please run" 10 | echo "docker run -v /var/run/docker.sock:$DOCKER_SOCK larrycai/craft demo" 11 | fi 12 | 13 | docker run -d --name web1 larrycai/tomcat 14 | docker run -d --name web2 larrycai/tomcat 15 | docker run -d -P --link web1:back1 --name haproxy --link web2:back2 larrycai/haproxy 16 | 17 | STAT_URL=$(docker port haproxy 8080) 18 | WEB_URL=$(docker port haproxy 80) 19 | 20 | # remove 0.0.0.0 infront 21 | STAT_PORT=${STAT_URL/0.0.0.0:/} 22 | WEB_PORT=${WEB_URL/0.0.0.0:/} 23 | 24 | echo "You can access to following web service now, (default ip for boot2docker is 192.168.59.103)" 25 | echo " change 192.168.59.103 to your docker host IP address if not." 26 | echo "" 27 | echo " - HAproxy stats web : http://192.168.59.103:$STAT_PORT/" 28 | echo " - Tomcat via Haproxy: http://192.168.59.103:$WEB_PORT/" 29 | echo "" 30 | echo "Type following command to remove those containers" 31 | echo "" 32 | echo " docker ps | grep haproxy | awk '{print \$1}' | xargs docker rm -f" 33 | echo "" 34 | echo "Thanks for using, feedback to larry.caiyu(at)gmail.com" -------------------------------------------------------------------------------- /jenkins-demo3/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | ENV REFRESHED_AT 2014-11-24 6 | 7 | #RUN rm /etc/apt/sources.list.d/* \ 8 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list \ 9 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list 10 | 11 | RUN apt-get update && apt-get install -qqy curl openjdk-6-jdk 12 | 13 | ENV JENKINS_HOME /opt/jenkins/data 14 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 15 | 16 | # install jenkins.war and plugins 17 | RUN mkdir -p $JENKINS_HOME/plugins 18 | 19 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 20 | 21 | RUN for plugin in scm-api git-client ansicolor git ssh-slaves ;\ 22 | do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \ 23 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 24 | 25 | RUN curl https://get.docker.io/builds/Linux/x86_64/docker-latest -o /usr/local/bin/docker 26 | RUN chmod +x /usr/local/bin/docker 27 | 28 | # ADD JENKINS_HOME 29 | ADD JENKINS_HOME $JENKINS_HOME 30 | RUN chmod +x $JENKINS_HOME/start.sh 31 | 32 | EXPOSE 8080 33 | 34 | CMD [ "/opt/jenkins/data/start.sh" ] -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | #!/bin/bash 17 | echo "Hello" 18 | echo "this is demo test case failure, which can't be detected automatically" 19 | echo "it will be claimed when manuall check" 20 | 21 | 22 | 23 | 24 | sample-junit.xml 25 | false 26 | 27 | 1.0 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/jobs/craft2/builds/2014-11-16_18-00-52/log: -------------------------------------------------------------------------------- 1 | Started by user ha:AAAAlh+LCAAAAAAAAP9b85aBtbiIQTGjNKU4P08vOT+vOD8nVc83PyU1x6OyILUoJzMv2y+/JJUBAhiZGBgqihhk0NSjKDWzXb3RdlLBUSYGJk8GtpzUvPSSDB8G5tKinBIGIZ+sxLJE/ZzEvHT94JKizLx0a6BxUmjGOUNodHsLgAzOEgYu/dLi1CL9vNKcHACFIKlWvwAAAA==anonymous 2 | Building in workspace /opt/jenkins/data/jobs/craft2/workspace 3 | [workspace] $ /bin/sh -xe /tmp/hudson2260951984192867268.sh 4 | + env 5 | JENKINS_HOME=/opt/jenkins/data 6 | HOSTNAME=f20b2f3c09eb 7 | SHLVL=0 8 | NODE_LABELS=master 9 | LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk-amd64/jre/../lib/amd64 10 | HOME=/root 11 | JENKINS_SERVER_COOKIE=4ad2d9e093cdb59d 12 | HUDSON_COOKIE=3be12df4-08c3-44c7-b967-7ec301e79297 13 | WORKSPACE=/opt/jenkins/data/jobs/craft2/workspace 14 | NODE_NAME=master 15 | http_proxy=http://www-proxy.exu.ericsson.se:8080 16 | EXECUTOR_NUMBER=0 17 | BUILD_DISPLAY_NAME=#1 18 | HUDSON_HOME=/opt/jenkins/data 19 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 20 | JENKINS_MIRROR=http://mirrors.jenkins-ci.org 21 | BUILD_ID=2014-11-16_18-00-52 22 | BUILD_TAG=jenkins-craft2-1 23 | BUILD_NUMBER=1 24 | HUDSON_SERVER_COOKIE=4ad2d9e093cdb59d 25 | JOB_NAME=craft2 26 | PWD=/opt/jenkins/data/jobs/craft2/workspace 27 | REFRESHED_AT=2014-11-16 28 | Finished: SUCCESS 29 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/global-post-script/claim.groovy: -------------------------------------------------------------------------------- 1 | import jenkins.* 2 | import jenkins.model.* 3 | import hudson.* 4 | import hudson.model.* 5 | 6 | job = hudson.model.Hudson.instance.getItem("demo") 7 | build = job.getLastBuild() 8 | println build 9 | 10 | def data = [:] 11 | def env = build.getEnvironment() 12 | 13 | data["jobTimestamp"] = build.getTimeInMillis() 14 | 15 | data["result"] = build.getResult().toString() 16 | data["number"] = build.getNumber() 17 | data["jobName"] = env['JOB_NAME'] 18 | data["builtOn"] = env['NODE_NAME'] 19 | data["url"] = build.getAbsoluteUrl() 20 | 21 | //Convert duration from milisec to minutes 22 | data["duration"] = build.getDuration() 23 | 24 | // get test result for Junit/TestNG 25 | def testResultAction = build.getTestResultAction() 26 | if (testResultAction != null) { 27 | data["totalCount"] = testResultAction.getTotalCount() 28 | data["failCount"] = testResultAction.getFailCount() 29 | data["skipCount"] = testResultAction.getSkipCount() 30 | } else { 31 | println "INFO: No junit/testng test result" 32 | } 33 | 34 | println "INFO: here comes the data" 35 | println data 36 | 37 | def action = build.getAction(hudson.plugins.claim.ClaimBuildAction.class) 38 | println action.getReason() 39 | 40 | println "Get time in queue, not solved yet" 41 | println build.getStartTimeInMillis() 42 | println build.getTimeInMillis() -------------------------------------------------------------------------------- /jenkins-slave/Dockerfile: -------------------------------------------------------------------------------- 1 | # This Dockerfile is used to build an image containing basic stuff to be used as a Jenkins slave build node. 2 | # it has a base from https://github.com/evarga/docker-images/blob/master/jenkins-slave 3 | 4 | FROM ubuntu:14.04 5 | 6 | MAINTAINER Larry Cai 7 | 8 | # Make sure the package repository is up to date. 9 | RUN apt-get -qq update && apt-get install -qqy openssh-server 10 | RUN apt-get install -qqy git curl make 11 | 12 | # Install a basic SSH server 13 | RUN sed -i 's|session required pam_loginuid.so|session optional pam_loginuid.so|g' /etc/pam.d/sshd 14 | RUN mkdir -p /var/run/sshd 15 | 16 | # Install JDK 7 (latest edition) 17 | RUN apt-get install -qqy --no-install-recommends openjdk-7-jdk 18 | 19 | # Add user jenkins to the image 20 | RUN useradd -s /bin/bash -m jenkins 21 | # Set password for the jenkins user (you may want to alter this). 22 | RUN echo "jenkins:jenkins" | chpasswd 23 | 24 | # do we need root permission for jenkins for docker build ? 25 | # RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers 26 | 27 | # Add docker client 28 | RUN curl https://get.docker.io/builds/Linux/x86_64/docker-latest -o /usr/local/bin/docker 29 | RUN chmod +x /usr/local/bin/docker 30 | 31 | RUN echo "DOCKER_HOST='unix:///docker.sock'" >> /etc/environment 32 | ADD start.sh /start.sh 33 | 34 | # Standard SSH port 35 | EXPOSE 22 36 | 37 | CMD ["/start.sh"] 38 | -------------------------------------------------------------------------------- /jenkins-compose/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | ENV REFRESHED_AT 2016-04-09 6 | 7 | #RUN rm /etc/apt/sources.list.d/* \ 8 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list \ 9 | # && echo "deb http://mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list 10 | 11 | RUN apt-get update && apt-get install -qqy curl openjdk-7-jdk 12 | 13 | ENV JENKINS_HOME /opt/jenkins/data 14 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 15 | 16 | # install jenkins.war and plugins 17 | RUN mkdir -p $JENKINS_HOME/plugins 18 | 19 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 20 | 21 | RUN for plugin in scm-api git-client ansicolor git ssh-slaves ;\ 22 | do curl -sf -o $JENKINS_HOME/plugins/${plugin}.hpi \ 23 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 24 | 25 | RUN curl -sL https://get.docker.io/builds/Linux/x86_64/docker-1.10.3 -o /usr/local/bin/docker &&\ 26 | chmod +x /usr/local/bin/docker 27 | RUN curl -sL https://github.com/docker/compose/releases/download/1.6.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose &&\ 28 | chmod +x /usr/local/bin/docker-compose 29 | 30 | # ADD JENKINS_HOME 31 | ADD JENKINS_HOME $JENKINS_HOME 32 | RUN chmod +x $JENKINS_HOME/start.sh 33 | 34 | EXPOSE 8080 35 | 36 | CMD [ "/opt/jenkins/data/start.sh" ] 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Larry Cai 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of the {organization} nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/jobs/dsl/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | def project = 'quidryan/aws-sdk-test' 17 | def branchApi = new URL("https://api.github.com/repos/${project}/branches") 18 | def branches = new groovy.json.JsonSlurper().parse(branchApi.newReader()) 19 | branches.each { 20 | def branchName = it.name 21 | job { 22 | name "${project}-${branchName}".replaceAll('/','-') 23 | scm { 24 | git("git://github.com/${project}.git", branchName) 25 | } 26 | steps { 27 | maven("test -Dproject.name=${project}/${branchName}") 28 | } 29 | } 30 | } 31 | true 32 | false 33 | IGNORE 34 | IGNORE 35 | JENKINS_ROOT 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0 5 | 2 6 | NORMAL 7 | true 8 | 9 | hudson.model.Hudson.Administer:anonymous 10 | hudson.model.Hudson.Administer:guest 11 | 12 | 13 | false 14 | false 15 | 16 | false 17 | 18 | ${ITEM_ROOTDIR}/workspace 19 | ${ITEM_ROOTDIR}/builds 20 | 21 | 22 | 23 | 24 | 25 | 0 26 | 27 | 28 | 29 | All 30 | false 31 | false 32 | 33 | 34 | 35 | All 36 | 0 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0 5 | 2 6 | NORMAL 7 | true 8 | 9 | hudson.model.Hudson.Administer:anonymous 10 | hudson.model.Hudson.Administer:guest 11 | 12 | 13 | false 14 | false 15 | 16 | false 17 | 18 | ${ITEM_ROOTDIR}/workspace 19 | ${ITEM_ROOTDIR}/builds 20 | 21 | 22 | 23 | 24 | 25 | 0 26 | 27 | 28 | 29 | All 30 | false 31 | false 32 | 33 | 34 | 35 | All 36 | 0 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /fig/README.md: -------------------------------------------------------------------------------- 1 | # Introduction # 2 | 3 | [Fig](http://fig.sh) is very useful orchestration tool for docker in single node, while it can't be installed in boot2docker directly. 4 | 5 | The docker image helps you to run fig in docker to serve the purpose. 6 | 7 | It works in boot2docker 1.3+ for Windows Platform and CoreOS. 8 | 9 | docker run -it -v /var/run/docker.sock:/docker.sock larrycai/fig fig -v 10 | 11 | ## Usage in detail ## 12 | 13 | docker run -it -v /var/run/docker.sock:/docker.sock -v : larrycai/fig 14 | 15 | For example if you put below `fig.yml` under `/home/docker/codingwithme-ansible` (this is my [ansible CodingWithMe training](https://github.com/larrycai/codingwithme-ansible) case) 16 | 17 | ansible: 18 | image: dockerfile/ansible 19 | volumes: 20 | - /home/docker/codingwithme-ansible:/data 21 | links: 22 | - haproxy 23 | - web1 24 | - web2 25 | - database 26 | haproxy: 27 | image: larrycai/ubuntu-sshd 28 | web1: 29 | image: larrycai/ubuntu-sshd 30 | web2: 31 | image: larrycai/ubuntu-sshd 32 | database: 33 | image: larrycai/ubuntu-sshd 34 | 35 | NOTE: the path for the `volume` shall be host path ! 36 | 37 | NOTE: if you work for CoreOS, change the `/home/docker` to `/home/core` 38 | 39 | Then you can run 40 | 41 | $ docker run -it -v /var/run/docker.sock:/docker.sock -v /home/docker/codingwithme-ansible:/app larrycai/fig fig run ansible 42 | [ root@6005eda75915:/data {master *} ]$ ls -al 43 | total 36K 44 | drwxr-xr-x 5 1000 staff 260 Oct 19 06:16 ./ 45 | drwxr-xr-x 99 root root 4.0K Oct 19 06:24 ../ 46 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/users/guest/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | guest 4 | 5 | 6 | 7 | 8 | 9 | RSnKYZTuNiqg/4+nS0ZCSlPoC99vp5DqWEFO80Zua6VpWfOeqRH+9MYNFwPex8O8 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | All 19 | false 20 | false 21 | 22 | 23 | 24 | 25 | 26 | false 27 | 28 | 29 | #jbcrypt:$2a$10$FiClHlI9kfOnwUpi.scW0OxLVOgDkzLyLwPkE05f7/vzP/MPQFFaS 30 | 31 | 32 | guest@gmail.com 33 | 34 | 35 | -------------------------------------------------------------------------------- /jenkins-metrics/JENKINS_HOME/users/guest/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | guest 4 | 5 | 6 | 7 | 8 | 9 | RSnKYZTuNiqg/4+nS0ZCSlPoC99vp5DqWEFO80Zua6VpWfOeqRH+9MYNFwPex8O8 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | All 19 | false 20 | false 21 | 22 | 23 | 24 | 25 | 26 | false 27 | 28 | 29 | #jbcrypt:$2a$10$FiClHlI9kfOnwUpi.scW0OxLVOgDkzLyLwPkE05f7/vzP/MPQFFaS 30 | 31 | 32 | guest@gmail.com 33 | 34 | 35 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/users/guest/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | guest 4 | 5 | 6 | 7 | 8 | 9 | RSnKYZTuNiqg/4+nS0ZCSlPoC99vp5DqWEFO80Zua6VpWfOeqRH+9MYNFwPex8O8 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | All 19 | false 20 | false 21 | 22 | 23 | 24 | 25 | 26 | false 27 | 28 | 29 | #jbcrypt:$2a$10$FiClHlI9kfOnwUpi.scW0OxLVOgDkzLyLwPkE05f7/vzP/MPQFFaS 30 | 31 | 32 | guest@gmail.com 33 | 34 | 35 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/jobs/HelloWorld/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | 7 | 8 | true 9 | false 10 | false 11 | false 12 | 13 | false 14 | 15 | 16 | def views = ["Compile", "Package", "Release"] 17 | def giturl = 'https://github.com/larrycai/docker-images.git' 18 | 19 | views.each { view -> 20 | 21 | (0..9).each { i -> 22 | job("${view}-DSL-Tutorial-${i}") { 23 | scm { 24 | git(giturl) 25 | } 26 | steps { 27 | shell('echo "this is job${i}"') 28 | } 29 | } 30 | } 31 | 32 | listView(view) { 33 | jobs { 34 | regex("${view}-.*") 35 | } 36 | columns { 37 | status() 38 | weather() 39 | name() 40 | lastSuccess() 41 | lastFailure() 42 | lastDuration() 43 | buildButton() 44 | } 45 | } 46 | } 47 | true 48 | false 49 | IGNORE 50 | IGNORE 51 | JENKINS_ROOT 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/scriptApproval.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | abdfde33c4c00efcfe433ae20aa8c7db6a0d1d9d 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 32 | groovy 33 | 34 | 35 | 36 | 37 | 38 | field org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder$BadgeManager build 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/scriptApproval.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | abdfde33c4c00efcfe433ae20aa8c7db6a0d1d9d 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 32 | groovy 33 | 34 | 35 | 36 | 37 | 38 | field org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder$BadgeManager build 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /jenkins-demo2/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.580.1 5 | 2 6 | NORMAL 7 | true 8 | 9 | 10 | false 11 | 12 | ${ITEM_ROOTDIR}/workspace 13 | ${ITEM_ROOTDIR}/builds 14 | 15 | 16 | 17 | 18 | 19 | 5 20 | 0 21 | 22 | 23 | 24 | All 25 | false 26 | false 27 | 28 | 29 | 30 | All 31 | 0 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 2 43 | 44 | 45 | DOCKER_HOST 46 | unix:///docker.sock 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /jenkins-global-post-script/README.md: -------------------------------------------------------------------------------- 1 | # docker-jenkins # 2 | 3 | This is the demo on how to use [Global post script jenkins plugin](https://wiki.jenkins-ci.org/display/JENKINS/Global+Post+Script+Plugin) 4 | 5 | docker run -it -p 8080:8080 larrycai/jenkins-global-post-script 6 | 7 | Login as guest/guest and build the `demo` job, then claim it with reason "my fault" 8 | 9 | Then try to see whether we can get the failure reason in groovy. 10 | 11 | Now it works from 1.0.12 version. 12 | 13 | # Code # 14 | 15 | Below is the script `claim.groovy` under `$JENKINS_HOME/global-post-script`, you can post it below to http://localhost:8080/script to run it. 16 | 17 | import jenkins.* 18 | import jenkins.model.* 19 | import hudson.* 20 | import hudson.model.* 21 | 22 | job = hudson.model.Hudson.instance.getItem("demo") 23 | build = job.getLastBuild() 24 | println build 25 | 26 | def data = [:] 27 | def env = build.getEnvironment() 28 | 29 | data["jobTimestamp"] = build.getTimeInMillis() 30 | 31 | data["result"] = build.getResult().toString() 32 | data["number"] = build.getNumber() 33 | data["jobName"] = env['JOB_NAME'] 34 | data["builtOn"] = env['NODE_NAME'] 35 | data["url"] = build.getAbsoluteUrl() 36 | 37 | //Convert duration from milisec to minutes 38 | data["duration"] = build.getDuration() 39 | 40 | // get test result for Junit/TestNG 41 | def testResultAction = build.getTestResultAction() 42 | if (testResultAction != null) { 43 | data["totalCount"] = testResultAction.getTotalCount() 44 | data["failCount"] = testResultAction.getFailCount() 45 | data["skipCount"] = testResultAction.getSkipCount() 46 | } else { 47 | println "INFO: No junit/testng test result" 48 | } 49 | 50 | println "INFO: here comes the data" 51 | println data 52 | 53 | def action = build.getAction(hudson.plugins.claim.ClaimBuildAction.class) 54 | println action.getReason() 55 | 56 | 57 | # Development # 58 | 59 | If you want to develop or test the global post script, better to share inside 60 | 61 | $ cd JENKINS_HOME/global-post-script 62 | $ docker run -it -v $PWD:/opt/jenkins/data/global-post-script -p 8000:8080 larrycai/jenkins-global-post-script 63 | 64 | -------------------------------------------------------------------------------- /jenkins-jobdsl/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Larry Cai 4 | 5 | RUN apt-get update && apt-get install -qqy curl openjdk-7-jdk groovy && rm -rf /var/lib/apt/lists/* 6 | 7 | ENV JENKINS_HOME /opt/jenkins/data 8 | ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org 9 | 10 | # install jenkins.war and plugins 11 | 12 | RUN mkdir -p $JENKINS_HOME/plugins 13 | 14 | RUN curl -o /opt/jenkins/jenkins.war -L $JENKINS_MIRROR/war-stable/latest/jenkins.war 15 | 16 | ENV REFRESHED_AT 2015-06-26 17 | 18 | # git environment 19 | RUN for plugin in git scm-api git-client credentials credentials-binding workflow-step-api plain-credentials;\ 20 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 21 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 22 | 23 | RUN for plugin in job-dsl config-file-provider groovy-postbuild groovy junit testng-plugin claim;\ 24 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 25 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 26 | 27 | # more needed plugin 28 | RUN for plugin in token-macro jquery parameterized-trigger postbuild-task description-setter \ 29 | throttle-concurrents ws-cleanup gerrit-trigger testng-plugin envinject cobertura \ 30 | build-flow-plugin buildgraph-view nested-view global-post-script \ 31 | ansicolor build-timeout timestamper artifactory;\ 32 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 33 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 34 | 35 | # more needed plugin 36 | RUN for plugin in progress-bar-column-plugin mock-slave durable-task labeled-test-groups-publisher \ 37 | locks-and-latches build-user-vars-plugin multiple-scms built-on-column \ 38 | config-file-provider junit email-ext sonar;\ 39 | do curl -f -o $JENKINS_HOME/plugins/${plugin}.hpi \ 40 | -L $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done 41 | 42 | # the credentials needs to be later version to satisfied with other plugins 43 | RUN touch $JENKINS_HOME/plugins/credentials.jpi.pinned 44 | 45 | ADD JENKINS_HOME $JENKINS_HOME 46 | 47 | RUN chmod +x $JENKINS_HOME/start.sh 48 | 49 | # start script 50 | 51 | ADD . /app 52 | 53 | EXPOSE 8080 54 | 55 | CMD [ "/opt/jenkins/data/start.sh" ] -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/1/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 3 11 | 12 | 13 | true 14 | guest 15 | guest 16 | 2015-05-21 04:14:53.518 UTC 17 | false 18 | 19 | HW 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 2 39 | 1432181674912 40 | 1432181674913 41 | FAILURE 42 | 27 43 | US-ASCII 44 | false 45 | 46 | /opt/jenkins/data/jobs/smx-demo2/workspace 47 | 1.613 48 | 49 | 50 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/2/log: -------------------------------------------------------------------------------- 1 | Started by user ha:AAAAlx+LCAAAAAAAAP9b85aBtbiIQTGjNKU4P08vOT+vOD8nVc83PyU1x6OyILUoJzMv2y+/JJUBAhiZGBgqihhk0NSjKDWzXb3RdlLBUSYGJk8GtpzUvPSSDB8G5tKinBIGIZ+sxLJE/ZzEvHT94JKizLx0a6BxUmjGOUNodHsLgAzWEgZu/dLi1CL99NLU4hIAzDYlCcAAAAA=guest 2 | Building in workspace /opt/jenkins/data/jobs/smx-demo2/workspace 3 | ha:AAAAzh+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADHqihjMSHY62CaoUQxCQKOKGPiyEssS9XIS89L1XIG6kCULShj4nUI9fVyCQ1wD4oNDHINCAOnBY9I1AQAA[workspace] $ /bin/bash /tmp/hudson4514298473664880594.sh 4 | Hello 5 | this is demo test case failure, which can't be detected automatically 6 | it will be claimed when manuall check 7 | ha:AAAAzB+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADHqihjMSHY62CaoUQxCQKOKGPiyEssS9XIS89L1XIG6kCULShh4nUI9fVyCQ1wD4l39XACR4nNzMwEAAA==Build step 'Execute shell' marked build as failure 8 | ha:AAAAzx+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY6ooYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oY+J1CPX1cgkNcA+KDQxyDQgA7O+VtNQEAAA==ha:AAAAzR+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY6ooYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oYeJ1CPX1cgkNcA+Jd/VwApPJzWzMBAAA=ha:AAAAzx+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY64oYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oY+J1CPX1cgkNcA+KDQxyDQgB1bWcHNQEAAA==ha:AAAAzR+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY64oYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oYeJ1CPX1cgkNcA+Jd/VwAiACj9TMBAAA=[BFA] Scanning build for known causes... 9 | [BFA] No failure causes found 10 | [BFA] Done. 0s 11 | Finished: FAILURE 12 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/1/log: -------------------------------------------------------------------------------- 1 | Started by user ha:AAAAlh+LCAAAAAAAAP9b85aBtbiIQTGjNKU4P08vOT+vOD8nVc83PyU1x6OyILUoJzMv2y+/JJUBAhiZGBgqihhk0NSjKDWzXb3RdlLBUSYGJk8GtpzUvPSSDB8G5tKinBIGIZ+sxLJE/ZzEvHT94JKizLx0a6BxUmjGOUNodHsLgAzOEgYu/dLi1CL9vNKcHACFIKlWvwAAAA==anonymous 2 | Building in workspace /opt/jenkins/data/jobs/smx-demo2/workspace 3 | ha:AAAAzh+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADHqihjMSHY62CaoUQxCQKOKGPiyEssS9XIS89L1XIG6kCULShj4nUI9fVyCQ1wD4oNDHINCAOnBY9I1AQAA[workspace] $ /bin/bash /tmp/hudson3028387546731241737.sh 4 | Hello 5 | this is demo test case failure, which can't be detected automatically 6 | it will be claimed when manuall check 7 | ha:AAAAzB+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADHqihjMSHY62CaoUQxCQKOKGPiyEssS9XIS89L1XIG6kCULShh4nUI9fVyCQ1wD4l39XACR4nNzMwEAAA==Build step 'Execute shell' marked build as failure 8 | ha:AAAAzx+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY6ooYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oY+J1CPX1cgkNcA+KDQxyDQgA7O+VtNQEAAA==ha:AAAAzR+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY6ooYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oYeJ1CPX1cgkNcA+Jd/VwApPJzWzMBAAA=ha:AAAAzx+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY64oYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oY+J1CPX1cgkNcA+KDQxyDQgB1bWcHNQEAAA==ha:AAAAzR+LCAAAAAAAAP9b85aBtbiIwTC/KF0vKzUvOzOvODlTryCnNB3I0svJzEvNK81NSi0q1gsuSS1wzs8rzs9J9csvSU3yPjtb7UjzASYGJk8G9uT80ryS1CIfBhagCSklDBY+QAP14QbqQw3URzJQH81AFW+gTuuKIgapjNKU4vw8vWSInB6SGgYIYGRiYKgoADKY64oYzEh2OtgmqFEMQkCjihj4shLLEvVyEvPS9VyBupAlC0oYeJ1CPX1cgkNcA+Jd/VwAiACj9TMBAAA=[BFA] Scanning build for known causes... 9 | [BFA] No failure causes found 10 | [BFA] Done. 0s 11 | Finished: FAILURE 12 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/jobs/Sample/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 2 7 | 30 8 | -1 9 | -1 10 | 11 | false 12 | 13 | 14 | 2 15 | 16 | 17 | https://github.com/larrycai/docker-images.git 18 | 19 | 20 | 21 | 22 | */master 23 | 24 | 25 | false 26 | 27 | 28 | 29 | true 30 | false 31 | false 32 | false 33 | 34 | 35 | H/15 * * * * 36 | false 37 | 38 | 39 | false 40 | 41 | 42 | echo "build success" >> status.txt 43 | 44 | 45 | 46 | 47 | status.txt 48 | false 49 | false 50 | false 51 | true 52 | 53 | 54 | 55 | 56 | false 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/builds/2/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | guest 8 | 9 | 10 | 11 | 12 | 3 13 | 14 | 15 | true 16 | guest 17 | guest 18 | 2015-05-21 04:15:11.784 UTC 19 | false 20 | 21 | CODE 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 3 41 | 1432181698761 42 | 1432181698768 43 | FAILURE 44 | 46 45 | US-ASCII 46 | false 47 | 48 | /opt/jenkins/data/jobs/smx-demo2/workspace 49 | 1.613 50 | 51 | 52 | -------------------------------------------------------------------------------- /jenkins-jobdsl/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0 5 | 2 6 | NORMAL 7 | true 8 | 9 | hudson.model.Hudson.Administer:anonymous 10 | hudson.model.Hudson.Administer:guest 11 | 12 | 13 | false 14 | false 15 | 16 | false 17 | 18 | ${ITEM_ROOTDIR}/workspace 19 | ${ITEM_ROOTDIR}/builds 20 | 21 | false 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 29 | 30 | 31 | All 32 | false 33 | false 34 | 35 | 36 | 37 | 38 | CodingWithMe 39 | false 40 | false 41 | 42 | 43 | 44 | HelloWorld 45 | Sample 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | Hello.* 58 | false 59 | 60 | 61 | 62 | All 63 | 0 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /jenkins-demo3/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /opt/jenkins/data 5 | 181338112 6 | true 7 | hudson.node_monitors.DiskSpaceMonitor 8 | 9 | 10 | 1.580.1 11 | 2 12 | NORMAL 13 | true 14 | 15 | 16 | false 17 | 18 | ${ITEM_ROOTDIR}/workspace 19 | ${ITEM_ROOTDIR}/builds 20 | 21 | 22 | 23 | 24 | 25 | 26 | ubuntu-slave 27 | 28 | /home/jenkins 29 | 1 30 | NORMAL 31 | 32 | 33 | 172.17.42.1 34 | 2222 35 | 93941e05-25d2-4110-aa56-a6931b5a0d6a 36 | 0 37 | 0 38 | 39 | 40 | 41 | anonymous 42 | 43 | 44 | 5 45 | 0 46 | 47 | 48 | 49 | All 50 | false 51 | false 52 | 53 | 54 | 55 | All 56 | 0 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 2 68 | 69 | 70 | DOCKER_HOST 71 | unix:///docker.sock 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /jenkins-compose/JENKINS_HOME/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /opt/jenkins/data 5 | 181338112 6 | true 7 | hudson.node_monitors.DiskSpaceMonitor 8 | 9 | 10 | 1.580.1 11 | 2 12 | NORMAL 13 | true 14 | 15 | 16 | false 17 | 18 | ${ITEM_ROOTDIR}/workspace 19 | ${ITEM_ROOTDIR}/builds 20 | 21 | 22 | 23 | 24 | 25 | 26 | ubuntu-slave 27 | 28 | /home/jenkins 29 | 1 30 | NORMAL 31 | 32 | 33 | 172.17.0.1 34 | 2222 35 | 93941e05-25d2-4110-aa56-a6931b5a0d6a 36 | 0 37 | 0 38 | 39 | 40 | 41 | anonymous 42 | 43 | 44 | 5 45 | 0 46 | 47 | 48 | 49 | All 50 | false 51 | false 52 | 53 | 54 | 55 | All 56 | 0 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 2 68 | 69 | 70 | DOCKER_HOST 71 | unix:///docker.sock 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /jenkins-compose/JENKINS_HOME/credentials.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | GLOBAL 11 | 75fa3329-fcec-4709-a90d-60e91caa6921 12 | 13 | root 14 | Z/2CJYM3r8yd9xeMKdWK1Q== 15 | 16 | -----BEGIN RSA PRIVATE KEY----- 17 | MIIEogIBAAKCAQEAxLIJCftCIoQcw8j26U6pY6H7am1mH2/2ynWQ/6zTrz3u0Cy7 18 | fsLXb6UPdm6uelfqS9pc75FaEnl4RtjzzAsBTmyI50YIKsCrS0HQ9zut/eKwDagL 19 | Pt5/uvC860ltpKpVu6UU8C6ZIvf0KA+FrT4fHIuhP+nrEOoxAtnCbFYjhF555YcK 20 | bwgzO0rnoukwPoKBenV5tNPPdoWR1ChOrZVD5lpFnrn+AL1HvHi1by9KAw1QfMMD 21 | SIdLz09N4kVQhIgluEEqZ+EIu6zWvlyq+t8IyqzN5Rbaqg7BOAHmm0jFRzZHRE5f 22 | kj8LmEMIrjwLR/Ad0vEpG4mIuDstkeyra7H7jQIBIwKCAQEAhuB7OgtgjLJc3gYl 23 | p0vh3etqkh8hdKSL+IshmWCRJ7Vwjr+Wgs6/nQN4UTXz/B8HD3EpyNiyytbzY8f3 24 | odupH9VlMN+Qklg68ca7LTA8y1mdSzFmzAZI9Tdc+RxocOnUY2nieM9+82gyZJzt 25 | 8yNIiJpCr3vUY17ChZyik25EPYFn2JTydXmOzxxfUe6ot9F77qX+5j3poWbI5NzU 26 | xcSyYn/yZD2WIZn6C3SAwEVRR/Qxbu4CLjjsIi0Aecv8qW8aYQG5wnpiawYkc4oe 27 | ufad+CnsaRSs+3V3FmZJXIpOCjDAJ8FcP9/LOqgARet3zUHc41nEt5f9W5Ba9Tui 28 | LxFTawKBgQD0jCozsk4XGeJDGk2lydN8Cef5DVLJBrpq5ovR1dXCE3SNOKzEfpxC 29 | AagC2XKsAIEqvJS3X5kKhCW+sDfSnM5vr1jPYga8I1h9TqwQ0/5wHZcS7LwEz+DE 30 | E+OEIQm6+SnbhQaFMiLsxAK+gmlJ7kmql5ldNktkeM1IyUsW1VjfWwKBgQDN6C5K 31 | fBOBM19EMR9/E0gwtIYXl7wRub/sn9pxN1X9reshk94T5nXOahwhfVeHeZ1dqRMz 32 | ZYXo7qfugG6tcKJaO3CBdOfSZutkRzHYAljyTdiXicdZliKveMk3ffVYfy/+L/iJ 33 | LaBryWCfGzCyo6Zmb8o3rtXSxJC1eFVIEbUtNwKBgHbHvLoGJe32oRlHSkk2JOR5 34 | 1xKRcVpTuaGjLfg0qadoiRFkq6/luZxnNFknyfvFuxTB/xc9D9HoahrKnsViGyBN 35 | 2q3fJ9e5ZX6xLwDb/z3FOsAMldZzmQ7H1Ohn0YaziVv+yKcYWhs6oj9GqCs5OblC 36 | Uc4wUIFB/U89Mxm4FTlJAoGATHrPXX6K5tiRGVQTA1BOA3ZAbym64gMqB26S9toJ 37 | /yNXVZ1SfGuK16PBTkR/mLgkgd+2rLCuFLBqQqS7ZP3zKNQ/uw4qODTbFp4Z0+Od 38 | YVAdP5mTL+dOtjQtewLmGY5Tp44pHQJRhx7pX6sDdY09zkbHc8SYkB0fzl/lKWWp 39 | sbUCgYEAoNj+JpIOe4MPE8yaoFo0Cm/mHScIa5WhGyeIBPnKtAjnsqHYUudNSP/y 40 | boiATvOmBVDjjMmr/C3P0bye9n2okNHvv2bUW86D1SaoyWRgoFELHSaONAJNKdf/ 41 | SRJFcRmwa+tg+MrRX+ZQtSNvHSp1JBhM+FZMh70eQ8RPxOw4o8E= 42 | -----END RSA PRIVATE KEY----- 43 | 44 | 45 | 46 | GLOBAL 47 | 93941e05-25d2-4110-aa56-a6931b5a0d6a 48 | jenkins slave - jenkins 49 | jenkins 50 | Z/2CJYM3r8yd9xeMKdWK1Q== 51 | 52 | -----BEGIN RSA PRIVATE KEY----- 53 | MIIEogIBAAKCAQEAxLIJCftCIoQcw8j26U6pY6H7am1mH2/2ynWQ/6zTrz3u0Cy7 54 | fsLXb6UPdm6uelfqS9pc75FaEnl4RtjzzAsBTmyI50YIKsCrS0HQ9zut/eKwDagL 55 | Pt5/uvC860ltpKpVu6UU8C6ZIvf0KA+FrT4fHIuhP+nrEOoxAtnCbFYjhF555YcK 56 | bwgzO0rnoukwPoKBenV5tNPPdoWR1ChOrZVD5lpFnrn+AL1HvHi1by9KAw1QfMMD 57 | SIdLz09N4kVQhIgluEEqZ+EIu6zWvlyq+t8IyqzN5Rbaqg7BOAHmm0jFRzZHRE5f 58 | kj8LmEMIrjwLR/Ad0vEpG4mIuDstkeyra7H7jQIBIwKCAQEAhuB7OgtgjLJc3gYl 59 | p0vh3etqkh8hdKSL+IshmWCRJ7Vwjr+Wgs6/nQN4UTXz/B8HD3EpyNiyytbzY8f3 60 | odupH9VlMN+Qklg68ca7LTA8y1mdSzFmzAZI9Tdc+RxocOnUY2nieM9+82gyZJzt 61 | 8yNIiJpCr3vUY17ChZyik25EPYFn2JTydXmOzxxfUe6ot9F77qX+5j3poWbI5NzU 62 | xcSyYn/yZD2WIZn6C3SAwEVRR/Qxbu4CLjjsIi0Aecv8qW8aYQG5wnpiawYkc4oe 63 | ufad+CnsaRSs+3V3FmZJXIpOCjDAJ8FcP9/LOqgARet3zUHc41nEt5f9W5Ba9Tui 64 | LxFTawKBgQD0jCozsk4XGeJDGk2lydN8Cef5DVLJBrpq5ovR1dXCE3SNOKzEfpxC 65 | AagC2XKsAIEqvJS3X5kKhCW+sDfSnM5vr1jPYga8I1h9TqwQ0/5wHZcS7LwEz+DE 66 | E+OEIQm6+SnbhQaFMiLsxAK+gmlJ7kmql5ldNktkeM1IyUsW1VjfWwKBgQDN6C5K 67 | fBOBM19EMR9/E0gwtIYXl7wRub/sn9pxN1X9reshk94T5nXOahwhfVeHeZ1dqRMz 68 | ZYXo7qfugG6tcKJaO3CBdOfSZutkRzHYAljyTdiXicdZliKveMk3ffVYfy/+L/iJ 69 | LaBryWCfGzCyo6Zmb8o3rtXSxJC1eFVIEbUtNwKBgHbHvLoGJe32oRlHSkk2JOR5 70 | 1xKRcVpTuaGjLfg0qadoiRFkq6/luZxnNFknyfvFuxTB/xc9D9HoahrKnsViGyBN 71 | 2q3fJ9e5ZX6xLwDb/z3FOsAMldZzmQ7H1Ohn0YaziVv+yKcYWhs6oj9GqCs5OblC 72 | Uc4wUIFB/U89Mxm4FTlJAoGATHrPXX6K5tiRGVQTA1BOA3ZAbym64gMqB26S9toJ 73 | /yNXVZ1SfGuK16PBTkR/mLgkgd+2rLCuFLBqQqS7ZP3zKNQ/uw4qODTbFp4Z0+Od 74 | YVAdP5mTL+dOtjQtewLmGY5Tp44pHQJRhx7pX6sDdY09zkbHc8SYkB0fzl/lKWWp 75 | sbUCgYEAoNj+JpIOe4MPE8yaoFo0Cm/mHScIa5WhGyeIBPnKtAjnsqHYUudNSP/y 76 | boiATvOmBVDjjMmr/C3P0bye9n2okNHvv2bUW86D1SaoyWRgoFELHSaONAJNKdf/ 77 | SRJFcRmwa+tg+MrRX+ZQtSNvHSp1JBhM+FZMh70eQ8RPxOw4o8E= 78 | -----END RSA PRIVATE KEY----- 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /jenkins-demo3/JENKINS_HOME/credentials.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | GLOBAL 11 | 75fa3329-fcec-4709-a90d-60e91caa6921 12 | 13 | root 14 | Z/2CJYM3r8yd9xeMKdWK1Q== 15 | 16 | -----BEGIN RSA PRIVATE KEY----- 17 | MIIEogIBAAKCAQEAxLIJCftCIoQcw8j26U6pY6H7am1mH2/2ynWQ/6zTrz3u0Cy7 18 | fsLXb6UPdm6uelfqS9pc75FaEnl4RtjzzAsBTmyI50YIKsCrS0HQ9zut/eKwDagL 19 | Pt5/uvC860ltpKpVu6UU8C6ZIvf0KA+FrT4fHIuhP+nrEOoxAtnCbFYjhF555YcK 20 | bwgzO0rnoukwPoKBenV5tNPPdoWR1ChOrZVD5lpFnrn+AL1HvHi1by9KAw1QfMMD 21 | SIdLz09N4kVQhIgluEEqZ+EIu6zWvlyq+t8IyqzN5Rbaqg7BOAHmm0jFRzZHRE5f 22 | kj8LmEMIrjwLR/Ad0vEpG4mIuDstkeyra7H7jQIBIwKCAQEAhuB7OgtgjLJc3gYl 23 | p0vh3etqkh8hdKSL+IshmWCRJ7Vwjr+Wgs6/nQN4UTXz/B8HD3EpyNiyytbzY8f3 24 | odupH9VlMN+Qklg68ca7LTA8y1mdSzFmzAZI9Tdc+RxocOnUY2nieM9+82gyZJzt 25 | 8yNIiJpCr3vUY17ChZyik25EPYFn2JTydXmOzxxfUe6ot9F77qX+5j3poWbI5NzU 26 | xcSyYn/yZD2WIZn6C3SAwEVRR/Qxbu4CLjjsIi0Aecv8qW8aYQG5wnpiawYkc4oe 27 | ufad+CnsaRSs+3V3FmZJXIpOCjDAJ8FcP9/LOqgARet3zUHc41nEt5f9W5Ba9Tui 28 | LxFTawKBgQD0jCozsk4XGeJDGk2lydN8Cef5DVLJBrpq5ovR1dXCE3SNOKzEfpxC 29 | AagC2XKsAIEqvJS3X5kKhCW+sDfSnM5vr1jPYga8I1h9TqwQ0/5wHZcS7LwEz+DE 30 | E+OEIQm6+SnbhQaFMiLsxAK+gmlJ7kmql5ldNktkeM1IyUsW1VjfWwKBgQDN6C5K 31 | fBOBM19EMR9/E0gwtIYXl7wRub/sn9pxN1X9reshk94T5nXOahwhfVeHeZ1dqRMz 32 | ZYXo7qfugG6tcKJaO3CBdOfSZutkRzHYAljyTdiXicdZliKveMk3ffVYfy/+L/iJ 33 | LaBryWCfGzCyo6Zmb8o3rtXSxJC1eFVIEbUtNwKBgHbHvLoGJe32oRlHSkk2JOR5 34 | 1xKRcVpTuaGjLfg0qadoiRFkq6/luZxnNFknyfvFuxTB/xc9D9HoahrKnsViGyBN 35 | 2q3fJ9e5ZX6xLwDb/z3FOsAMldZzmQ7H1Ohn0YaziVv+yKcYWhs6oj9GqCs5OblC 36 | Uc4wUIFB/U89Mxm4FTlJAoGATHrPXX6K5tiRGVQTA1BOA3ZAbym64gMqB26S9toJ 37 | /yNXVZ1SfGuK16PBTkR/mLgkgd+2rLCuFLBqQqS7ZP3zKNQ/uw4qODTbFp4Z0+Od 38 | YVAdP5mTL+dOtjQtewLmGY5Tp44pHQJRhx7pX6sDdY09zkbHc8SYkB0fzl/lKWWp 39 | sbUCgYEAoNj+JpIOe4MPE8yaoFo0Cm/mHScIa5WhGyeIBPnKtAjnsqHYUudNSP/y 40 | boiATvOmBVDjjMmr/C3P0bye9n2okNHvv2bUW86D1SaoyWRgoFELHSaONAJNKdf/ 41 | SRJFcRmwa+tg+MrRX+ZQtSNvHSp1JBhM+FZMh70eQ8RPxOw4o8E= 42 | -----END RSA PRIVATE KEY----- 43 | 44 | 45 | 46 | GLOBAL 47 | 93941e05-25d2-4110-aa56-a6931b5a0d6a 48 | jenkins slave - jenkins 49 | jenkins 50 | Z/2CJYM3r8yd9xeMKdWK1Q== 51 | 52 | -----BEGIN RSA PRIVATE KEY----- 53 | MIIEogIBAAKCAQEAxLIJCftCIoQcw8j26U6pY6H7am1mH2/2ynWQ/6zTrz3u0Cy7 54 | fsLXb6UPdm6uelfqS9pc75FaEnl4RtjzzAsBTmyI50YIKsCrS0HQ9zut/eKwDagL 55 | Pt5/uvC860ltpKpVu6UU8C6ZIvf0KA+FrT4fHIuhP+nrEOoxAtnCbFYjhF555YcK 56 | bwgzO0rnoukwPoKBenV5tNPPdoWR1ChOrZVD5lpFnrn+AL1HvHi1by9KAw1QfMMD 57 | SIdLz09N4kVQhIgluEEqZ+EIu6zWvlyq+t8IyqzN5Rbaqg7BOAHmm0jFRzZHRE5f 58 | kj8LmEMIrjwLR/Ad0vEpG4mIuDstkeyra7H7jQIBIwKCAQEAhuB7OgtgjLJc3gYl 59 | p0vh3etqkh8hdKSL+IshmWCRJ7Vwjr+Wgs6/nQN4UTXz/B8HD3EpyNiyytbzY8f3 60 | odupH9VlMN+Qklg68ca7LTA8y1mdSzFmzAZI9Tdc+RxocOnUY2nieM9+82gyZJzt 61 | 8yNIiJpCr3vUY17ChZyik25EPYFn2JTydXmOzxxfUe6ot9F77qX+5j3poWbI5NzU 62 | xcSyYn/yZD2WIZn6C3SAwEVRR/Qxbu4CLjjsIi0Aecv8qW8aYQG5wnpiawYkc4oe 63 | ufad+CnsaRSs+3V3FmZJXIpOCjDAJ8FcP9/LOqgARet3zUHc41nEt5f9W5Ba9Tui 64 | LxFTawKBgQD0jCozsk4XGeJDGk2lydN8Cef5DVLJBrpq5ovR1dXCE3SNOKzEfpxC 65 | AagC2XKsAIEqvJS3X5kKhCW+sDfSnM5vr1jPYga8I1h9TqwQ0/5wHZcS7LwEz+DE 66 | E+OEIQm6+SnbhQaFMiLsxAK+gmlJ7kmql5ldNktkeM1IyUsW1VjfWwKBgQDN6C5K 67 | fBOBM19EMR9/E0gwtIYXl7wRub/sn9pxN1X9reshk94T5nXOahwhfVeHeZ1dqRMz 68 | ZYXo7qfugG6tcKJaO3CBdOfSZutkRzHYAljyTdiXicdZliKveMk3ffVYfy/+L/iJ 69 | LaBryWCfGzCyo6Zmb8o3rtXSxJC1eFVIEbUtNwKBgHbHvLoGJe32oRlHSkk2JOR5 70 | 1xKRcVpTuaGjLfg0qadoiRFkq6/luZxnNFknyfvFuxTB/xc9D9HoahrKnsViGyBN 71 | 2q3fJ9e5ZX6xLwDb/z3FOsAMldZzmQ7H1Ohn0YaziVv+yKcYWhs6oj9GqCs5OblC 72 | Uc4wUIFB/U89Mxm4FTlJAoGATHrPXX6K5tiRGVQTA1BOA3ZAbym64gMqB26S9toJ 73 | /yNXVZ1SfGuK16PBTkR/mLgkgd+2rLCuFLBqQqS7ZP3zKNQ/uw4qODTbFp4Z0+Od 74 | YVAdP5mTL+dOtjQtewLmGY5Tp44pHQJRhx7pX6sDdY09zkbHc8SYkB0fzl/lKWWp 75 | sbUCgYEAoNj+JpIOe4MPE8yaoFo0Cm/mHScIa5WhGyeIBPnKtAjnsqHYUudNSP/y 76 | boiATvOmBVDjjMmr/C3P0bye9n2okNHvv2bUW86D1SaoyWRgoFELHSaONAJNKdf/ 77 | SRJFcRmwa+tg+MrRX+ZQtSNvHSp1JBhM+FZMh70eQ8RPxOw4o8E= 78 | -----END RSA PRIVATE KEY----- 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /jenkins-global-post-script/JENKINS_HOME/jobs/demo/workspace/sample-junit.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | java.lang.RuntimeException 103 | at tests.ATest.error(ATest.java:11) 104 | 105 | 106 | 107 | junit.framework.AssertionFailedError: 108 | at tests.ATest.fail(ATest.java:9) 109 | 110 | 111 | 112 | 114 | 115 | 116 | --------------------------------------------------------------------------------