diff --git a/.gitignore b/.gitignore index d77864a..99be383 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.zip +id_rsa* diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..6f3f79f --- /dev/null +++ b/README.adoc @@ -0,0 +1,414 @@ += *Continuous Delivery with Docker Containers & Java EE* + +:data-uri: +:toc: manual +:toc-placement: preamble +:numbered: +:webinar: link:http://blog.eisele.net/2015/04/continuous-delivery-with-docker.html[Continuous Delivery with Docker Containers & Java EE webinar] +:dcompose: link:https://docs.docker.com/compose/[Docker Compose] +:ticketmonster: link:http://www.jboss.org/ticket-monster/[Ticket Monster] +:supportportal: link:https://access.redhat.com/support[Red Hat Support Portal] +:jbossdemocentral: link:https://www.gitub.com/jbossdemocentral/continuos-delivery-demo-app[jbossdemocentral] +:markusblog: link:http://blog.eisele.net/2015/04/continuous-delivery-with-docker.html[Markus' Blog] +:paas: link:https://www.openshift.com[paas] +:mvnreleaseplugin: link:http://maven.apache.org/maven-release/maven-release-plugin/[Maven Release Plugin] + +This repository contains the source code and step-by-step instructions needed to reproduce the {webinar}. + +== Overview + +=== *Goals* +This demo sets up a complete Continuous Delivery environment using Docker containers. + +image::images/cd-openshift.png[] + +This demo uses {dcompose} as a simple orchestration tool. +Docker is used for simplicity in this demo and is not essential to the delivery pipeline. + +More details discused in {markusblog}. + +=== Infrastructure +This demo uses various components to create a delivery pipeline. +Jenkins, Nexus and Sonar run in their own Docker containers while GitHub is used as an external Git-based source repository. + +. *Jenkins* ++ +Description: continuous delivery orchestration engine ++ +Address: http://DOCKER_HOST:8080/jenkins + +. *Sonatype Nexus* ++ +Description: artifact repository for archiving release binaries ++ +Address: http://DOCKER_HOST:8081/nexus + +. *SonarQube* ++ +Description: static code analysis engine extracting various quality metrics from the code ++ +Address: http://DOCKER_HOST:9000 + +. *GitHub* ++ +Description: source repository hosting the ticket-monster Java application ++ +Address: https://github.com/jbossdemocentral/continuous-delivery-demo-app.git + +[NOTE] + +If running boot2docker on Mac OSX, DOCKER_HOST is the ip of boot2docker virtual machine + +=== Delivery Pipeline +The delivery pipeline in this demo is divided into five phases each containing a number of activities (jobs) that need to succeed in order to promote the artifact to the next phase. +Each change in the application is a potential production release according to Continuous Delivery principles and can go in production if it successfully passes through all the phases in the pipeline. + + +. Build: compilation and unit test, integration tests and static code analysis +. Dev: release to Nexus, create release tag in Git, deploy to DEV server and run functional tests +. System Test: deploy to System Test server and run system tests +. Perf Test: deploy to Performance Test server and run performance tests +. Pre Production (Stage): deploy to Pre-Production server + +image::images/delivery-pipeline.png[] + + +=== *Ticket Monster* JEE project +Continuous Delivery from dev -> prod in a Docker environment will be demonstrated in this exercise using the {ticketmonster} JEE application. + +The {ticketmonster} JEE project is a moderately complex application that demonstrates how to build modern applications using JBoss web technologies. + +[[prereqs]] +== Pre-requisites + +. *Network Bandwidth* ++ +During this lab exercise, Docker images will be pulled from the internet. +You'll want a high-speed broadband connection and open access to the internet. +. *Hardware* ++ +To execute this lab exercise, three machines will be needed. +Each machine should consist of a minimum of 2 cores and 4G RAM. +The machines can run locally or as VMs in a cloud environment. +. *Red Hat Network Subscription* ++ +You must have a valid _Red Hat Network (RHN) subscription with entitlements that allow for: + +.. management of _rhel-server-7_ operating systems. +.. download of supported Red Hat JBoss middleware software. +. *Operating System* ++ +Currently, the host operating system required to build the docker images provided in this project needs to be Red Hat Enterprise Linux (RHEL) 7. +The RHEL7 hosts should be registered with the Red Hat Network (RHN) via _subscription-manager_. ++ +In the near future, Red Hat will be providing a _RHEL CDK_ (Container Development Kit). +The RHEL CDK will allow for building of images in this project on host operating systems such as Fedora, OSX and Windows. +. *github account* ++ +A `github` account will be needed to fork the original `ticket-monster` source code +. *git* ++ +Ensure that `git` is installed on the operating system of all machines. +. *Docker* ++ +Ensure that `docker` is installed and running on the operating system of all machines +. *{dcompose}* ++ +`docker-compose` is a handy utility for defining and running complex applications with Docker. +It is not a feature complete {paas}. +However, it does a nice job of facilitating the use of multiple Docker containers in this `Continuous Delivery` exercise. + +== Instructions + +=== Start 3 host environments +This lab requires the following 3 machines as per the specifications listed in the <> section: + +. `dev` +. `systest` +. `prod` + +These hosts may be either virtual machines or bare-metal. +They should be on a network that allows TCP assessibility between them. + +=== Clone this project +This project needs to be cloned on all machines (`dev`, `systest` and `prod`) used in this project. + +---- +git clone https://github.com/jbossdemocentral/continuous-delivery-javaee-container-src.git +---- + +Doing so creates a directory on your local workstation called: _continuous-delivery-javaee-container-src_. + +[NOTE] +For the remainder of these instructions, the directory created from having cloned this project will be referred to as: *$PROJECT_HOME*. + +=== ssh key pair + +==== Overview +In this demo, SSH keys are used for the following purposes: + +. *Authentication to Github* ++ +This lab makes use of the {mvnreleaseplugin}. +One of the operations attempted by the Maven Release Plugin will be to push changes to your project repository in Github. +SSH kays will be shared between the Maven Release Plugin and your Github account to allow maven to push these commits. + +. *ssh connections to `systest` and `prod` hosts* ++ +This lab makes use of Jenkins jobs that push releases from your Jenkins container to your `systest` and `prod` host machines. +SSH key pair authentication is used to allow for creation of `ssh / scp` connections between lab environments. + +==== ssh key pair creation +In this step, an ssh key pair will be created in your `dev` machine. + +.. cd $PROJECT_HOME/demo +.. execute: `ssh-keygen -q -f images/jenkins-ci/config/.ssh/id_rsa -t rsa -N ''` ++ +The key pair will be created (with no passphrase) in the directory: `$PROJECT_HOME/demo/images/jenkins-ci/config/.ssh` + +==== ssh key pair distribution + +===== Add public key to Github +To allow for authentication between the `Maven Release Plugin` and Github, execute the following: + +. Authenticate into Github +. Navigate to Github account settings +. Click `SSH Keys -> Add SSH Key` ++ +image::images/githubssh.png[width="70%"] ++ +. Copy and paste the contents of your previously created public key to the `key` text-box in Github. ++ +Your public key should be located at: `PROJECT_HOME/demo/images/jenkins-ci/config/.ssh/id_rsa.pub`. +. Click the `AddKey` button + +===== Add public key to `systest` and `prod` hosts + +Add the previously created public key to the following file of the `root` operating system user of both the `systest` and `prod` machines: + +----- +$HOME/.ssh/authorized_keys +----- + +=== `ticket-monster` project +Continouos Delivery from dev -> prod is demonstrated using the {ticketmonster} JEE application. + +During the `release` stage, the release version of the `ticket-monster` project is updated (ie: 2.6.49-SNAPSHOT -> 2.6.49.Final). +This change is version controlled. +Subsequently, a git repository of the `ticket-monster` application is needed to push these release changes to. + +The source to the `ticket-monster` application can be found in Red Hat's {jbossdemocentral}. +This git repository is public (any git client can clone the project) however direct commit access to this repository is controlled. +You'll want to utilize a version of the `ticket-monster` application that you can modify. + +[[forkticketmonster]] +==== Fork `ticket-monster` project + + +You'll want to fork the `ticket-monster` project using your own github account: + +. In your browser, navigate to: `https://github.com/jbossdemocentral/continuous-delivery-demo-app` +. Authenticate into gitub. +. On the far right, click `Fork` ++ +image::images/forkettmaster.png[] +. After a few seconds, a fork of the `ticket-monster` app will appear in your own github account. +. Make note of the clone URL to your forked repository. +You'll make use of this URL through this exercise. + +==== Modify `ticket-monster` pom.xml +The `pom.xml of the `ticket-monster` project includes references to the original git repository in `jbossdemocentral` . +These references should be changed. + +. Clone the forked `ticket-monster` project to your local workstation. +. Using your favorite text editor, edit the following section of: `continuous-delivery-demo-app/pom.xml`: ++ +image::images/pom.png[] ++ +In particular, change all of the URLs in the `scm` section such that they reference your forked repository. +. Commit and push the change to your forked git repository. + +=== Build and start `dev-env` + +[[baseimages]] +==== Build `dev-env` images + +Docker _images_ from this project need to be built prior to the creation of docker _containers_. + +Docker-compose is used to build the Docker images included in this project. + +. cd $PROJECT_HOME/demo +. add *jboss-eap-6.4* +.. Use your _RHN_ userId to access the {supportportal}. +.. Download *jboss-eap-6.4.0.zip* +.. Copy *jboss-eap-6.4.0.zip* to the following directory on the host machine: `$PROJECT_HOME/demo/images/appserverbase/resources` + +. Build the project's _base_ image. ++ +One limitation of _docker_compose_ is that it’s not smart enough to build images in the order specified in the project's docker-compose yaml config. +Instead, docker-compose attempts to build images in alphabetic order. +This becomes a problem when building the images defined in `$PROJECT_HOME/demo/baseimages.yml`. ++ +This docker-compose limitation can be overcome by explicitly specifying the order in which to build the project's images. ++ +execute: ++ +----- +docker-compose -f baseimages.yml build base +----- ++ +[NOTE] +Depending on network bandwidth, expect this step to take a few minutes while the RHEL7 base docker image is downloaded and updated. + +. Build all other images specified in the project's `baseimages.yml` config file. ++ +execute: ++ +----- +docker-compose -f baseimages.yml build +----- ++ +[NOTE] +Expect this step to take longer than the previous. +Several products (such as Jenkins) are downloaded. +. Execute: `docker images` ++ +This command should provide a listing of all of the images that have been built thus far. +The output should appear similar to the following: ++ +image::images/baseimages.png[] + + +==== Start `dev-env` containers + +. cd $PROJECT_HOME/demo +. docker run -d --name="demo_storage" demo_storage +. docker-compose -f dev-env.yml up -d ++ +[NOTE] +Depending on network bandwidth, expect this step to take a while as well as the _Sonar_ and _Nexus_ images are downloaded. +. docker-compose -f dev.yml up -d ++ +This step starts a container that includes the `Ticket Monster` application. + +. docker ps -a ++ +Make note of the newly instantiated docker containers and their port mappings. + +Your *dev-env* machine should now have the following running Docker containers: + +.. *demo_jenkins_1* ++ +Accessible via your browser at the following URL: ++ +----- +http://:9080/jenkins +----- ++ +image::images/jenkinshome.png[] +.. *demo_nexus_1* ++ +Accessible via your browser at the following URL: ++ +----- +http://:8081/nexus +----- ++ +image::images/nexushomepage.png[] +.. *demo_sonar_1* ++ +Accessible via your browser at the following URL: ++ +----- +http://:9000 +----- ++ +image::images/sonar.png[] + +==== Modify Jenkins Jobs with new `ticket-monster` URL +Several of the Jenkins jobs that come pre-configured in the `jenkins-demo-1` container reference URL to the `ticket-monster` application in `github/jbossdemocentral`. +All of these jenkins jobs should instead reference the URL of your forked `ticket-monster` app previously created in the section: <>. + +Of particular importance is the Jenkins job: `ticket-monster-release`. +The `ticket-monster-release` job is responsible for creating a release of the latest `ticket-monster` application. + +The `ticket-monster-release` job updates the `version` in the pom.xml of the application and pushes this change back to the `ticket-monster` git repository. +Subsequently, your Jenkins jobs will need commit access to a `ticket-monster` git repository. + +Using the clone URL of your forked `ticket-monster` project, modify the Jenkins jobs as follows: + +. In your browser, navigate to the jenkins dashboard. +. Click the `ticket-monster-analysis link` ++ +image::images/tmonsteranalysis.png[] +. On the left panel, click `Configure` +. Scroll down to the `Source Code Management` section +. `Git` should already be selected as the repository type. +. Replace the value of the `Repository URL` with the URL of your forked `ticket-monster` repository in github. ++ +image::images/scm.png[] +. Under the `Credentials` text box, click the `Add` button +. In the `Add Credentials` pop-up, populate with your preferred mechanism to authenticate into gihub (ie: username/password or ssh keys) +. Scroll to the bottom and click `Save` + +Repeat the above procedure for the following additional Jenkins jobs: + +. *ticket-monster-build* +. *ticket-monster-release* +. *ticket-monster-test-int* + +=== Build and Start `systest` + +===== Overview +The `systest` environment consists of a single Docker container running JBoss EAP 6.4. +This infrastructure will be used as the test environment. + +===== Start *systest* containers +Execute the following steps in your `systest` machine. + +. cd $PROJECT_HOME/demo +. docker-compose -f systest.yml up -d +. docker ps -a ++ +Your *systest* machine should now have one running Docker container: *demo_systest_1* ++ +This container is accessible via your browser at the following interfaces: + +.. *JBoss EAP Management Console* ++ +----- +http://:19990 +----- ++ +Authenticate using a userId/password of: `admin / admin-123` ++ +image::images/eapmgmt.png[] +.. *Ticket Monster Homepage* ++ +----- +http://:18080/ticket-monster +----- ++ +image::images/tmonsterhome.png[width="50%"] + +=== Build and Start `prod` +The production environment used in this project is identical to `systest`. + +On the production machine, start its containers in the same manner as was done previously in the `systest` machine with one change: +execute `docker-compose -f prod.yml up -d` + + +=== Start `ticket-monster-build` job +After all images are built and containers started on all enviornments (dev, systest and prod), continuous delivery of a JEE application in a Docker environment can be demonstrated. + +The Jenkins `Delivery Pipeline` can be manually started via the Jenkins Dashboard. + +At the far right of the dashboard, click the green start button corresponding to the `ticket-monster-release` job. + +image::images/startjob.png[] + +== Real-World Considerations + +==== *ticket-monster-build* initiation +==== Email set-up +==== Human Task: systest -> prod diff --git a/README.md b/README.md deleted file mode 100644 index 3ae1d6d..0000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# continuous-delivery-javaee-container-src - -**Note:** This is currently **not** a working demo that you can download and run. You can however from the source code figure out how to run the demo. As soon as times allows I will add instruction on how to get this running like a demo. - -This repository contians the source code from the "Continuous Delivery with Docker Containers and Java EE" webinar that I (Thomas Qvarnstrom) and Markus Eisele preseted the 28th of April. For more information and recordings etc see Markus Eisele blog article about the webinar [here](http://blog.eisele.net/2015/04/continuous-delivery-with-docker.html) - - diff --git a/demo/baseimages.yml b/demo/baseimages.yml index 81b7bb3..6a311a1 100644 --- a/demo/baseimages.yml +++ b/demo/baseimages.yml @@ -1,3 +1,6 @@ +storage: + build: images/storage + base: build: images/base diff --git a/demo/dev-env.yml b/demo/dev-env.yml index 3803f9c..7e6b57b 100644 --- a/demo/dev-env.yml +++ b/demo/dev-env.yml @@ -11,5 +11,7 @@ jenkins: links: - nexus:nexus - sonar:sonar + volumes_from: + - demo_storage ports: - "9080:9080" diff --git a/demo/images/appserverbase/Dockerfile b/demo/images/appserverbase/Dockerfile index 41464bf..d2ade35 100644 --- a/demo/images/appserverbase/Dockerfile +++ b/demo/images/appserverbase/Dockerfile @@ -25,8 +25,10 @@ ENV JAVA_HOME /usr/lib/jvm/java ENV EAP_VERSION 6.4.0 # Add JBoss EAP binary -RUN wget -O /tmp/jboss-eap-${EAP_VERSION}.zip http://download.eng.bos.redhat.com/released/JBEAP-6/${EAP_VERSION}/jboss-eap-${EAP_VERSION}.zip +# JA Bride: No longer accessing from download.eng.bos.redhat.com due to requirement of being on Red Hat VPN +# RUN wget -O /tmp/jboss-eap-${EAP_VERSION}.zip http://download.eng.bos.redhat.com/released/JBEAP-6/${EAP_VERSION}/jboss-eap-${EAP_VERSION}.zip +ADD resources/jboss-eap-${EAP_VERSION}.zip /tmp/jboss-eap-${EAP_VERSION}.zip RUN /usr/bin/unzip -q /tmp/jboss-eap-${EAP_VERSION}.zip -d /opt/jboss RUN mv /opt/jboss/jboss-eap-* /opt/jboss/jboss-eap-${EAP_VERSION} diff --git a/demo/images/appserverbase/resources/README.txt b/demo/images/appserverbase/resources/README.txt new file mode 100644 index 0000000..7b642b5 --- /dev/null +++ b/demo/images/appserverbase/resources/README.txt @@ -0,0 +1 @@ +manually add jboss-eap-6.4.0.zip to this directory diff --git a/demo/images/jenkins-ci/Dockerfile b/demo/images/jenkins-ci/Dockerfile index 8001825..bffe1fe 100644 --- a/demo/images/jenkins-ci/Dockerfile +++ b/demo/images/jenkins-ci/Dockerfile @@ -12,7 +12,7 @@ MAINTAINER Thomas Qvarnstrom ADD config/.ssh /var/lib/jenkins/.ssh RUN chown -R jenkins:jenkins /var/lib/jenkins/.ssh/ RUN chmod 755 /var/lib/jenkins/.ssh/ -RUN chmod 600 /var/lib/jenkins/.ssh/id_rsa* +RUN chmod 600 /var/lib/jenkins/.ssh/* # Install Plugins RUN wget -O /var/lib/jenkins/plugins/build-pipeline-plugin.hpi http://updates.jenkins-ci.org/download/plugins/build-pipeline-plugin/1.4.3/build-pipeline-plugin.hpi @@ -77,3 +77,9 @@ RUN echo "JENKINS_PORT=9080" >> /etc/sysconfig/jenkins RUN chown -R jenkins:jenkins /var/lib/jenkins EXPOSE 9080 + +USER jenkins +RUN git config --global user.email "jenkins@redhatjboss.com" +RUN git config --global user.name "jenkins" + +USER root diff --git a/demo/images/jenkins-ci/config/.ssh/README.txt b/demo/images/jenkins-ci/config/.ssh/README.txt new file mode 100644 index 0000000..d8afbfe --- /dev/null +++ b/demo/images/jenkins-ci/config/.ssh/README.txt @@ -0,0 +1 @@ +Add id_rsa keys here diff --git a/demo/images/jenkins-ci/config/.ssh/config b/demo/images/jenkins-ci/config/.ssh/config new file mode 100644 index 0000000..990a43d --- /dev/null +++ b/demo/images/jenkins-ci/config/.ssh/config @@ -0,0 +1,3 @@ +Host * + StrictHostKeyChecking no + UserKnownHostsFile=/dev/null diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-analysis/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-analysis/config.xml index 4859e20..0a820ba 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-analysis/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-analysis/config.xml @@ -71,4 +71,4 @@ RED true - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-build/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-build/config.xml index 3512ac2..41c2631 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-build/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-build/config.xml @@ -1,7 +1,11 @@ - + + Jenkins job that clones continuous-delivery-demo-app, compiles its content and creates a web archive (*.war) package. + Ensure that the git URL listed in this job references a repository that is readable. + Also, this same git repo should be writable by the jenkins operating system user (otherwise, downstream jobs in the delivery pipeline will fail due to the inability to commit to this repo). + false @@ -70,4 +74,4 @@ RED true - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-deploy-systest/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-deploy-systest/config.xml index 45af4ac..b6ee553 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-deploy-systest/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-deploy-systest/config.xml @@ -1,7 +1,10 @@ - + + Jenkins job that uses secure copy network protocol to push a newly released ticket-monster web archive to the systest host environment. + Subsequently, the JEE docker container on the systest host environment is re-built using this latest ticket-monster web archive. + false @@ -53,4 +56,4 @@ ssh -i /var/lib/jenkins/.ssh/id_rsa -o UserKnownHostsFile=/dev/null -o StrictHos - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-release/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-release/config.xml index 5d5cb74..c89df6b 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-release/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-release/config.xml @@ -1,7 +1,9 @@ - + + Jenkins job that leverages the Maven Release plugin to create a release of the ticket-monster web app. + false @@ -88,4 +90,4 @@ RED true - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-remove-systest/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-remove-systest/config.xml index 025a94b..b77080e 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-remove-systest/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-remove-systest/config.xml @@ -1,7 +1,9 @@ - + + Simple jenkins job that creates an ssh connection to the systest host machine to stop its JEE docker container (with the deployed ticket-monster web app). + false @@ -35,4 +37,4 @@ - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-test-int/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-test-int/config.xml index 3bbea62..b1328c7 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-test-int/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-test-int/config.xml @@ -70,4 +70,4 @@ RED true - \ No newline at end of file + diff --git a/demo/images/jenkins-ci/config/jobs/ticket-monster-test-sys/config.xml b/demo/images/jenkins-ci/config/jobs/ticket-monster-test-sys/config.xml index 4098e92..6caf803 100644 --- a/demo/images/jenkins-ci/config/jobs/ticket-monster-test-sys/config.xml +++ b/demo/images/jenkins-ci/config/jobs/ticket-monster-test-sys/config.xml @@ -1,7 +1,9 @@ - + + Simple Jenkins job that executes an HTTP get to determine whether ticket-monster web app was successfully deployed to the remote systest container. + false @@ -53,4 +55,4 @@ fi - \ No newline at end of file + diff --git a/demo/images/jenkinsbase/Dockerfile b/demo/images/jenkinsbase/Dockerfile index 224eba1..46e45aa 100644 --- a/demo/images/jenkinsbase/Dockerfile +++ b/demo/images/jenkinsbase/Dockerfile @@ -1,4 +1,6 @@ -FROM centos:centos6 +# JA Bride: changed to RHEL7 +#FROM centos:centos6 +FROM rhel7.1 MAINTAINER Thomas Qvarnstrom @@ -9,7 +11,7 @@ RUN yum -y update; yum clean all ########################################################## # Install Java JDK and other useful cmdline utilities ########################################################## -RUN yum -y install java-1.7.0-openjdk-devel which unzip sudo openssh-clients iputils iproute httpd-tools wget tar; yum clean all +RUN yum -y install java-1.7.0-openjdk-devel which unzip sudo openssh-clients iputils iproute httpd-tools wget tar initscripts; yum clean all ENV JAVA_HOME /usr/lib/jvm/jre ############################################ @@ -40,6 +42,8 @@ RUN yum -y install git ############################################ # Jenkins settings ADD config.xml /var/lib/jenkins/config.xml +RUN mkdir /var/lib/jenkins/.m2 +ADD settings.xml /var/lib/jenkins/.m2/settings.xml # Maven ADD hudson.tasks.Maven.xml /var/lib/jenkins/hudson.tasks.Maven.xml diff --git a/demo/images/jenkinsbase/settings.xml b/demo/images/jenkinsbase/settings.xml new file mode 100644 index 0000000..6497230 --- /dev/null +++ b/demo/images/jenkinsbase/settings.xml @@ -0,0 +1,7 @@ + + + /u02/maven/repository + + diff --git a/demo/images/storage/Dockerfile b/demo/images/storage/Dockerfile new file mode 100644 index 0000000..d085046 --- /dev/null +++ b/demo/images/storage/Dockerfile @@ -0,0 +1,7 @@ +FROM rhel7.1 + +RUN groupadd -r jenkins -g 998 && useradd -u 999 -r -g jenkins -d /home/jenkins -s /bin/bash -c "jenkins" jenkins +RUN mkdir -p /u02/maven/repository +RUN chown -R jenkins:jenkins /u02/maven/repository + +VOLUME /u02/maven/repository diff --git a/images/baseimages.png b/images/baseimages.png new file mode 100644 index 0000000..d029374 Binary files /dev/null and b/images/baseimages.png differ diff --git a/images/cd-openshift.png b/images/cd-openshift.png new file mode 100644 index 0000000..2770e6f Binary files /dev/null and b/images/cd-openshift.png differ diff --git a/images/delivery-pipeline.png b/images/delivery-pipeline.png new file mode 100644 index 0000000..7e2b778 Binary files /dev/null and b/images/delivery-pipeline.png differ diff --git a/images/devcontainers.png b/images/devcontainers.png new file mode 100644 index 0000000..8f5d773 Binary files /dev/null and b/images/devcontainers.png differ diff --git a/images/eapmgmt.png b/images/eapmgmt.png new file mode 100644 index 0000000..b5e9db7 Binary files /dev/null and b/images/eapmgmt.png differ diff --git a/images/forkettmaster.png b/images/forkettmaster.png new file mode 100644 index 0000000..1477c6a Binary files /dev/null and b/images/forkettmaster.png differ diff --git a/images/githubssh.png b/images/githubssh.png new file mode 100644 index 0000000..2ce2f04 Binary files /dev/null and b/images/githubssh.png differ diff --git a/images/jenkinshome.png b/images/jenkinshome.png new file mode 100644 index 0000000..0a033bd Binary files /dev/null and b/images/jenkinshome.png differ diff --git a/images/nexushomepage.png b/images/nexushomepage.png new file mode 100644 index 0000000..773be00 Binary files /dev/null and b/images/nexushomepage.png differ diff --git a/images/pom.png b/images/pom.png new file mode 100644 index 0000000..5324988 Binary files /dev/null and b/images/pom.png differ diff --git a/images/scm.png b/images/scm.png new file mode 100644 index 0000000..9e9d022 Binary files /dev/null and b/images/scm.png differ diff --git a/images/sonar.png b/images/sonar.png new file mode 100644 index 0000000..f349b1c Binary files /dev/null and b/images/sonar.png differ diff --git a/images/startjob.png b/images/startjob.png new file mode 100644 index 0000000..830a3ba Binary files /dev/null and b/images/startjob.png differ diff --git a/images/tmonsteranalysis.png b/images/tmonsteranalysis.png new file mode 100644 index 0000000..cdfbe57 Binary files /dev/null and b/images/tmonsteranalysis.png differ diff --git a/images/tmonsterhome.png b/images/tmonsterhome.png new file mode 100644 index 0000000..39513a5 Binary files /dev/null and b/images/tmonsterhome.png differ diff --git a/projects/simple-app b/projects/simple-app deleted file mode 160000 index b9a6f62..0000000 --- a/projects/simple-app +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b9a6f62ff1a53bec8ef7adff6256588760e9f791