Add lf-infra-docker-login macro and script
[releng/global-jjb.git] / README.md
index ce7d420..cbaaa29 100644 (file)
--- a/README.md
+++ b/README.md
@@ -11,11 +11,15 @@ For example:
 
 ```
 GIT_URL=ssh://jenkins-$SILO@git.opendaylight.org:29418
+GIT_CLONE_URL=git@github.com:
 JENKINS_HOSTNAME=jenkins092
 LOGS_SERVER=https://logs.opendaylight.org
 NEXUS_URL=https://nexus.opendaylight.org
 SILO=releng
 ```
+Note: **GIT_CLONE_URL** is only used by Github projects as this
+will be different from the URL used the poperties
+configuration.
 
 ## Jenkins Plugin Requirements
 
@@ -35,6 +39,79 @@ SILO=releng
 - OpenStack Cloud
 - Timestamps
 
+## Installing global-jjb
+
+global-jjb should be deployed in the ci-management repository's jjb directory as
+a submodule. global-jjb is versioned and tagged in Gerrit so installing,
+upgrading, and rolling back changes should be simple via the Gerrit tag system.
+
+```
+    # Choose a global-jjb version to install
+    GLOBAL_JJB_VERSION=v0.1.0
+
+    # Add the new submodule to ci-management's jjb directory.
+    # Note: Only needs to be performed once per ci-management repo.
+    cd jjb/
+    git submodule add https://gerrit.linuxfoundation.org/infra/releng/global-jjb
+
+    # Checkout the version of global-jjb you wish to deploy.
+    cd global-jjb
+    git checkout $GLOBAL_JJB_VERSION
+
+    # Commit global-jjb version to the ci-management repo.
+    cd ../..
+    git add jjb/global-jjb
+    git commit -sm "Install global-jjb $GLOBAL_JJB_VERSION"
+
+    # Push the patch to ci-management for review
+    git review
+```
+
+## Parameters stored in defaults.yaml
+
+There are a few project specific parameters that should be stored in the
+ci-management repo's defaults.yaml file.
+
+**gerrit-server-name**: The name of the Gerrit Server as defined in Gerrit
+Trigger global configuration.
+
+**jenkins-ssh-credential**: The name of the Jenkins Credential to use for ssh
+connections.
+
+If you are using GitHub then there are two more parameters which
+will need to be placed in the defaults.yaml
+
+**git-url**: This should be set to the base URL of your GitHub. In
+general this should be https://github.com. If you are using GitHub
+Enterprise, or some other GitHub-style system, then it should be
+whatever your installation base URL is.
+
+**git-clone-url**: This is the clone prefix used by GitHub jobs. This
+should be set to either the same thing as **git-url** or the
+'git@github.com:' including the trailing ':'
+
+**github-org**: The name of the GitHub organization.
+
+defaults.yaml:
+
+```
+- defaults:
+    name: global
+
+    # lf-infra defaults
+    jenkins-ssh-credential: opendaylight-jenkins-ssh
+    gerrit-server-name: OpenDaylight
+    github-org: lfit
+```
+
+## Config File Management
+
+### Logs
+
+The logs account requires a Maven Settings file created called
+**jenkins-log-archives-settings** with a server ID of **logs** containing the
+credentials for the logs user in Nexus.
+
 ## Deploying ci-jobs
 
 The CI job group contains multiple jobs that should be deployed in all LF
@@ -42,6 +119,8 @@ Jenkins infra. The minimal configuration needed to deploy the ci-management
 jobs is as follows which deploys the **{project-name}-ci-jobs** job group as
 defined in **lf-ci-jobs.yaml**.
 
+ci-management.yaml:
+
 ```
 - project:
     name: ci-jobs
@@ -56,7 +135,7 @@ defined in **lf-ci-jobs.yaml**.
 
 Required parameters:
 
-**project**: is the project repo as defined in Gerrit.
+**project**: is the project repo as defined in source control.
 **project-name**: is a custom name to call the job in Jenkins.
 **build-node**: is the name of the builder to use when building (Jenkins label).
 
@@ -64,3 +143,56 @@ Optional parameters:
 
 **branch**: is the git branch to build from.
 **jjb-version**: is the version of JJB to install in the build minion.
+
+## Deploying Python jobs
+
+We provide the following Python jobs templates:
+
+### {project-name}-tox-verify-{stream}
+
+This job can be used to call python-tox to run builds and tests. The most common
+usage of this job is to run the Coala linter against projects.
+
+```
+- project:
+    name: builder
+    jobs:
+        - '{project-name}-tox-verify-{stream}'
+
+    project-name: builder
+    project: releng/builder
+    build-node: centos7-java-builder-2c-4g
+    stream: master
+```
+
+Required parameters:
+
+**project**: is the project repo as defined in source control.
+**project-name**: is a custom name to call the job in Jenkins.
+**build-node**: is the name of the builder to use when building (Jenkins label).
+**stream**: typically `master` or matching whatever branch is being built. This
+            is a useful keywords to map a release codename to a branch. For
+            example OpenDaylight uses this to map stream=carbon to
+            branch=stable/carbon.
+
+Optional parameters:
+
+**branch**: is the git branch to build from.
+**jjb-version**: is the version of JJB to install in the build minion.
+**tox-dir**: directory containing tox.ini file (default: '')
+**tox-envs**: tox environments to run (default: '')
+
+## Archiving logs in Jobs
+
+There are 2 ways supported for archiving log information:
+
+1) Job creates $WORKSPACE/archives directory and places logs there
+
+In this method the entire archives directory will be pushed to the log server
+in the same structure as configured in the archives directory.
+
+2) Via job variable ARCHIVE_ARTIFACTS using globstar patterns.
+
+In this method a job can define a globstar for example ``**/*.log`` which then
+causes the archive script to do a globstar search for that pattern and archives
+any files it finds matching.