From f5cdad11326b0f5b3c887a4b7c841175d6474af3 Mon Sep 17 00:00:00 2001 From: Brian Byers Date: Mon, 30 Oct 2017 10:43:51 -0500 Subject: [PATCH 1/3] adding concourse --- ci/DockerImages/cfapi/Dockerfile | 16 +++ ci/DockerImages/gradle/Dockerfile | 15 +++ ci/README.md | 86 ++++++++++++++ ci/images/pipeline.png | Bin 0 -> 37425 bytes ci/name | 1 + ci/pipeline.yml | 184 ++++++++++++++++++++++++++++++ ci/release-body | 1 + ci/scripts/build-artifact.sh | 8 ++ ci/scripts/prepare-final.sh | 12 ++ ci/scripts/unit.sh | 7 ++ ci/scripts/verify-test.sh | 10 ++ ci/tasks/build-artifact.yml | 22 ++++ ci/tasks/prepare-final.yml | 22 ++++ ci/tasks/unit.yml | 14 +++ ci/tasks/verify-test.yml | 18 +++ ci/testfile | 1 + concourse-params-clean.yml | 19 +++ manifest-dev.yml | 6 + manifest-prod.yml | 6 + manifest-test.yml | 6 + manifest-uat.yml | 6 + 21 files changed, 460 insertions(+) create mode 100644 ci/DockerImages/cfapi/Dockerfile create mode 100644 ci/DockerImages/gradle/Dockerfile create mode 100644 ci/README.md create mode 100644 ci/images/pipeline.png create mode 100644 ci/name create mode 100644 ci/pipeline.yml create mode 100644 ci/release-body create mode 100644 ci/scripts/build-artifact.sh create mode 100644 ci/scripts/prepare-final.sh create mode 100644 ci/scripts/unit.sh create mode 100644 ci/scripts/verify-test.sh create mode 100644 ci/tasks/build-artifact.yml create mode 100644 ci/tasks/prepare-final.yml create mode 100644 ci/tasks/unit.yml create mode 100644 ci/tasks/verify-test.yml create mode 100644 ci/testfile create mode 100644 concourse-params-clean.yml create mode 100644 manifest-dev.yml create mode 100644 manifest-prod.yml create mode 100644 manifest-test.yml create mode 100644 manifest-uat.yml diff --git a/ci/DockerImages/cfapi/Dockerfile b/ci/DockerImages/cfapi/Dockerfile new file mode 100644 index 00000000..5acef64f --- /dev/null +++ b/ci/DockerImages/cfapi/Dockerfile @@ -0,0 +1,16 @@ +FROM ubuntu:14.04 + +MAINTAINER Brian Byers + +ENV HOME /root +ENV DEBIAN_FRONTEND noninteractive + +RUN apt-get update -y && apt-get install -y curl + +ADD https://cli.run.pivotal.io/stable?release=linux64-binary&version=6.32.0&source=github-rel cf-cli.tgz +# Install CF CLI +RUN tar -xzf cf-cli.tgz && mv cf /opt && rm cf-cli.tgz + +# Environment variables +ENV CF_HOME /opt +ENV PATH $PATH:$CF_HOME diff --git a/ci/DockerImages/gradle/Dockerfile b/ci/DockerImages/gradle/Dockerfile new file mode 100644 index 00000000..98961b4d --- /dev/null +++ b/ci/DockerImages/gradle/Dockerfile @@ -0,0 +1,15 @@ +FROM java:8-jdk + +MAINTAINER Brian Byers + +ENV HOME /root + +# Install Gradle +RUN wget https://services.gradle.org/distributions/gradle-4.2.1-bin.zip +RUN unzip gradle-4.2.1-bin.zip +RUN mv gradle-4.2.1 /opt/ +RUN rm gradle-4.2.1-bin.zip + +# Environment variables +ENV GRADLE_HOME /opt/gradle-4.2.1 +ENV PATH $PATH:$GRADLE_HOME/bin diff --git a/ci/README.md b/ci/README.md new file mode 100644 index 00000000..fc25b399 --- /dev/null +++ b/ci/README.md @@ -0,0 +1,86 @@ +#pcf-ers-demo on concourse + +![](images/pipeline.png) + +* [Concourse](http://councourse.ci) +* Build only once and deploy anywhere +* Every build is a release candidate +* Every build step runs inside a docker container mounting to garden linux cells + +## Resources + +Resources in concourse are implemented as docker images which contain implementations corresponding their types + +* git-repo ([git-resource](https://github.com/concourse/git-resource)): A Github repo. E.g. pcf-ers-demo Github resource + +* version ([semver-resource](https://github.com/concourse/semver-resource)): A file to track the version stored in Github. E.g. 1.0.1 in a file named as current-version + +* release-candidate (([github-resource](https://github.com/concourse/github-release-resource))) Store pcf-ers-demo artifact E.g. pcf-ers-demo-1.0.1-rc1.jar + +* production-release (([github-resource](https://github.com/concourse/github-release-resource))) Store pcf-ers-demo artifact E.g. pcf-ers-demo-1.0.1.jar + +## Pipeline Progress + +### Check out from the git-repo + +### Unit testing pcf-ers-demo + +This step runs on a container with maven and java installed. +Basically it just runs "./mvnw test" against the git-repo + +### build-artifact + +* git-repo - Check out the same source version of git-repo as unit step +* version - Checkout the version file from Github +* "./mvnw install" generates the jar artifact +* Push the artifact to the Github resource as music-resource +* Git tag on the git-repo +* Bump the version resource for the next usage + +### integration-tests + +* Pull the binary from release-candidate +* Deploy to cloudfoundry acceptance tests space +* Run Automation Acceptance Tests suite + +### promote-to-uat + +* Pull the binary from release-candidate +* Deploy to cloudfoundry uat space +* Waiting for user acceptance tests + +### manual-deploy-to-prod + +* Manually trigger the build when the operators are ready +* Pull the binary from release-candidate and rename +* Deploy to prod +* Copy to Github release as production-release + +### How to replicate this pipeline in your env + +* If you don't already have a Concourse environment, you can quickly spin one up locally with [Vagrant](https://concourse.ci/vagrant.html]) + +* Download the `fly` CLI by visiting `http://192.168.100.4:8080` and selecting your OS then install + +* Fork this github repo to your own github account, [ generate the key pair and add the public key to github ](https://help.github.com/articles/generating-ssh-keys/), and save the private key for future usage. + + +* Install PCF Dev ([Vagrant VM](http://pivotal.io/pcf-dev)) + * Setup spaces for development, test, uat and production + * `cf create-space development` + * `cf create-space test` + * `cf create-space uat` + * `cf create-space production` + + +* Set your fly endpoint (assuming you are taking the easy way and using vagrant) + + * `fly -t lite login -c http://192.168.100.4:8080` + + * Configure your environment details in pcf-ers-demo-credentials.yml + + * `fly -t lite set-pipeline -p pcf-ers-demo -c ci/pipeline.yml -l pcf-ers-demo-credentials.yml` + * `fly -t lite unpause-pipeline -p pcf-ers-demo` + * Open `http://192.168.100.4:8080` in your browser and enjoy! + +### __FYI DO NOT COMMIT `pcf-ers-demo-credentials.yml` as it has all your secrets__ diff --git a/ci/images/pipeline.png b/ci/images/pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2445e04fa38dc23154580dbf42ac28239f864b GIT binary patch literal 37425 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 s Date: Mon, 30 Oct 2017 10:45:51 -0500 Subject: [PATCH 2/3] making executable --- ci/scripts/build-artifact.sh | 0 ci/scripts/prepare-final.sh | 0 ci/scripts/unit.sh | 0 ci/scripts/verify-test.sh | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 ci/scripts/build-artifact.sh mode change 100644 => 100755 ci/scripts/prepare-final.sh mode change 100644 => 100755 ci/scripts/unit.sh mode change 100644 => 100755 ci/scripts/verify-test.sh diff --git a/ci/scripts/build-artifact.sh b/ci/scripts/build-artifact.sh old mode 100644 new mode 100755 diff --git a/ci/scripts/prepare-final.sh b/ci/scripts/prepare-final.sh old mode 100644 new mode 100755 diff --git a/ci/scripts/unit.sh b/ci/scripts/unit.sh old mode 100644 new mode 100755 diff --git a/ci/scripts/verify-test.sh b/ci/scripts/verify-test.sh old mode 100644 new mode 100755 From f8fe667307741212db42530fb00bc723adf9fe4a Mon Sep 17 00:00:00 2001 From: Brian Byers Date: Mon, 30 Oct 2017 10:51:28 -0500 Subject: [PATCH 3/3] updating name --- ci/name | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/name b/ci/name index b082a9c2..6bf7788d 100644 --- a/ci/name +++ b/ci/name @@ -1 +1 @@ -cf-spring-mvc-boot +pcf-ers-demo