X-Git-Url: https://gerrit.linuxfoundation.org/infra/gitweb?a=blobdiff_plain;f=README.md;h=7531926c9c7c310e1c390bbe1b7bd80a9429dbf4;hb=refs%2Fheads%2Fv0.21.x;hp=61b8739fec0fc80005ed22665afb7fd06a7acf3c;hpb=8953b02df2879d6ca43dcb7a5bf9f309665661bb;p=releng%2Fglobal-jjb.git diff --git a/README.md b/README.md index 61b8739f..7531926c 100644 --- a/README.md +++ b/README.md @@ -1,189 +1,9 @@ # 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. - -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 - -**Required** - -- Config File Provider -- Description Setter -- Gerrit Trigger -- Post Build Script -- SSH Agent -- Workspace Cleanup - -**Optional** - -- Mask Passwords -- MsgInject -- 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 is one more parameter which -will need to be placed in the defaults.yaml - -**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. +- Documentation