This is an automated email from the ASF dual-hosted git repository.
aw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yetus.git
The following commit(s) were added to refs/heads/master by this push:
new 8c3c818 YETUS-683. Publish apache/yetus docker images on
hub.docker.com
8c3c818 is described below
commit 8c3c818285ee4e03bf31c56f678924ca37cfaf6e
Author: Allen Wittenauer <[email protected]>
AuthorDate: Sun Nov 11 22:26:26 2018 -0800
YETUS-683. Publish apache/yetus docker images on hub.docker.com
Signed-off-by: Allen Wittenauer <[email protected]>
---
.../documentation/in-progress/precommit-basic.md | 6 +-
.../documentation/in-progress/precommit-robots.md | 59 ++++++++++++++-
asf-site-src/source/downloads.html.md.erb | 2 +-
asf-site-src/source/yetus-docker-image.md | 86 ++++++++++++++++++++++
4 files changed, 147 insertions(+), 6 deletions(-)
diff --git a/asf-site-src/source/documentation/in-progress/precommit-basic.md
b/asf-site-src/source/documentation/in-progress/precommit-basic.md
index 5e24d28..63d25f2 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-basic.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-basic.md
@@ -84,7 +84,7 @@ Build Tools:
Automation and Isolation:
* [Circle CI](https://www.circleci.com)
-* [Docker](https://www.docker.com) version 1.6.0+
+* [Docker](https://www.docker.com) version 1.7.0+
* [Gitlab CI](https://www.gitlab.com)
* [Jenkins](https://www.jenkins-ci.org)
* [Travis CI](https://www.travis-ci.com)
@@ -329,10 +329,10 @@ NOTE: JAVA\_HOME is always appended to the list of JDKs
in MultiJDK mode. If JA
`test-patch` also has a mode to utilize Docker:
```bash
-$ test-patch. (other options) --docker
+$ test-patch (other options) --docker
```
-This will do some preliminary setup and then re-execute itself inside a Docker
container. For more information on how to provide a custom Dockerfile and
other Docker-specific features, see [precommit-docker](../precommit-docker) for
more information.
+This command will do some preliminary setup and then re-execute itself inside
a Docker container. For more information on how to provide a custom Dockerfile
and other Docker-specific features, see the specific [precommit Docker
support](../precommit-docker) page and the [Apache Yetus Docker Hub
Images](/yetus-docker-image) page for more information on the convenience
Docker images.
# In Closing
diff --git a/asf-site-src/source/documentation/in-progress/precommit-robots.md
b/asf-site-src/source/documentation/in-progress/precommit-robots.md
index b0fab18..faa487c 100644
--- a/asf-site-src/source/documentation/in-progress/precommit-robots.md
+++ b/asf-site-src/source/documentation/in-progress/precommit-robots.md
@@ -38,6 +38,23 @@ TRIGGER: ${CIRCLECI}=true
Circle CI support in `test-patch` is limited to github.com. Artifacts (the
`--patch-dir` directory) location needs to be handled set on the command line.
Linking to the logs is not currently supported.
+To use the pre-built Apache Yetus Docker image from docker hub as the build
environment, use the following snippet in the `.circleci/config.yaml` file,
substituting the tag for the version of Apache Yetus that should be used and
replacing the JAVA_HOME with the appropriate version as bundled mentioned in
the Dockerfile:
+
+```yaml
+jobs:
+ build:
+ docker:
+ - image: apache/yetus:0.9.0
+
+ environment:
+ JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
+
+ ...
+```
+
+See also
+ * See also the source tree's `.circleci/config.yaml` for some tips and
tricks.
+
Gitlab CI
=========
@@ -54,6 +71,21 @@ Artifacts, patch logs, etc are configured to go to a
yetus-out directory in the
```
+To use the pre-built Apache Yetus Docker image from docker hub as the build
environment, use the following snippet in the `.gitlab-ci.yml` file,
substituting the tag for the version of Apache Yetus that should be used and
replacing the JAVA_HOME with the appropriate version as bundled mentioned in
the Dockerfile:
+
+```yaml
+job:
+ image: apache/yetus:0.9.0
+ allow_failure: true
+ variables:
+ JAVA_HOME: /usr/lib/jvm/java-8-openjdk-amd64
+
+ ...
+```
+
+See also
+ * See also the source tree's `.gitlab-ci.yml` for some tips and tricks.
+
Jenkins
=======
@@ -66,9 +98,29 @@ There is some support for a few well known environment
variables:
* `${GIT_URL}` will trigger the same extra handling if 'github' or 'gitlab'
appear in the string.
* If `${ghprbPullId}` is set, then test-patch will configure itself for a
Github-style PR.
+To use the pre-built Apache Yetus Docker image from docker hub as the build
environment, use the following snippet in the `Jenkinsfile`, substituting the
tag for the version of Apache Yetus that should be used and replacing the
JAVA_HOME with the appropriate version as bundled mentioned in the Dockerfile:
+
+```groovy
+pipeline {
+ agent {
+ docker {
+ image 'apache/yetus:0.9.0'
+ args '-v /var/run/docker.sock:/var/run/docker.sock'
+ }
+ }
+
+ environment {
+ JAVA_HOME = '/usr/lib/jvm/java-8-openjdk-amd64'
+ }
+
+ ...
+
+}
+
+```
See also
- * See also the source tree's Jenkinsfile for some tips and tricks.
+ * See also the source tree's `Jenkinsfile` for some tips and tricks.
* [precommit-admin](precommit-admin), for special utilities built for
Jenkins.
* [GitHub Branch Source
Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+Branch+Source+Plugin)
* [GitHub Pull Request Builder
Plugin](https://wiki.jenkins.io/display/JENKINS/GitHub+pull+request+builder+plugin)
@@ -83,9 +135,12 @@ Travis CI support will update the local checked out source
repository to include
If `${ARTIFACTS_PATH}` is configured, then `--patch-dir` is set to the first
listed directory path. However, links to the location logs must still be
configured manually.
-Personalities will override the auto-detected Github repository information.
It may be necessary to manually configure it in your .travis.yml file.
+Personalities will override the auto-detected Github repository information.
It may be necessary to manually configure it in your `.travis.yml` file.
+As of this writing, it is not possible to make the Travis CI build environment
use the Apache Yetus pre-built docker images without using ` docker run` in the
before_install phase. Therefore, using the image is the same as described in
the [Apache Yetus Docker Hub Images](/yetus-docker-image) page.
+See also
+ * See also the source tree's `.travis.yml` for some tips and tricks.
Manual Configuration
====================
diff --git a/asf-site-src/source/downloads.html.md.erb
b/asf-site-src/source/downloads.html.md.erb
index e3c0f11..27c362e 100644
--- a/asf-site-src/source/downloads.html.md.erb
+++ b/asf-site-src/source/downloads.html.md.erb
@@ -31,7 +31,7 @@ should verify the integrity of these artifacts via [the ASF
procedure](https://w
using the [KEYS file for our
project](https://dist.apache.org/repos/dist/release/yetus/KEYS).
In addition to the artifacts below, we publish convenience artifacts in some
-third-party repositories (e.g. Maven Central).
+third-party repositories (e.g. Maven Central) and [Docker
Hub](../yetus-docker-image).
## Releases
diff --git a/asf-site-src/source/yetus-docker-image.md
b/asf-site-src/source/yetus-docker-image.md
new file mode 100644
index 0000000..963cbf5
--- /dev/null
+++ b/asf-site-src/source/yetus-docker-image.md
@@ -0,0 +1,86 @@
+<!---
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+Convenience Docker Hub Images
+===========================
+
+While not official releases, the Apache Yetus project makes available two
types of images on hub.docker.com:
+
+ * apache/yetus-base
+
+ This image is the same as the 'built-in' Dockerfile when `--docker` is
used without `--dockerfile` on the precommit command line. It includes all of
the pre-requisites as needed by the various Apache Yetus components. It is
located in `precommit/src/main/shell/test-patch-docker/`.
+
+ * apache/yetus
+
+ This image is the same as apache/yetus-base but includes a pre-built
version of Apache Yetus as part of the base OS image. In other words, qbt,
releasedocmaker, shelldocs, test-patch, etc., are in /usr/bin and available in
the default path. It is generated from the Dockerfile located in the root of
the source and is built with the options provided in the hooks directory.
+
+Both images should be suitable to be used as a building block or even directly
if your build environment needs no other dependencies. These images are
especially useful for various CI systems that require a Docker image to be used.
+
+Images are tagged such that 'master' represents the last successful Docker
image build of the master branch. Images based off of the official source
releases are tagged with a matching version number (e.g., 0.9.0). There is no
'latest' tagged image. It is recommended that users choose a stable tag so as
not to be surprised by incompatible changes.
+
+File Access
+========
+
+All of the executables that Apache Yetus provides requires access to one or
more directories. These directories should be provided on the command line via
the volume flags to docker run. For example, to run shelldocs against
test-patch.sh:
+
+```bash
+docker run \
+ --rm \
+ -v /tmp/out:/output \
+ -v /src/precommit/src/main/shell:/input:ro \
+ apache/yetus:0.9.0 \
+ shelldocs --output /output/test-patch.md --input /input/test-patch.sh
+```
+
+In this example, we mount two volumes: one for input (marked read-only), one
for output. After execution, shelldocs has processed test-patch.sh and
generated a test-patch.md file in /tmp/out on our local machine.
+
+Precommit also works, assuming that Apache Yetus image has all of your
project's dependencies. For example:
+
+```bash
+docker run \
+ --rm \
+ -v /tmp/patchdir:/patchdir \
+ -v /src:/basedir \
+ apache/yetus:0.9.0 \
+ qbt \
+ --plugins=all \
+ --basedir=/basedir \
+ --patch-dir=/patchdir \
+ --project=yetus
+```
+If your project needs additional dependencies, it is trivial to build off of
the Apache Yetus image:
+
+```Dockerfile
+FROM apache/yetus:0.9.0
+RUN apt-get -q update && apt-get -q install -y \
+ clang \
+ libssl-dev \
+ valgrind \
+ zlib1g-dev
+```
+ ```bash
+docker build -t project/build:0.9.0 -f .
+```
+
+This example builds a docker image based off of Apache Yetus 0.9.0 but with
the additions of clang, some development libraries, and valgrind. Now
project/build:0.9.0 can be used instead of apache/yetus:0.9.0 since it has all
of Apache Yetus and the additions needed by our project.
+
+A Note About Precommit
+================
+
+test-patch and friends have direct support for Docker outside of the
convenience images. That information is covered in-depth in
the[precommit-docker](../precommit-docker) section.