From c5d872d9ade4316da63d1cf2a68c65fa7e466fad Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 28 Sep 2017 15:23:55 +0800 Subject: [PATCH 1/8] Add Dockerfile, and docker-compose for building Donut without installing sbt. --- Dockerfile | 9 +++++++++ README.md | 39 +++++++++++++++++++++++++++------------ docker-compose.yml | 12 ++++++++++++ project/build.properties | 2 +- 4 files changed, 49 insertions(+), 13 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..af8e3ce --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:9 +LABEL maintainer="tim.myerscough@mechanicalrock.io" + + +WORKDIR /app + +COPY target/donut*.jar /app/donut.jar + +ENTRYPOINT ["java", "-jar", "donut.jar", "-s", "cucumber:/source", "-o", "/output"] diff --git a/README.md b/README.md index d30268f..ba208b1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![](http://magentys.github.io/donut/img/Donut-05.png) +![](http://magentys.github.io/donut/img/Donut-05.png) [![Build Status](https://travis-ci.org/MagenTys/donut.svg?branch=master)](https://travis-ci.org/MagenTys/donut) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.magentys/donut/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.magentys/donut) @@ -10,7 +10,7 @@ Donut currently supports any tool that produces gherkin json (ie. cucumber-jvm e Live Demos => [Only Scenarios](http://magentys.github.io/donut/demo.html)   [Scenarios and Unit Tests](http://magentys.github.io/donut/demo-scenarios-and-unitTests.html)   [Scenarios and Orphaned Unit Tests](http://magentys.github.io/donut/demo-scenarios-and-orphanedUnitTests.html) ## Quickstart -You can either use Donut directly or check out the available plugins: +You can either use Donut directly or check out the available plugins: * [Maven plugin](https://github.com/MagenTys/donut-maven-plugin) * [Specflow adaptor](https://github.com/MagenTys/SpecNuts) * [Jenkins plugin](https://github.com/MagenTys/donut-jenkins-plugin) @@ -19,22 +19,30 @@ You can either use Donut directly or check out the available plugins: ## Release Notes See what's new [here](release-notes.md) -### download +### Download ``` wget http://repo1.maven.org/maven2/io/magentys/donut/1.0/donut-1.0-one-jar.jar ``` or download the latest release from: [here](http://repo1.maven.org/maven2/io/magentys/donut/1.0/donut-1.0-one-jar.jar) -### run from command line +### Run from command line ``` java -jar donut-.jar -s cucumber:/my/path/cucumber-reports -n myProjectName ``` -### options +### Run using Docker + +NOTE: see building docker container below. + +``` +docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donut-docker -n myProjectName [options] +``` + +### Options `-n` or `--projectName` is a mandatory parameter, and it should be the name of the project. -`-s` or `--sourcedirs` is a mandatory parameter, and it should be a comma separated list of the paths to the directories that hold the generated result files. +`-s` or `--sourcedirs` is a mandatory parameter, and it should be a comma separated list of the paths to the directories that hold the generated result files. Other parameters can also be specified as below: @@ -85,7 +93,7 @@ default values: ``` -* SBT +* SBT ``` libraryDependencies += "io.magentys" % "donut" % "1.0" ``` @@ -98,12 +106,12 @@ compile 'io.magentys:donut:1.0' Example usage of the `Generator` ``` -ReportConsole report = +ReportConsole report = Generator.apply(sourceDirectory, outputDirectory, filePrefix, timestamp, template, countSkippedAsFailure, countPendingAsFailure, countUndefinedAsFailure, countMissingAsFailure, projectName, projectVersion, customAttributes); ``` -This will create an `html` report at the outputDirectory and will return a `ReportConsole` output object: +This will create an `html` report at the outputDirectory and will return a `ReportConsole` output object: ``` allFeatures: List[Feature] @@ -126,17 +134,24 @@ buildFailed: Boolean ## Build from source -### prerequisites +### Prerequisites * install java 8+ * install scala 2.11+ * install SBT ([www.scala-sbt.org](http://www.scala-sbt.org)) -### run from sbt +### Run from sbt `sbt "run-main io.magentys.donut.Boot -s cucumber:/my/path/cucumber-reports -n myProjectName" ` -### credits +### Build Docker Container + +``` +docker-compose run sbt +docker build . -t donut-docker +``` + +### Credits * JQuery * Bootstrap diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b798e4e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '2' +services: + sbt: + image: hseeberger/scala-sbt + entrypoint: + - sbt + - one-jar + working_dir: /work + volumes: + - .:/work + # Enable the use of Docker from within the container + - /var/run/docker.sock:/var/run/docker.sock diff --git a/project/build.properties b/project/build.properties index 58510cf..3e8bd1a 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version = 0.13.9 +sbt.version = 0.13.15 From 979a89df26d90cd43671cbf3a1bdf43a709cd523 Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 28 Sep 2017 15:52:39 +0800 Subject: [PATCH 2/8] Build Docker container as part of travis build, and push to dockerhub --- .travis.yml | 12 +++++++++++- Dockerfile | 2 +- README.md | 2 +- docker-compose.yml | 1 + 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 56d8c34..c8ce2a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,19 @@ language: scala scala: - 2.11.7 +sudo: required +services: + - docker after_success: - bash deploy-baked-donut.sh + - if [ "$TRAVIS_BRANCH" == "master" ]; then + sbt clean one-jar + docker build -t donut/donut-report + docker login -u="$DOCKERHUB_USER" -p="$DOCKERHUB_PASSWORD" + docker push donutreport/donut-report + fi + env: global: @@ -11,4 +21,4 @@ env: - COMMIT_AUTHOR_EMAIL: "chdask@gmail.com" notifications: - slack: magentys:hTBVaA9gGjBPhW5OAqnMwePI \ No newline at end of file + slack: magentys:hTBVaA9gGjBPhW5OAqnMwePI diff --git a/Dockerfile b/Dockerfile index af8e3ce..22f6e75 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,6 @@ LABEL maintainer="tim.myerscough@mechanicalrock.io" WORKDIR /app -COPY target/donut*.jar /app/donut.jar +COPY target/donut*one-jar.jar /app/donut.jar ENTRYPOINT ["java", "-jar", "donut.jar", "-s", "cucumber:/source", "-o", "/output"] diff --git a/README.md b/README.md index ba208b1..a716b39 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ buildFailed: Boolean ``` docker-compose run sbt -docker build . -t donut-docker +docker build . -t donutreport/donut-report ``` ### Credits diff --git a/docker-compose.yml b/docker-compose.yml index b798e4e..25937f5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,7 @@ services: image: hseeberger/scala-sbt entrypoint: - sbt + - clean - one-jar working_dir: /work volumes: From 2b96ced4b52bed38f67b6d73abef59d116de4f86 Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 28 Sep 2017 16:08:28 +0800 Subject: [PATCH 3/8] Update README to use Docker Hub version cache dependencies for travis build Build container from published version. Will use autobuild on Docker Hub Add instructions for manual Docker deployment --- .travis.yml | 13 +++---------- Dockerfile | 2 +- README.md | 9 +++++++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index c8ce2a0..8be26c6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,13 @@ language: scala scala: - 2.11.7 -sudo: required -services: - - docker after_success: - bash deploy-baked-donut.sh - - if [ "$TRAVIS_BRANCH" == "master" ]; then - sbt clean one-jar - docker build -t donut/donut-report - docker login -u="$DOCKERHUB_USER" -p="$DOCKERHUB_PASSWORD" - docker push donutreport/donut-report - fi - +cache: + directories: + - /root/.ivy2/cache/ env: global: - ENCRYPTION_LABEL: "e95fb731c984" diff --git a/Dockerfile b/Dockerfile index 22f6e75..bdfb86a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,6 @@ LABEL maintainer="tim.myerscough@mechanicalrock.io" WORKDIR /app -COPY target/donut*one-jar.jar /app/donut.jar +RUN wget http://repo1.maven.org/maven2/io/magentys/donut/1.0/donut-1.0-one-jar.jar /app/donut.jar ENTRYPOINT ["java", "-jar", "donut.jar", "-s", "cucumber:/source", "-o", "/output"] diff --git a/README.md b/README.md index a716b39..61a21c9 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,11 @@ java -jar donut-.jar -s cucumber:/my/path/cucumber-reports -n myProject ### Run using Docker -NOTE: see building docker container below. +Donut is packaged as a [Docker container](https://hub.docker.com/r/donutreport/donut-report/) +To run using Docker: ``` -docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donut-docker -n myProjectName [options] +docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donutreport/donut-docker -n myProjectName [options] ``` ### Options @@ -146,9 +147,13 @@ buildFailed: Boolean ### Build Docker Container +Set your Docker Hub credentials ``` docker-compose run sbt docker build . -t donutreport/donut-report +docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD +docker tag donutreport/donut-report donutreport/donut-report +docker push donutreport/donut-report ``` ### Credits From f0488baaef1eff332720ace2ee0c1b7d78f598cf Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 28 Sep 2017 17:41:43 +0800 Subject: [PATCH 4/8] don't publish build report for branches. Means Travis builds will work for PRs. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 8be26c6..89d53c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ scala: - 2.11.7 after_success: + - if [ "$TRAVIS_BRANCH" == "master" ]; then - bash deploy-baked-donut.sh cache: From 3a9c9cf0417b99142d4fbaea179084dcb3889935 Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 28 Sep 2017 17:48:22 +0800 Subject: [PATCH 5/8] fix typo --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 89d53c8..19e70e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ scala: after_success: - if [ "$TRAVIS_BRANCH" == "master" ]; then - - bash deploy-baked-donut.sh + bash deploy-baked-donut.sh cache: directories: From d8d786aa1605b4ff4d5bc49901f06ef8a3834de7 Mon Sep 17 00:00:00 2001 From: Amit Sharma Date: Mon, 2 Oct 2017 17:07:50 +0800 Subject: [PATCH 6/8] Updated the readme to specify the version of donut used by Dockerfile and fixed the image name typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 61a21c9..9bcb3ef 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ java -jar donut-.jar -s cucumber:/my/path/cucumber-reports -n myProject Donut is packaged as a [Docker container](https://hub.docker.com/r/donutreport/donut-report/) -To run using Docker: +To run using Docker (This would use 1.0 version of donut): ``` -docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donutreport/donut-docker -n myProjectName [options] +docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donutreport/donut-report -n myProjectName [options] ``` ### Options From b72b0d1a3e2e69acbab91c572c88e46c91a568f2 Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 5 Oct 2017 10:16:05 +0800 Subject: [PATCH 7/8] Extract environment variable for DONUT_VERSION --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bdfb86a..5f0dd1b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,10 @@ FROM openjdk:9 LABEL maintainer="tim.myerscough@mechanicalrock.io" +ENV DONUT_VERSION 1.0 WORKDIR /app -RUN wget http://repo1.maven.org/maven2/io/magentys/donut/1.0/donut-1.0-one-jar.jar /app/donut.jar +RUN wget http://repo1.maven.org/maven2/io/magentys/donut/${DONUT_VERSION}/donut-${DONUT_VERSION}-one-jar.jar /app/donut.jar ENTRYPOINT ["java", "-jar", "donut.jar", "-s", "cucumber:/source", "-o", "/output"] From f4024a75d143dd527b1a5863439bd6aa8d45956f Mon Sep 17 00:00:00 2001 From: Tim Myerscough Date: Thu, 5 Oct 2017 14:04:52 +0800 Subject: [PATCH 8/8] Refactor to remove source dir option hard coded. Make it possible to specify multiple source dirs / specflow --- Dockerfile | 2 +- README.md | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5f0dd1b..591ff73 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,4 +7,4 @@ WORKDIR /app RUN wget http://repo1.maven.org/maven2/io/magentys/donut/${DONUT_VERSION}/donut-${DONUT_VERSION}-one-jar.jar /app/donut.jar -ENTRYPOINT ["java", "-jar", "donut.jar", "-s", "cucumber:/source", "-o", "/output"] +ENTRYPOINT ["java", "-jar", "donut.jar", "-o", "/output"] diff --git a/README.md b/README.md index 9bcb3ef..690ebcd 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,19 @@ java -jar donut-.jar -s cucumber:/my/path/cucumber-reports -n myProject Donut is packaged as a [Docker container](https://hub.docker.com/r/donutreport/donut-report/) -To run using Docker (This would use 1.0 version of donut): +To run using Docker: ``` -docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donutreport/donut-report -n myProjectName [options] +docker run -v /path/to/your/cucumber-reports:/source -v /path/to/output-report:/output donutreport/donut-report -n myProjectName -s cucumber:/source [options] +``` + +In the above command, using the docker `-v` parameter `/source` and `/output` volumes are mounted in the container, to pass data in, and out. +Use `-s cucumber:/source` Donut option to retrieve the reports + +*Passing multiple source directories*: +If you need to pass multiple source directories, e.g. for Cucumber reports and unit tests, and the directories are in different paths, you can use the following variant: + +``` +docker run -v /path/to/your/cucumber-reports:/source -v /path/to/your/unit-test-reports:/source_unit -v /path/to/output-report:/output donutreport/donut-report -n myProjectName -s cucumber:/source,/source_unit [options] ``` ### Options @@ -149,11 +159,12 @@ buildFailed: Boolean Set your Docker Hub credentials ``` +export VERSION=version_number docker-compose run sbt +docker login docker build . -t donutreport/donut-report -docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD -docker tag donutreport/donut-report donutreport/donut-report -docker push donutreport/donut-report +docker tag donutreport/donut-report donutreport/donut-report:$VERSION +docker push donutreport/donut-report:$VERSION ``` ### Credits