Chore: Upgrade Jenkins-job-builder to 6.3.0
[releng/global-jjb.git] / README.md
index 63cdff3..003d7ce 100644 (file)
--- a/README.md
+++ b/README.md
 # Global JJB
 
-The purpose of this repository is store generically define reusable JJB
-templates that can be deployed across LF projects.
+Global-JJB is a library project containing reusable Jenkins Job Builder
+templates. Developed for LFCI to deploy management Jenkins jobs to an LF
+managed Jenkins instance, there are other jobs defined which may be helpful
+to projects that use the same build technology. The intention is to help
+projects save time from having to define their own job templates.
 
-The following variables are necessary to be defined in the Jenkins server as
-global environment variables as scripts in this repo expect these variables to
-be available.
+## Guides
 
-For example:
+### [Install](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/)
 
-```
-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 configuration](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/install.html#jenkins-configuration)
 
-## Jenkins Plugin Requirements
+-   [ci-management](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/install.html#ci-management)
 
-**Required**
+-   [Deploy ci-jobs](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/install.html#deploy-ci-jobs)
 
-- Config File Provider
-- Description Setter
-- Gerrit Trigger
-- Post Build Script
-- SSH Agent
-- Workspace Cleanup
+-   [Deploy packer-jobs](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/install.html#deploy-packer-jobs)
 
-**Optional**
+### [Configuration](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/configuration.html)
 
-- Mask Passwords
-- MsgInject
-- OpenStack Cloud
-- Timestamps
+-   [defaults.yaml](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/configuration.html#defaults-yaml)
 
-## Installing global-jjb
+-   [Jenkins Files](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/configuration.html#jenkins-files)
 
-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.
+-   [Jenkins CI Jobs](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/configuration.html#jenkins-ci-jobs)
 
-```
-    # Choose a global-jjb version to install
-    GLOBAL_JJB_VERSION=v0.1.0
+-   [Log Archiving](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/configuration.html#log-archiving)
 
-    # 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
+### [Best Practices](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html)
 
-    # Checkout the version of global-jjb you wish to deploy.
-    cd global-jjb
-    git checkout $GLOBAL_JJB_VERSION
+-   [JJB YAML Layout](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#jjb-yaml-layout)
 
-    # Commit global-jjb version to the ci-management repo.
-    cd ../..
-    git add jjb/global-jjb
-    git commit -sm "Install global-jjb $GLOBAL_JJB_VERSION"
+-   [Passing parameters to shell scripts](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#passing-parameters-to-shell-scripts)
 
-    # Push the patch to ci-management for review
-    git review
-```
+-   [Shell scripts](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#shell-scripts)
 
-## Parameters stored in defaults.yaml
+-   [Usage of config-file-provider](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#usage-of-config-file-provider)
 
-There are a few project specific parameters that should be stored in the
-ci-management repo's defaults.yaml file.
+-   [Preserving Objects in Variable References](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#preserving-objects-in-variable-references)
 
-**gerrit-server-name**: The name of the Gerrit Server as defined in Gerrit
-Trigger global configuration.
+-   [Using single quotes around variables](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#using-single-quotes-around-variables)
 
-**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
-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
-
-    jobs:
-      - '{project-name}-ci-jobs'
-
-    project: ci-management
-    project-name: ci-management
-    build-node: centos7-basebuild-2c-1g
-```
-
-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).
-
-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.
-
-## Appendix
-
-### ShellCheck
-
-If ShellCheck is being used to lint global-jjb or any projects that include
-global-jjb as part of their project (common with ci-management repos) then
-a minimum version of ShellCheck 0.4.x is required as the shell scripts in
-this repo uses annotations that were introduced in 0.4..
+-   [Variable expansion and Defaults](https://docs.releng.linuxfoundation.org/projects/global-jjb/en/latest/best-practices.html#variable-expansion-and-defaults)
 
+## For Detail Documentation [Global-JJB](http://docs.releng.linuxfoundation.org/projects/global-jjb)