From 9fc88c4a37e69fb7d8d42f7cf28ca2870a7eb2a6 Mon Sep 17 00:00:00 2001
From: donal <donalspring@gmail.com>
Date: Sat, 07 Apr 2018 21:48:05 +0200
Subject: [PATCH] ADD docker slave instructions

---
 exercises/images/exercise2/jenkins-slave-npm-build.png |    0 
 exercises/images/exercise2/jenkins-slave-ansible.png   |    0 
 exercises/2-attack-of-the-pipelines/README.md          |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/exercises/2-attack-of-the-pipelines/README.md b/exercises/2-attack-of-the-pipelines/README.md
index 3d513bf..d05a699 100644
--- a/exercises/2-attack-of-the-pipelines/README.md
+++ b/exercises/2-attack-of-the-pipelines/README.md
@@ -261,8 +261,64 @@
 ![fullstack-app](../images/exercise2/fullstack-app.png)
 
 
-### Part 2 - Build > Bake > Deploy 
+### Part 2 - Create a NodeJS Build slave
+> _In this exercise; we will create a build configuration for to generate a slave for Jenkins to use in it's builds_
+
+3. In order for Jenkins to be able to run `npm` builds and installs as we have done locally, we must configure a `jenkins-build-slave` for Jenkins to use. This slave will be dynamically provisioned when we run a build. It needs to have NodeJS and npm installed in it. In your `enablement-cd-cd` repository, checkout the template and configuration. This will bring in the template, the params & the `Docerfile`.
+```bash
+$ git checkout exercise2/jenkins-slave docker/ templates/ params/
+```
+
+3. Open the `params/jenkins-slave-npm` file and update `<YOUR_ENABLEMENT_GIT_REPO>` accordingly. This set of parameters will clone from the enablement repo and run a docker build of the Dockerfile stored in `docker/jenkins-slave-npm`.
+```bash
+SOURCE_REPOSITORY_URL=<YOUR_ENABLEMENT_GIT_REPO>
+SOURCE_CONTEXT_DIR=docker/jenkins-slave-npm
+NAME=npm-jenkins-slave
+```
+
+3. Create an item in the ansible variables file under the `ci-cd-builds` object to run the template with. Don't forget to substitute `<YOUR_NAME>`
+```yaml
+  - name: "jenkins-npm-slave"
+    namespace: "<YOUR_NAME>-ci-cd"
+    template: "{{ inventory_dir }}/../templates/jenkins-slave-generic-template.yml"
+    params: "{{ inventory_dir }}/../params/jenkins-slave-npm"
+    tags:
+    - jenkins-slave
+```
+![jenkins-slave-ansible](../images/exercise2/jenkins-slave-ansible.png)
+
+3. Run the OpenShift Applier to trigger a build of this jenkins slave image.
+```bash
+$ ansible-playbook roles/openshift-applier/playbooks/openshift-cluster-seed.yml \
+     -i inventory/ \
+     -e "filter_tags=jenkins-slave"
+```
+
+3. Verify the build executed successfully by logging into the cluster and checking the `builds` tab of the `<YOUR_NAME>-ci-cd` project.
+![jenkins-slave-npm-build](../images/exercise2/jenkins-slave-npm-build.png)
+
+3. You should now be able to apply the label `jenkins-slave-npm` to a build job to run a build on this newly created slave as we will see in the rest of this lab
+<p class="tip">
+NOTE - Jenkins may need to be restarted for the configuration to appear. To do this; navigate to your jenkins instance and add `/restart` to the url.
+</p>
+
+### Part 3 - Add configs to cluster 
+> _In this exercise; we will use the OpenShift Applier to drive the creation of cluster content required by the app such and MongoDB and the Apps Build / Deploy Config_
+
+4. TODO - waiting for Justins example before proceeding here
+
+### Part 4 - Build > Bake > Deploy 
 > _In this exercise; we take what we have working locally and get it working in OpenShift_
+
+3. With the Configuration & DB in place,
+
+3. Do other things
+
+3. Do other things
+
+3. Do other things
+
+3. Do other things
 
 3. Do other things
 
@@ -274,7 +330,7 @@
  - Add a GitHub Webhook to trigger your build on each commit
  - Create a _promote-to-uat_ phase after the <master> branch deploy
  - Add MongoDB Stateful set for the UAT environment (or test)
- - Do some other stuff
+ - Inject MongoDB config into the NodeJS app
 
 ## Additional Reading
 > List of links or other reading that might be of use / reference for the exercise
diff --git a/exercises/images/exercise2/jenkins-slave-ansible.png b/exercises/images/exercise2/jenkins-slave-ansible.png
new file mode 100644
index 0000000..5f75cdd
--- /dev/null
+++ b/exercises/images/exercise2/jenkins-slave-ansible.png
Binary files differ
diff --git a/exercises/images/exercise2/jenkins-slave-npm-build.png b/exercises/images/exercise2/jenkins-slave-npm-build.png
new file mode 100644
index 0000000..1783a5f
--- /dev/null
+++ b/exercises/images/exercise2/jenkins-slave-npm-build.png
Binary files differ

--
Gitblit v1.9.3