lf-releng-global-jjb Release v dev3+b5f41d5
|
|
- Easter Pope
- 5 years ago
- Views:
Transcription
1 lf-releng-global-jjb Release v dev3+b5f41d5 Jan 28, 2019
2
3 Contents 1 Release Notes 3 2 Guides Release Notes Install Configuration Best Practices Glossary Appendix Global JJB Templates C/C++ Jobs CI Jobs Global Macros Maven Jobs NodeJS Jobs OpenStack Heat Python Jobs ReadTheDocs Jobs Jenkins Views Indices and tables 75 i
4 ii
5 Linux Foundation Release Engineering Global Jenkins Job Builder (JJB) Documentation. 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. Contents 1
6 2 Contents
7 CHAPTER 1 Release Notes Global JJB provides regular releases. The release notes for all releases are available in the relnotes directory in Git. 3
8 4 Chapter 1. Release Notes
9 CHAPTER 2 Guides 2.1 Release Notes v Bug Fixes Extend ${JOB_NAME} to include {java-version} parameter to support jobs to build with multiple versions of openjdk{8,11} v New Features Add a puppet-verify job to lf-ci-jobs. This job will perform Puppet linting on the specified repository. - project: name: lf-infra-puppet-mymodule project-name: lf-infra-puppet project: puppet/modules/mymodule jobs: - gerrit-puppet-verify Bug Fixes maven-fetch-metadata.sh was not respecting the -f (for file path) flag in MAVEN_PARAMS, causing lfmaven-merge jobs that utilize this flag to fail. It will now set a path based on this flag if it is present, or default to the current working directory. Check openjdk $VERSION before setting $JAVA_HOME. This enables jobs to pass openjdk10 or openjdk11 on CentOS 7 images to use the OpenJDK version installed in /opt. 5
10 2.1.3 v Bug Fixes Compress and upload all jjb-verify XML files to Nexus, to ease out the IOPs on cron jobs that manage the logs on Nexus and optimize job performace by ~8 mins. This is because the job generates around ~2.3K XML files (small files) which is uploaded to Nexus in every run of jjb-verify. Doing this is faster as compared to the Nexus Unpack plugin in the Nexus end unpacking the zip file we upload takes longer v Other Notes Update lftools version to v v New Features New lf-stack-create macro allows job-templates to setup a OpenStack Heat stack, useful for spinning up CSIT labs to run integration tests against. Use with the lf-stack-delete macro. Concurrency for the gerrit-jjb-verify job can now be configured by setting the build-concurrent parameter. New macro lf-maven-central is available to deploy artifacts to OSSRH staging for jobs that want to eventually deploy to Maven Central job-template: name: lf-maven-central-macro-test ##################### # Default variables # ##################### mvn-central: true ossrh-profile-id: '' ##################### # Job configuration # ##################### builders: - lf-maven-central: mvn-central: '{mvn-central}' ossrh-profile-id: '{ossrh-profile-id}' The GERRIT_REFSPEC build parameter can now be used to trigger a test build from the Jenkins Sandbox system against a work in progress packer image patch from a GitHub Pull Request. Upgrade Notes lf-stack-delete has been modified to be a companion macro to lf-stack-create in order to cleanup the stack at the end of a job run. It now includes a required parameter openstack-cloud to choose the clouds. 6 Chapter 2. Guides
11 yaml cloud configuration for the project. Existing users of this macro will need to update their job templates accordingly. Requires JJB for the jenkins-sandbox-cleanup job to not fail. Note: Despite the failure if JJB is not available the job will successfully delete all jobs and views, the primary purpose of this job. Bug Fixes RELENG-1450 All view disappears on Jenkins Sandbox after views are deleted. The All view is now recreated after delete-all is run v New Features Add the ability to configure the location of JJB s cache directory for CI jobs. New view-templates project-view, common-view, and csit-view are available for projects to manage Jenkins views through code. To use the project-view template in a project: - project: name: aaa-view views: - project-view project-name: aaa To use the common-view template in a project: - project: name: daily-builds views: - common-view view-name: Periodic view-regex: '.*-periodic-.*' To use the csit-view template in a project: - project: name: csit views: - csit-view view-name: CSIT view-regex: '.*csit.*' - project: name: csit-1node views: (continues on next page) 2.1. Release Notes 7
12 - csit-view (continued from previous page) view-name: CSIT-1node view-regex: '.*-csit-1node-.*' Add support to maven-stage jobs to publish to Maven Central via OSSRH. This is accomplished by adding these 2 new optional parameters to the job configuration. - gerrit-maven-stage: mvn-central: true ossrh-profile-id: 7edbe The openstack-cron job now has the ability to remove images older than a specified age (default: 30). The openstack-cron job now has the ability to remove orphaned servers. The openstack-cron job now has the ability to remove orphaned stacks. The openstack-cron job now has the ability to remove orphaned volumes. lf-infra-gerrit-scm and lf-infra-github-scm now require a submodule-timeout parameter to provide a timeout value (in minutes) for git fetch operations. All job-templates now provide an optional submodule-timeout parameter for git fetch operations, defaulting to 10 minutes. Upgrade Notes Some LF projects are already using a common-view template in their local ci-management repo. This common-view is called project-view in global-jjb so rename all instances of common-view to project-view when upgrading and remove the local common-view view-template definition from cimanagement. The openstack-cron job now requires a new parameter configured jenkins-urls in order to use the job. Any project using the lf-infra-gerrit-scm and lf-infra-github-scm macros in global-jjb should need to add a submodule-timeout value. It is recommended to default this value to 10 since it is the default used by the Jenkins Git Plugin. Bug Fixes The jenkins-init scripts dir is now updated to reflect changes recommended for the v release. We unfortunately missed this critical piece in the v release. Specify refspec to be blank for SCM config on github-maven-merge job. +refs/pull/*:refs/remotes/origin/pr/* causes there to be no merge job triggered. Setting the refspec to New detox version requires tox >= 3.5 and < 4. Instead of explicitly pulling tox, we are now implicitly pulling via detox. ( Other Notes lftools openstack module will now be installed as part of pre-build. The openstack-cron job now runs every hour instead of daily. This is because stack cleanup should happen more regularly. 8 Chapter 2. Guides
13 2.1.7 v New Features Add a new nexus-iq-namespace optional parameter to insert a namespace into Nexus IQ AppID. This is useful for shared Nexus IQ systems where projects might have concern about namespace collision. Note: We recommend when using the namespace to add a trailing - to the value. Eg. odl-, this is to make the namespace look nice for example odl-aaa is the result of namespace odl-, and project name aaa. Add lf-infra-publish-windows. A publisher for use at the end of Windows based job-templates. Bug Fixes Fix packer-verify job to correctly work with clouds.yaml config model implemented in global-jjb v v Bug Fixes jjb-cleanup.sh may be merged with other shell scripts that set -u which causes Jenkins to fail when activating virtualenvs v New Features Add support to the packer-build job to use clouds.yaml for openstack builder configuration rather than through the cloud-env file. This allows us to simplify the template configuration for openstack builders moving forward. New macro lf-sigul-sign-dir available to sign artifacts in a provided directory using Sigul. Usage: - lf-sigul-sign-dir: sign-dir: '$WORKSPACE/m2repo' This macro also requires a boolean variable to SIGN_ARTIFACTS to be set to true to activate the macro. We recommend the job-template that uses this macro to define it in the job parameters section. Example: - bool: name: SIGN_ARTIFACTS default: '{sign-artifacts}' description: Use Sigul to sign artifacts. Add Sigul signing support to the maven-staging job. sign-artifacts: true. Example: To activate Sigul signing make sure to set 2.1. Release Notes 9
14 - project: name: abc jobs: - gerrit-maven-stage sign-artifacts: true Add lf-stack-delete macro to delete an openstack heat stack at the end of the job. This macro requires a parameter defined in the job named STACK_NAME containing the name of the stack to delete. Add lf-infra-wrappers-windows to handle Windows specific wrapper configuration. Refactor lf-infra-wrappers to be for Linux systems and split out the non-linux specific components into a new lf-infra-wrappers-common. This change is seamless for current users of lf-infra-wrappers. Upgrade Notes Upgrade to global-jjb v before performing this upgrade. This ensures that jjb-verify job pulls in a regex fix that will allow it to verify the v upgrade. Global JJB now has non-jjb YAML configuration and requires action on the ci-management repo when upgrading to this version of Global JJB to prevent JJB from picking up these YAMLs as config. Follow the instructions below BEFORE upgrading globall-jjb: cd <git-root> git mv jjb/global-jjb global-jjb mkdir jjb/global-jjb ln -s../../global-jjb/shell jjb/global-jjb/shell ln -s../../global-jjb/jjb jjb/global-jjb/jjb git add jjb/global-jjb git commit -sm "Prepare repo for global-jjb v0.25.0" Minimum packer version is now required for the packer-build job. lf-infra-packer-build macro now requires 2 new variables to be passed. 1. openstack: Set to true if template is built using the openstack builder 2. openstack-cloud: The clouds.yaml cloud to use when running packer build Deprecation Notes lftools-install.sh is deprecated and will be removed in a future release. We recommend installing lftools via pip install user lftools to install instead of using this script. Bug Fixes Fix pip install pip setuptools which seems to fail against the Nexus 3 proxy. Run them as separate calls to make things happier. jjb-verify will now test on all changes in the jjb directory. The previous pattern was too specific and sometimes missed verifying patches that should be verified. Replace jjb-verify to test on all changes in the shell/* directory. 10 Chapter 2. Guides
15 Fix the lftools virtualenv workaround we had to put in place in the tox-verify job by using pip install --user for global tool installs. Fix jobs failing with UNSTABLE build due to install pip==18.0 missing. This change moves all the jobs to using lf-infra-pre-build to install lftools via user command. Use python -m pip to ensure that we are using the pip version that was installed rather than the OS wrapper version of pip. Fix package listing script in post-builder from causing UNSTABLE build due to difference in the two files being compared. Fix RTD job failing to find PBR install. Other Notes Update lftools to ~ Install global-jjb requires configuration in 2 places; Jenkins and the ci-management repository Jenkins configuration On the Jenkins side, we need to prep environment variables and plugins required by the jobs in global-jjb before we can start our first jobs. Install Jenkins plugins Install the following required Jenkins plugins and any optional ones as necessary by the project. Required Config File Provider Description Setter Environment Injector Plugin Git plugin Post Build Script SSH Agent Workspace Cleanup Required for Gerrit connected systems Gerrit Trigger Required for GitHub connected systems GitHub plugin GitHub Pull Request Builder Optional 2.2. Install 11
16 Mask Passwords MsgInject OpenStack Cloud Timestamper Environment Variables The Jenkins Configuration Merge job can manage environment variables job but we must first bootstrap them in Jenkins so that the job can run and take over. Required: JENKINS_HOSTNAME=jenkins092 NEXUS_URL= SILO=production SONAR_URL= Gerrit: GERRIT_URL= GitHub: GIT_URL= Note: Use GIT_CLONE_URL for GitHub projects as this will be different from the URL used in the properties configuration. Optional: LOGS_SERVER= Steps 1. Navigate to 2. Configure the environment variables as described above 3. Configure the same environment variables in the ci-management repo ci-management ci-management is a git repository containing JJB configuration files for Jenkins Jobs. Deploying Global JJB here as a submodule allows us easy management to install, upgrade, and rollback changes via git tags. Install Global JJB as follows: 1. Install Global JJB GLOBAL_JJB_VERSION=v0.1.0 git submodule add cd global-jjb (continues on next page) 12 Chapter 2. Guides
17 git checkout $GLOBAL_JJB_VERSION cd.. git add jjb/global-jjb (continued from previous page) # Setup symlinks mkdir jjb/global-jjb ln -s../../global-jjb/shell jjb/global-jjb/shell ln -s../../global-jjb/jjb jjb/global-jjb/jjb git add jjb/global-jjb git commit -sm "Install global-jjb $GLOBAL_JJB_VERSION" Note: We are purposely using github for production deploys of global-jjb so that uptime of LF Gerrit does not affect projects using global-jjb. In a test environment we can use global-jjb if desired. 2. Setup jjb/defaults.yaml Create and configure the following parameters in the jjb/defaults.yaml file as described in the defaults.yaml configuration docs <defaults-yaml>. Once configured commit the modifications: git add jjb/defaults.yaml git commit -sm "Setup defaults.yaml" 3. Push patches to Gerrit / GitHub using your favourite push method At this point global-jjb installation is complete in the ci-management repo and is ready for use Deploy ci-jobs The CI job group contains jobs that should deploy in all LF Jenkins infra. The minimal configuration to deploy the {project-name}-ci-jobs job group as defined in lf-ci-jobs.yaml is as follows: jjb/ci-management/ci-management.yaml: - project: name: ci-jobs jobs: - '{project-name}-ci-jobs' project: ci-management project-name: ci-management build-node: centos7-builder-2c-1g Required parameters: project The project repo as defined in source control. project-name A custom name to call the job in Jenkins. build-node The name of the builder to use when building (Jenkins label). Optional parameters: 2.2. Install 13
18 branch The git branch to build from. (default: master) jjb-version The version of JJB to install in the build minion. (default: <defined by the global-jjb project>) Deploy packer-jobs The packer job group contains jobs to build custom minion images. The minimal configuration needed to deploy the packer jobs is as follows which deploys the {project-name}-packer-jobs job group as defined in lf-ci-jobs.yaml. jjb/ci-management/packer.yaml: - project: name: packer-builder-jobs jobs: - '{project-name}-packer-jobs' project: ci-management project-name: ci-management branch: master build-node: centos7-builder-2c-1g platforms: - centos - ubuntu templates: builder - project: name: packer-docker-jobs jobs: - '{project-name}-packer-jobs' project: ci-management project-name: ci-management branch: master build-node: centos7-builder-2c-1g templates: docker platforms: - centos - ubuntu Required parameters: project The project repo as defined in source control. project-name A custom name to call the job in Jenkins. build-node The name of the builder to use when building (Jenkins label). platforms A list of supported platforms. templates A list of templates to build. We recommend setting one template per project section so that we can control which platforms to build for specific templates. Optional parameters: branch The git branch to build from. (default: master) 14 Chapter 2. Guides
19 packer-version The version of packer to install in the build minion, when packer is not available. (default: <defined by global-jjb>) 2.3 Configuration defaults.yaml This file lives in the ci-management repo typically under the path jjb/defaults.yaml. The purpose of this file is to store default variable values used by global-jjb templates. Required jenkins-ssh-credential The name of the Jenkins Credential to use for ssh connections. (ex: jenkins-ssh) lftools-version Version of lftools to install. Can be a specific version like or a PEP-440 definition For example <1.0.0 or >=1.0.0,< mvn-site-id Maven Server ID from settings.xml containing the credentials to push to a Maven site repository. mvn-staging-id Maven Server ID from settings.xml containing the credentials to push to a Maven staging repository. Gerrit required parameters: gerrit-server-name The name of the Gerrit Server as defined in Gerrit Trigger global configuration. (ex: Primary) GitHub required parameters: git-url Set this to the base URL of your GitHub repo. In general this should be If you are using GitHub Enterprise, or some other GitHub-style system, then it should be whatever your installation base URL is. This sets a job property that GitHub Pull Request Builder requires to work. Note that this is the web url to your project: (eg. \protect\t1\textdollarproject) git-clone-url This is the clone prefix used by GitHub jobs. Set this to either the same base url as git-url, or to git@github.com: including the trailing :. Determined by your clone method (https or git). github-org The name of the GitHub organization interpolated into the scm config. github_pr_org The name of the GitHub organization. All members of this organization will be able to trigger jobs. github_pr_whitelist List of GitHub members you wish to be able to trigger jobs. github_pr_admin_list List of GitHub members that will have admin privileges on the jobs. Example Gerrit Infra: - defaults: name: global # lf-infra defaults jenkins-ssh-credential: jenkins-ssh gerrit-server-name: OpenDaylight lftools-version: '<1.0.0' mvn-site-id: opendaylight-site mvn-staging-id: opendaylight-staging 2.3. Configuration 15
20 Example GitHub Infra: - defaults: name: global # lf-infra defaults jenkins-ssh-credential: jenkins-ssh github-org: lfit github_pr_whitelist: - jpwku - tykeal - zxiiro github_pr_admin_list: - tykeal lftools-version: '<1.0.0' mvn-site-id: opendaylight-site mvn-staging-id: opendaylight-staging Jenkins Files global-jjb makes use of the Jenkins Config File Provider plugin to provide some default configurations for certain tools. This section details the files to define in Jenkins Manage Files configuration. npmrc This file contains default npmrc configuration and lives in $HOME/.npmrc. Documentation for npmrc is available via the npm project. Required This file MUST exist. An empty file is acceptable if a proxy is not available for the project. type Custom file Create a Custom file with contents: registry = clouds-yaml Needed by openstack client and packer to fetch OpenStack credentials and configuration. This file is Open- Stack s clouds.yaml file. Optional Needed for jobs that use openstack client. packer if building against OpenStack infra. type Custom file Create a Custom file with contents: clouds: vex: auth: project_name: OS_PROJECT_NAME username: OS_USERNAME password: OS_PASSWORD auth_url: ' user_domain_name: Default (continues on next page) 16 Chapter 2. Guides
21 project_domain_name: Default region_name: ca-ymq-1 (continued from previous page) Warning: If using packer make sure that the clouds.yaml profile configuration is NOT configured. Using profile causes packer to look for another file called clouds-public.yaml for configuration. pipconf This file contains default configuration for the python-pip tool and lives in $HOME/.config/pip/pip.conf. Documentation for pip.conf is available via the pip project. Required This file MUST exist. An empty file is acceptable if a proxy is not available for the project. type Custom file Create a Custom file with contents: [global] timeout = 60 index-url = jjbini This file contains the Jenkins Job Builder configuration for CI Jobs. Required This file MUST exist. type Custom file Create a Custom file with contents: [job_builder] ignore_cache=true keep_descriptions=false include_path=.:scripts:~/git/ recursive=true [jenkins] user=jenkins-jobbuilder password= abcdef abcdef url= query_plugins_info=false [production] user=jenkins-jobbuilder password= abcdef abcdef url= query_plugins_info=false [sandbox] user=jenkins-jobbuilder password= abcdef abcdef url= query_plugins_info=false 2.3. Configuration 17
22 The last 2 sections are for the jenkins-cfg job use, they should match the silo names for the respective Jenkins systems, typically production and sandbox. jenkins-log-archives-settings See lf-infra-ship-logs for usage. If not archiving logs then keep this file with default settings, global-jjb needs the file to exist to function. Requires a credential named logs of type Username and Password created in the Jenkins Credentials system. 1. Add Server Credentials 2. Set ServerId to logs 3. Set Credentials to the logs user created in the Credentials System Required This file MUST exist if using log archiving. type Maven settings.xml <?xml version="1.0" encoding="utf-8"?> <settings xmlns=" xmlns:xsi=" xsi:schemalocation=" apache.org/xsd/settings xsd"> </settings> Note: This example is the default boilerplate generated by Jenkins with the comments stripped out. We can also use the default generated by Jenkins without modifying it. packer-cloud-env Cloud environment configuration variables for Packer jobs. whichever clouds packer jobs are using. Required This file MUST exist to use packer jobs. type Json file These can contain credentials and configuration for { } "cloud_auth_url": " "cloud_tenant": "TENANT_ID", "cloud_user": "CLOUD_USERNAME", "cloud_pass": "CLOUD_PASSWORD", "cloud_network": "CLOUD_NETWORK", "ssh_proxy_host": "" Jenkins CI Jobs jenkins-cfg-merge This job manages Jenkins Global configuration. Refer to the CI Documentation for job configuration details. 18 Chapter 2. Guides
23 2.3.4 Log Archiving 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. 2.4 Best Practices JJB YAML Layout Note: While some of this applies to the Global JJB project other recommendations are generally useful to projects that might be defining JJB templates. The Global JJB project is a useful example project to look at so we recommend referring to the Maven job definitions as an example as you read the documentation below: We recommend sectioning off the template into 3 general sections in order: 1. Job Groups (optional) 2. Common Functions 3. Job Template Definitions In section 1) not all configurations need this so is an optional section. Job groups are useful in cases where there are jobs that are generally useful together. For example the OpenDaylight uses a lot of Merge and Verify job combinations so every new project will want both job types defined in their project. In section 2) we want to define all common functions (anchors, aliases, macros) that are generally useful to all jobs in the file. This allows job template developers to look at the top of the file to see if there are useful functions already defined that they can reuse. In section 3) we can declare our job definitions. In the Global JJB project we create Gerrit and GitHub versions of the jobs so the format we use here might look strange at first but is well layed out for code reuse if we need to define 2 or more versions of the same job template for different systems. We will define this in more detail in the next section. Job Template Layout 1. Comment of Job Template Name 2. Macro containing build definition of the job a. Macro named after job b. Complete documentation of the job parameters c. Default parameters defined by the job d. Job configuration 3. job-template definition containing build triggers In section 1) we need to declare a in large comment text to identify the job section. In section 2) we declare the actual job definition. This is so that we have a single macro that we call in all the real job-template sections that is reusable and not duplicating any code. First we declare the macro as the job name. Then in 2.b) we provide the complete documentation of the job parameters this is so that we can link users of the job to this file and they can understand fully what options they can configure for this particular job. Then we define defaults for any parameters that are optional. The last section we define the job configuration which completes the macro Best Practices 19
24 In section 3) we declare the actual job-template. Because of all the preparations above job template definitions should be small and simple. It needs to define the scm and job triggers. The Global JJB project needs to support both Gerrit and GitHub versions of the same job so the job definitions there have 2 templates for each job defined Passing parameters to shell scripts There are 2 ways to pass parameters into scripts: 1. JJB variables in the format {var} 2. Environment variables in the format ${VAR} We recommend avoiding using method 1 (Pass JJB variables) into shell scripts and instead always use method 2 (Environment variables). This makes troubleshooting JJB errors easier and does not require escaping curly braces. This method requires 3 steps: 1. Declare a parameter section or inject the variable as properties-content. 2. Invoke the shell script with include-raw-escape instead of include-raw. 3. Use the shell variable in shell script. The benefit of this method is that parameters will always be at the top of the job page and when clicking the Build with Parameters button in Jenkins we can see the parameters before running the job. We can review the parameters retroactively by visiting the job parameters page job/lastsuccessfulbuild/parameters/. Injecting variables as properties-content makes the variable local to the specific macro, while declaring it as parameter makes the variable global. Note: When a macro which invokes a shell script has no JJB parameters defined!include-raw-escape will insert extra curly braces, in such cases its recommended to use!include-raw Shell scripts When developing shell scripts for JJB we recommend to create shell scripts as a separate file instead of inlining in YAML. This way we can ensure that the ShellCheck linter can catch potential issues with the scripts. When writing the script itself, we recommend to redeclare all expected inputs at the top of the file using lowercase variable names before setting set -u after the inputs section. This ensures that all variables the script expects are at the top of the file which is useful for others to review and debug the script at a later stage. The set -u configuration before the start of the script code ensures that we catch any of these undeclared variables at the top of the file. Example: #!/bin/bash # Inputs tox_dir="${tox_dir:-$workspace}" tox_envs="${tox_envs:-}" # Script start set -eux -o pipefail #... script code goes here 20 Chapter 2. Guides
25 2.4.4 Usage of config-file-provider When using the config-file-provider plugin in Jenkins to provide a config file. We recommend using a macro so that we can configure the builder to remove the config file as a last step. This ensures that credentials do not exist on the system for longer than it needs to. ship-logs example: - builder: name: lf-ship-logs builders: - config-file-provider: files: - file-id: jenkins-log-archives-settings variable: SETTINGS_FILE - shell:!include-raw: -../shell/logs-get-credentials.sh - shell:!include-raw: -../shell/logs-deploy.sh - shell:!include-raw: -../shell/logs-clear-credentials.sh - description-setter: regexp: '^Build logs:.*' In this example the script logs-deploy requires a config file to authenticate with Nexus to push logs up. We declare a macro here so that we can ensure that we remove credentials from the system after the scripts complete running via the logs-clear-credentials.sh script. This script contains 3 basic steps: 1. Provide credentials via config-file-provider 2. Run logs-deploy.sh 3. Remove credentials provided by config-file-provider Preserving Objects in Variable References JJB has an option to preserve a data structure object when you want to pass it to a template. org/infra/jenkins-job-builder/definition.html#variable-references One thing that is not explicitly covered is the format of the variable name that you pass the object to. When you use the {obj:key} notation to preserve the original data structure object, it will not work if the variable name has a dash - in it. The standard that we follow, and recommend, is to use an underscore _ instead of a dash. Example:.. literalinclude:: _static/github-pr-trigger.example In the above example note the use of underscores in github_pr_whitelist, github_pr_admin_list, and github_included_regions Using single quotes around variables Its recommended to use single quotes around JJB variables {variable}-field during variable substitution or when using a variable in a string field, in other cases its recommended to drop the single quotes. Example: 2.4. Best Practices 21
26 - builder: name: lf-user-logs builders: - inject: properties-content: 'HOME={user-home}' - build-file: settings: '{settings-file}' file-version: '{file-version}' Variable expansion and Defaults JJB has a concept called Defaults which is what JJB will replace a variable with if unset. Variables can configure dynamic content in job-template sections and allow certain options in these sections to be configurable. The section that expands Defaults is Job Templates no other sections will expand a default. This documentation will explain how variables and defaults expansion works and which take precedence in JJB s variable expansion logic for the following configuration sections. macro job-template project default Macro sections Macro sections can contain variables but do NOT support default values getting filled in both at the macro definition level and at the defaults configuration level. Macros and Job Templates can use Macros but any variables defined in a Macro needs to pass a value or a new variable redefined in the Job Template if you want to pass on the configuration. So for example if you have a macro that has a {msg} variable: Example: - builder: name: echo-msg builders: - shell: "echo {msg}" Any downstream job-templates or macros that use this macro MUST pass in a msg: Hello definition or redefine the msg variable msg: {msg}. Job Template sections Job Template sections can use defaults in two ways. 1. Configure the message: - job-template: name: echo-hello-world builders: - echo-msg: msg: 'Hello World' 22 Chapter 2. Guides
27 2. Re-define {msg} variable - job-template: name: echo-message builders: - echo-msg: msg: '{message}' In option 2, we redefine the variable msg as {message} which a user of the job-template can now pass into the job their own custom message which is different than option 1, where we set a static message to pass in. We purposely redefined the {msg} to {message} here to show that you do not need to redefine it with the same name but we could have used the same name {msg} in the template too if we wanted to keep it the same. Job Templates can also default a default variable for the variables it defines. Example: - job-template: name: echo-message message: 'Hello World' builders: - echo-msg: msg: '{message}' This creates a job template variable called {message} which will default to Hello World if the user of the template does not explicitly pass in a message. We should be aware of 2 Defaults concepts: 1. Default as defined in the job-template 2. Default as defined in a defaults configuration (typically defaults.yaml) In this case there is a default {message} set in the job-template. JJB will use this default if the user (project section) does not declare a {message}. If we do not declare a default in the job-template then JJB will fallback to checking the defaults configuration. This means that the precedence of defaults is as follows: 1. User-provided 2. Job Template 3. Defaults.yaml Project sections Project sections define real jobs and pass in variables as necessary. Projects sections do NOT expand defaults.yaml. So you cannot configure a setting with {var} in here and expect defaults.yaml to fill it in for you. Define required configuration here. Example: - project name: foo jobs: - 'echo-message' message: 'I am foo' 2.4. Best Practices 23
28 Defaults sections Defaults sections are the absolute last thing JJB checks if a variable is not configured in a job-template and user did not pass in the variable. JJB will fill in whatever is in the defaults configuration. Variable expansion order of precedence seems to be: 1. job-group section definition 2. project section definition 3. job-template variable definition 4. defaults.yaml variable definition Note: Defaults set variables in job-templates and are NOT used in Macros. global-jjb should not provide job-group definitions and leave it up to users of global-jjb to create their own as a jobgroup as a variable defined in a job group the highest precedence. Global JJB should strive to be purely a job-template and macro library for downstream consumers. Final thoughts For any Basic Job Configuration for example concurrent, jdk, node etc... we cannot set defaults with the same name as JJB will not expand them. To use node we need to give the variable for that setting a different name such as build-node instead, if we want JJB to perform expansion for those settings. This issue affects top level job configuration, it does not appear to affect items below the top level such as calling a builder, wrapper or parameter. 2.5 Glossary ciman Short for ci-management. ci-management Refers to the SCM repository containing the JJB configuration files. In most LF Projects this is the repository named ci-management, but is releng/builder in the OpenDaylight project and releng in the OPNFV project. JJB Short for Jenkins Job Builder (JJB) a tool used to convert YAML definitions into XML as a way to define Jenkins job configuration. 2.6 Appendix ShellCheck When using ShellCheck to lint global-jjb or any projects that include global-jjb as part of their project (common with ci-management repos) then we require version 0.4.x of ShellCheck installed on the build vms. This version introduces annotations used by shell scripts in this repo. 24 Chapter 2. Guides
29 CHAPTER 3 Global JJB Templates Job template code is in the jjb/ directory but documentation is in the docs/jjb/ directory of this project. 3.1 C/C++ Jobs Job Templates CMake Stage Stage job which runs cmake && make && make install and then packages the project into a tar.xz tarball to produce a release candidate. Template Names {project-name}-cmake-stage-{stream} gerrit-cmake-stage github-cmake-stage Comment Trigger stage-release Required parameters build-node The node to run build on. jenkins-ssh-credential Credential to use for SSH. (Configure in defaults.yaml) nexus-group-id The Maven style Group ID for the namespace of the project in Nexus. staging-profile-id The unique Nexus Staging Profile ID for the project. Contact your infra admin if you do not know it. Optional parameters branch Git branch to fetch for the build. (default: master) build-days-to-keep Days to keep build logs in Jenkins. (default: 7) 25
30 build-dir Directory to build the project in. (default: $WORKSPACE/target) build-timeout Timeout in minutes before aborting build. (default: 60) cmake-opts Parameters to pass to cmake. (default: ) git-url URL clone project from. (default: $GIT_URL/$PROJECT) install-prefix CMAKE_INSTALL_PREFIX to use for install. (default: $BUILD_DIR/output) install-prefix: #!/bin/bash echo "Hello World." Listing 1: Example make-opts Parameters to pass to make. (default: ) pre-build Shell script to run before performing build. Useful for setting up dependencies. (default: ) stream Keyword that to represent a release code-name. Often the same as the branch. (default: master) submodule-recursive Whether to checkout submodules recursively. (default: true) submodule-timeout Timeout (in minutes) for checkout operation. (default: 10) version (default: ) Project version to stage release as. There are 2 methods for using this value: 1. Defined explicitly here. 2. Leave this value blank and set /tmp/artifact_version Use method 2 in conjunction with pre-build configuration to generate the artifact_version automatically from files in the project s repository. For example with pre-build script: #!/bin/bash MAJOR_VERSION="$(grep 'set(ocio_version_major' CMakeLists.txt awk '{{print $NF}}' awk -F')' '{{print $1}}')" MINOR_VERSION="$(grep 'set(ocio_version_minor' CMakeLists.txt awk '{{print $NF}}' awk -F')' '{{print $1}}')" PATCH_VERSION="$(grep 'set(ocio_version_patch' CMakeLists.txt awk '{{print $NF}}' awk -F')' '{{print $1}}')" echo "${{MAJOR_VERSION}}.${{MINOR_VERSION}}.${{PATCH_VERSION}} " > /tmp/artifact_version CMake Verify Verify job which runs cmake && make && make install to test a project build.. Template Names {project-name}-cmake-verify-{stream} gerrit-cmake-verify github-cmake-verify Comment Trigger recheck reverify 26 Chapter 3. Global JJB Templates
31 Required parameters build-node The node to run build on. jenkins-ssh-credential Credential to use for SSH. (Configure in defaults.yaml) Optional parameters branch Git branch to fetch for the build. (default: master) build-days-to-keep Days to keep build logs in Jenkins. (default: 7) build-dir Directory to build the project in. (default: $WORKSPACE/target) build-timeout Timeout in minutes before aborting build. (default: 60) cmake-opts Parameters to pass to cmake. (default: ) git-url URL clone project from. (default: $GIT_URL/$PROJECT) install-prefix CMAKE_INSTALL_PREFIX to use for install. (default: $BUILD_DIR/output) install-prefix: #!/bin/bash echo "Hello World." Listing 2: Example make-opts Parameters to pass to make. (default: ) pre-build Shell script to run before performing build. Useful for setting up dependencies. (default: ) stream Keyword that to represent a release code-name. Often the same as the branch. (default: master) submodule-recursive Whether to checkout submodules recursively. (default: true) submodule-timeout Timeout (in minutes) for checkout operation. (default: 10) gerrit_verify_triggers Override Gerrit Triggers. gerrit_trigger_file_paths Override file paths which to filter which file modifications will trigger a build. 3.2 CI Jobs Job Groups Job groups are a great tool to configure categories of jobs together at the same time. Below the example are some starting point job-groups but we recommend creating your own to ensure that the jobs configured reflect the project s needs. An example project: - job-group: name: odl-maven-jobs jobs: - gerrit-maven-clm (continues on next page) 3.2. CI Jobs 27
32 - gerrit-maven-merge - gerrit-maven-release - gerrit-maven-verify - gerrit-maven-verify-dependencies: build-timeout: 180 (continued from previous page) mvn-version: mvn35 - project: name: aaa jobs: - odl-maven-jobs In this example we are using the job-group to assign a list of common jobs to the aaa project. The job-group also hardcodes mvn-version to mvn35 and build-timeout to 180 for all projects using this job-group. A benefit of this method is for example disabling entire category of jobs by modifying the job-group, insert disable-job: true parameter against the jobs to disable. Below is a list of CI job groups: job-group: name: '{project-name}-ci-jobs' jobs: - gerrit-jenkins-cfg-merge - gerrit-jenkins-sandbox-cleanup - gerrit-jjb-deploy-job - gerrit-jjb-merge - gerrit-jjb-verify - job-group: name: '{project-name}-github-ci-jobs' jobs: - github-jenkins-cfg-merge - github-jenkins-sandbox-cleanup - github-jjb-deploy-job - github-jjb-merge - github-jjb-verify - job-group: name: '{project-name}-info-yaml-jobs' jobs: - gerrit-info-yaml-verify - job-group: name: '{project-name}-github-info-yaml-jobs' jobs: - github-info-yaml-verify - job-group: name: '{project-name}-packer-jobs' (continues on next page) 28 Chapter 3. Global JJB Templates
33 jobs: - gerrit-packer-merge - gerrit-packer-verify (continued from previous page) - job-group: name: '{project-name}-github-packer-jobs' jobs: - github-packer-merge - github-packer-verify Macros lf-infra-jjb-parameters Required Parameters jjb-cache Location of Jenkins Job Builder (JJB) cache used for jjb jobs. jjb-version Version of Jenkins Job Builder (JJB) to install and use in the jjb jobs. lf-jenkins-cfg-clouds Deploys Jenkins Cloud configuration read from the jenkins-clouds directory in ci-management repositories. Note: Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style config definitions for production and sandbox systems. Required Parameters jenkins-silos Space-separated list of Jenkins silos to update configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini lf-jenkins-cfg-global-vars Manages the Global Jenkins variables. This macro will clear all exist macros in Jenkins and replaces them with the ones defined by the ci-management/jenkins-config/global-vars-silo.sh script. Note: Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style config definitions for production and sandbox systems. Required parameters jenkins-silos Space-separated list of Jenkins silos to update configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini lf-infra-jjbini Provides jenkins_jobs.ini configuration for Jenkins CI Jobs 29
34 lf-infra-jjbini-sandbox Provides jenkins_jobs.ini configuration for Jenkins sandbox. Todo: This needs to be consolidated into lf-infra-jjbini when JJB 2.0 is available lf-packer-common Common packer configuration. lf-packer-file-paths Gerrit file-paths for packer jobs. lf-packer-parameters Parameters useful for packer related tasks. Parameters packer-version Version of packer to install / use. (shell: PACKER_VERSION) lf-packer-verify-file-paths Gerrit file-paths for packer verify jobs. lf-puppet-parameters Parameters useful for Puppet related tasks. Parameters puppet-lint-version Version of puppet-lint to install / use. (shell: PUP- PET_LINT_VERSION) Job Templates Gerrit Branch Lock Job submits a patch to lock or unlock a project s branch. Template Names {project-name}-gerrit-branch-lock-{stream} gerrit-branch-lock Comment Trigger lock branch unlock branch 30 Chapter 3. Global JJB Templates
35 Required parameters build-node The node to run build on. jenkins-ssh-credential Credential to use for SSH. (Generally should be configured in defaults.yaml) Optional parameters branch Git branch to build against. (default: master) git-url URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT) stream Keyword that can be used to represent a release code-name. Often the same as the branch. (default: master) submodule-timeout Timeout (in minutes) for checkout operation. (default: 10) gerrit_merge_triggers Override Gerrit Triggers. Jenkins Configuration Merge Jenkins job to manage Global Jenkins configuration. Note: Requires the jjbini file in Jenkins CFP to contain JJB 2.0 style config definitions for production and sandbox systems. Template names {project-name}-jenkins-cfg-merge gerrit-jenkins-cfg-merge github-jenkins-cfg-merge Optional parameters branch Git branch to build against. (default: master) cron How often to run the job on a cron schedule. git-url URL to clone project from. (default: $GIT_URL/$GERRIT_PROJECT) jenkins-silos Space separated list of Jenkins silos to update configuration for as defined in ~/.config/jenkins_jobs/jenkins_jobs.ini (default: production sandbox) Typically this template is automatically pulled in by the {project-name}-ci-jobs job-group and does not need to be explicitly called if the job group is being used. Minimal Example: project: name: jenkins-cfg-merge-minimal-test jobs: - 'gerrit-jenkins-cfg-merge' project-name: ci-management Full Example: 3.2. CI Jobs 31
36 --- - project: name: jenkins-cfg-merge-full-test jobs: - 'gerrit-jenkins-cfg-merge' project-name: builder jenkins-silos: releng sandbox Global Environment Variables Global Environment Variables are managed via the jenkins-config/global-vars-silo.sh file in cimanagement. Replace SILO with the name of the Jenkins silo the variable configuration is for. The format for this file is KEY=value for example: GERRIT_URL= GIT_BASE=git://devvexx.opendaylight.org/mirror/$PROJECT GIT_URL=git://devvexx.opendaylight.org/mirror JENKINS_HOSTNAME=vex-yul-odl-jenkins-2 LOGS_SERVER= NEXUS_URL= ODLNEXUSPROXY= SILO=sandbox SONAR_URL= Cloud Configuration This configuration requires the OpenStack Cloud plugin in Jenkins and is currently the only cloud plugin supported. OpenStack Cloud plugin version supported: Cloud configuration are managed via a directory structure in ci-management as follows: jenkins-config/clouds/openstack/ jenkins-config/clouds/openstack/cattle/cloud.cfg jenkins-config/clouds/openstack/cattle/centos7-builder-2c-2g.cfg jenkins-config/clouds/openstack/cattle/centos7-builder-4c-4g.cfg jenkins-config/clouds/openstack/cattle/centos7-docker-4c-4g.cfg The directory name inside of the openstack directory is used as the name of the cloud configuration. In this case cattle is being used as the cloud name. The cloud.cfg file is a special file used to configure the main cloud configuration in the format KEY=value. Cloud Parameters CLOUD_URL API endpoint URL for Keystone. (default: ) CLOUD_IGNORE_SSL Ignore unverified SSL certificates. (default: false) CLOUD_ZONE OpenStack region to use. (default: ) 32 Chapter 3. Global JJB Templates
37 CLOUD_CREDENTIAL_ID Credential to use for authentication to OpenStack. (default: os-cloud ) INSTANCE_CAP Total number of instances the cloud will allow spin up. (default: null) SANDBOX_CAP Total number of instances the cloud will allow to spin up. This applies to sandbox systems and overrides the INSTANCE_CAP setting. (default: null) Template Parameters Note: In the case of template definitions of a parameter below is not passed the one defined in default clouds will be inherited. IMAGE_NAME The image name to use for this template. (required) HARDWARE_ID OpenStack flavor to use. (required) LABELS Labels to assign to the vm. (default: FILE_NAME) NETWORK_ID OpenStack network to use. (default: ) USER_DATA_ID User Data to pass into the instance. (default: jenkins-init-script) INSTANCE_CAP Total number of instances of this type that can be launched at one time. When defined in clouds.cfg it defines the total for the entire cloud. (default: null) SANDBOX_CAP Total number of instances of this type that can be launched at one time. When defined in clouds.cfg it defines the total for the entire cloud. This applies to sandbox systems and overrides the INSTANCE_CAP setting. (default: null) FLOATING_IP_POOL Floating ip pool to use. (default: ) SECURITY_GROUPS Security group to use. (default: default ) AVAILABILITY_ZONE OpenStack availability zone to use. (default: ) START_TIMEOUT Number of milliseconds to wait for the agent to be provisioned and connected. (default: ) KEY_PAIR_NAME SSH Public Key Pair to use for authentication. (default: jenkins) NUM_EXECUTORS Number of executors to enable for the instance. (default: 1) JVM_OPTIONS JVM Options to pass to Java. (default: ) FS_ROOT File system root for the workspace. (default: /w ) RETENTION_TIME Number of minutes to wait for an idle slave to be used again before it s removed. If set to -1, the slave will be kept forever. (default: 0) CONNECTION_TYPE The connection type for Jenkins to connect to the build minion. Valid options: JNLP, SSH. (default: SSH ) For a live example see the OpenDaylight project jenkins-config directory. releng-builder/tree/master/jenkins-config Troubleshooting Cloud Configuration The directory groovy-inserts contains the groovy script output that is used to push to Jenkins. In the event of a job failure this file can be inspected CI Jobs 33
ci-management Release 1.0.0
ci-management Release 1.0.0 Nov 13, 2018 CI Process 1 Summary 1 2 Finding Help on Hyperledger CI 3 3 Common Job Types 5 4 Verify Jobs 7 5 Merge Jobs 9 6 Release Jobs 11 7 Supported Architectures 13 8
More informationONAP Developer Typical Setup 2017 July ONAP Virtual Developers Event
ONAP Developer Typical Setup 2017 July 24-26 ONAP Virtual Developers Event Gary Wu Daniel Rose Victor Morales Getting Started with ONAP
More informationwithenv Documentation
withenv Documentation Release 0.7.0 Eric Larson Aug 02, 2017 Contents 1 withenv 3 2 Installation 5 3 Usage 7 3.1 YAML Format.............................................. 7 3.2 Command Substitutions.........................................
More informationGarment Documentation
Garment Documentation Release 0.1 Evan Borgstrom March 25, 2014 Contents i ii A collection of fabric tasks that roll up into a single deploy function. The whole process is coordinated through a single
More informationBUILD AND DEPLOY ORACLE SERVICE BUS PROJECTS FROM ORACLE DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE USING THE ORACLE SERVICE BUS PLUG-IN
BUILD AND DEPLOY ORACLE SERVICE BUS PROJECTS FROM ORACLE DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE USING THE ORACLE SERVICE BUS PLUG-IN Kishor Kumar Contents 1. Introduction... 2 2. Prerequisites...
More informationSeven Habits of Highly Effective Jenkins Users
Seven Habits of Highly Effective Jenkins Users What is this talk about? Lessons learned: Maintaining multiple large Jenkins instances. Working on Jenkins itself, and many of its plugins. Seeing customer
More informationBitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)
Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm) Continuous Integration / Continuous Testing Seminary IIC Requirements Java SE Runtime
More informationRed Hat OpenShift Application Runtimes 1
Red Hat OpenShift Application Runtimes 1 Install and Configure the Fabric8 Launcher Tool For Use with Red Hat OpenShift Application Runtimes Last Updated: 2018-03-09 Red Hat OpenShift Application Runtimes
More informationContinuous Integration using Docker & Jenkins
Jenkins LinuxCon Europe 2014 October 13-15, 2014 Mattias Giese Solutions Architect giese@b1-systems.de - Linux/Open Source Consulting, Training, Support & Development Introducing B1 Systems founded in
More informationRed Hat OpenShift Application Runtimes 0.1
Red Hat OpenShift Application Runtimes 0.1 Install and Configure the developers.redhat.com/launch Application on a Single-node OpenShift Cluster For Use with Red Hat OpenShift Application Runtimes Last
More informationSimplified CICD with Jenkins and Git on the ZeroStack Platform
DATA SHEET Simplified CICD with Jenkins and Git on the ZeroStack Platform In the technical article we will walk through an end to end workflow of starting from virtually nothing and establishing a CICD
More informationDCLI User's Guide. Modified on 20 SEP 2018 Data Center Command-Line Interface
Modified on 20 SEP 2018 Data Center Command-Line Interface 2.10.0 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about
More informationTM DevOps Use Case. 2017TechMinfy All Rights Reserved
Document Details Use Case Name TMDevOps Use Case04 First Draft 10 th Dec 2017 Author Reviewed By Amrendra Kumar Pradeep Narayanaswamy Contents Scope... 4 About Customer... 4 Pre-Conditions/Trigger... 4
More informationChange-sets. Basavaraj Karadakal
Change-sets Basavaraj Karadakal (bkrdkl@juniper.net) Development environment Component based development model. Developers spread across multiple sites. Over 800 components. Over 500 repos. Repos nested
More informationDCLI User's Guide. Data Center Command-Line Interface 2.9.1
Data Center Command-Line Interface 2.9.1 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this documentation, submit
More informationDCLI User's Guide. Data Center Command-Line Interface
Data Center Command-Line Interface 2.10.2 You can find the most up-to-date technical documentation on the VMware website at: https://docs.vmware.com/ If you have comments about this documentation, submit
More informationSeven Habits of Highly Effective Jenkins Users. Andrew Bayer Cloudera OSCON Java 2011
Seven Habits of Highly Effective Jenkins Users Andrew Bayer Cloudera OSCON Java 2011 Introduction Who am I? I'm a build guy, with a focus on Java builds. I've been using and working on Jenkins since early
More informationTangeloHub Documentation
TangeloHub Documentation Release None Kitware, Inc. September 21, 2015 Contents 1 User s Guide 3 1.1 Managing Data.............................................. 3 1.2 Running an Analysis...........................................
More informationContinuous Integration, Continuous Deployment and Continuous Testing by HP Codar using ALM and Jenkins
HP Codar Software Version 1.0 Continuous Integration, Continuous Deployment and Continuous Testing by HP Codar using ALM and Jenkins HP Codar (1.0) Page 1 of 24 Contents What is Codar?... 3 Why is Codar
More informationAbout the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit
Gerrit About the Tutorial Gerrit is a web-based code review tool, which is integrated with Git and built on top of Git version control system (helps developers to work together and maintain the history
More informationIndex. Alias syntax, 31 Author and commit attributes, 334
Index A Alias syntax, 31 Author and commit attributes, 334 B Bare repository, 19 Binary conflict creating conflicting changes, 218 during merging, 219 during rebasing, 221 Branches backup, 140 clone-with-branches
More information#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan
Jenkins User Conference Israel #jenkinsconf Managing jenkins with multiple components project Presenter Name Ohad Basan Presenter Company Www.redhat.com July 16, 2014 #jenkinsconf Who am I Ohad Basan CI
More informationNetApp Jenkins Plugin Documentation
NetApp Jenkins Plugin Documentation Release 2.0 Akshay Patil Aug 22, 2017 Contents 1 Contents 3 1.1 Pre-Requisites.............................................. 3 1.2 Configuration...............................................
More informationHandel-CodePipeline Documentation
Handel-CodePipeline Documentation Release 0.0.6 David Woodruff Dec 11, 2017 Getting Started 1 Introduction 3 2 Installation 5 3 Tutorial 7 4 Using Handel-CodePipeline 11 5 Handel-CodePipeline File 13
More informationInfrastructure-as-Code and CI Infrastructure at Open Stack A look at one of the largest CI systems and system administration
Infrastructure-as-Code and CI Infrastructure at Open Stack A look at one of the largest CI systems and system administration Andreas Jaeger Product Manager SUSE aj@suse.com OpenStack Open source software
More informationAnsible Tower Quick Setup Guide
Ansible Tower Quick Setup Guide Release Ansible Tower 2.4.5 Red Hat, Inc. Jun 06, 2017 CONTENTS 1 Quick Start 2 2 Login as a Superuser 3 3 Import a License 4 4 Examine the Tower Dashboard 6 5 The Setup
More informationDevOps examples on NonStop Tools Overview. Cor Geboers, ATC Consultant
DevOps examples on NonStop Tools Overview Cor Geboers, ATC Consultant About me Cor Geboers Senior Consultant in NonStop ATC, based in Belgium 35+ years in IT development and support 25+ years NonStop experience
More informationUser Workspace Management
Access the Interface, page 1 User Management Workspace User Types, page 4 Projects (Admin User), page 5 Users (Admin User), page 9 CML Server (Admin User), page 11 Connectivity, page 30 Using the VM Control
More informationThe OpenStack Project Continuous Integration System. Elizabeth K.
The OpenStack Project Continuous Integration System Elizabeth K. Joseph @pleia2 Elizabeth K. Joseph Core/root member of the OpenStack Infrastructure Team Author of Common OpenStack Deployments (along with
More informationFEEG Applied Programming 3 - Version Control and Git II
FEEG6002 - Applied Programming 3 - Version Control and Git II Richard Boardman, Sam Sinayoko 2016-10-19 Outline Learning outcomes Working with a single repository (review) Working with multiple versions
More informationLGTM Enterprise System Requirements. Release , August 2018
Release 1.17.2, August 2018 Semmle Inc 180 Sansome St San Francisco, CA 94104 Copyright 2018, Semmle Ltd. All rights reserved. LGTM Enterprise release 1.17.2 Document published August 30, 2018 Contents
More informationbootmachine Documentation
bootmachine Documentation Release 0.6.0 Thomas Schreiber April 20, 2015 Contents 1 bootmachine 3 1.1 Configuration Management Tools.................................... 3 1.2 Providers.................................................
More informationBUILD AND DEPLOY SOA PROJECTS FROM DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE
BUILD AND DEPLOY SOA PROJECTS FROM DEVELOPER CLOUD SERVICE TO ORACLE SOA CLOUD SERVICE Ashwini Sharma 1 CONTENTS 1. Introduction... 2 2 Prerequisites... 2 3 Patch the SOA Server Installation... 2 4. Use
More informationnacelle Documentation
nacelle Documentation Release 0.4.1 Patrick Carey August 16, 2014 Contents 1 Standing on the shoulders of giants 3 2 Contents 5 2.1 Getting Started.............................................. 5 2.2
More informationDCLI User's Guide. Data Center Command-Line Interface 2.7.0
Data Center Command-Line Interface 2.7.0 You can find the most up-to-date technical documentation on the VMware Web site at: https://docs.vmware.com/ The VMware Web site also provides the latest product
More informationDocumentation External Synchronization FirstSpirit
Documentation External Synchronization FirstSpirit 2018-10 Status RELEASED Department Copyright FS-Core 2018 e-spirit AG File name SYNC_EN_FirstSpirit_External_Synchronization e-spirit AG Stockholmer Allee
More informationSalesforce DX Setup Guide
Salesforce DX Setup Guide Version 44.0, Winter 19 @salesforcedocs Last updated: September 6, 2018 Copyright 2000 2018 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com,
More informationAt a high level, the current OPNFV CI pipeline can be summarized as follows:
Cross Community Continuous Integration (XCI) Empowers Innovation by Increasing Collaboration Between and Upstream Communities With XCI, regularly integrates the latest from each supported branch of select
More informationcwmon-mysql Release 0.5.0
cwmon-mysql Release 0.5.0 October 18, 2016 Contents 1 Overview 1 1.1 Installation................................................ 1 1.2 Documentation.............................................. 1 1.3
More informationVersion Control Systems
Nothing to see here. Everything is under control! September 16, 2015 Change tracking File moving Teamwork Undo! Undo! UNDO!!! What strategies do you use for tracking changes to files? Change tracking File
More informationAutomatic MySQL Schema Management with Skeema. Evan Elias Percona Live, April 2017
Automatic MySQL Schema Management with Skeema Evan Elias Percona Live, April 2017 What is Schema Management? Organize table schemas in a repo Execution of all DDL, on the correct MySQL instances, with
More informationEDB Postgres Enterprise Manager EDB Ark Management Features Guide
EDB Postgres Enterprise Manager EDB Ark Management Features Guide Version 7.4 August 28, 2018 by EnterpriseDB Corporation Copyright 2013-2018 EnterpriseDB Corporation. All rights reserved. EnterpriseDB
More informationLinux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017
Linux System Management with Puppet, Gitlab, and R10k Scott Nolin, SSEC Technical Computing 22 June 2017 Introduction I am here to talk about how we do Linux configuration management at the Space Science
More informationOpenStack Infrastructure tools
Coordination and OpenStack Infrastructure tools you will want to borrow Thierry Carrez Carrez (@tcarrez) Thierry (@tcarrez) Release Manager, OpenStack Crazy loads every day 000 patchsets are proposed
More informationTutorial 2 GitHub Tutorial
TCSS 360: Software Development Institute of Technology and Quality Assurance Techniques University of Washington Tacoma Winter 2017 http://faculty.washington.edu/wlloyd/courses/tcss360 Tutorial 2 GitHub
More informationJenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot
JenkinsPipelineUnit Test your Continuous Delivery Pipeline Ozan Gunalp - Emmanuel Quincerot Who we are Ozan Günalp Emmanuel Quincerot Developer at LesFurets Developer at LesFurets PhD in Computer Science
More informationBIG-IP Access Policy Manager : Portal Access. Version 12.1
BIG-IP Access Policy Manager : Portal Access Version 12.1 Table of Contents Table of Contents Overview of Portal Access...7 Overview: What is portal access?...7 About portal access configuration elements...7
More informationWe are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info
We are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info START DATE : TIMINGS : DURATION : TYPE OF BATCH : FEE : FACULTY NAME : LAB TIMINGS : PH NO: 9963799240, 040-40025423
More informationContinuous Integration (CI) with Jenkins
TDDC88 Lab 5 Continuous Integration (CI) with Jenkins This lab will give you some handson experience in using continuous integration tools to automate the integration periodically and/or when members of
More informationGit Basi, workflow e concetti avanzati (pt2)
Git Basi, workflow e concetti avanzati (pt2) Andrea Fornaia, Ph.D. Department of Mathema.cs and Computer Science University of Catania Viale A.Doria, 6-95125 Catania Italy fornaia@dmi.unict.it hfp://www.cs.unict.it/~fornaia/
More informationAnchore Container Image Scanner Plugin
Anchore Container Image Scanner Plugin Plugin Information View Anchore Container Image Scanner on the plugin site for more information. Older versions of this plugin may not be safe to use. Please review
More informationComposer and Drupal. CIDUG Meeting December 13, 2018 John Rearick
Composer and Drupal CIDUG Meeting December 13, 2018 John Rearick * Similar to other dependency managers such as: yum, apt, brew, macports, npm, pip, etc. * Helps manage dependency hell. * Lots of dependencies
More informationTunir Documentation. Release Kushal Das
Tunir Documentation Release 0.17 Kushal Das Jul 24, 2017 Contents 1 Why another testing tool? 3 2 Installation 5 2.1 Clone the repository........................................... 5 2.2 Install the dependencies.........................................
More informationTM DevOps Use Case TechMinfy All Rights Reserved
Document Details Use Case Name TMDevOps Use Case01 First Draft 5 th March 2018 Author Reviewed By Prabhakar D Pradeep Narayanaswamy Contents Scope... 4 About Customer... 4 Use Case Description... 4 Primary
More informationEDB Postgres Enterprise Manager EDB Ark Management Features Guide
EDB Postgres Enterprise Manager EDB Ark Management Features Guide Version 7.6 January 9, 2019 by EnterpriseDB Corporation Copyright 2013-2019 EnterpriseDB Corporation. All rights reserved. EnterpriseDB
More informationviki-fabric-helpers Documentation
viki-fabric-helpers Documentation Release 0.0.5 Viki Inc. July 04, 2014 Contents 1 Installation 3 1.1 Installation................................................ 3 2 Configuration 5 2.1 Configuration...............................................
More informationRed Hat JBoss Web Server 3.1
Red Hat JBoss Web Server 3.1 Red Hat JBoss Web Server for OpenShift Installing and using Red Hat JBoss Web Server for OpenShift Last Updated: 2018-03-05 Red Hat JBoss Web Server 3.1 Red Hat JBoss Web
More informationCONTINUOUS INTEGRATION; TIPS & TRICKS
CONTINUOUS INTEGRATION; TIPS & TRICKS BIO I DO TECH THINGS I DO THINGS I DO THINGS BLUE OCEAN BEEP BEEP REFACTOR PEOPLE S HOUSES MY TIPS & TRICKS FOR CI - CI Infrastructure - CI Architecture - Pipeline
More informationGit. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes
Git Charles J. Geyer School of Statistics University of Minnesota Stat 8054 Lecture Notes 1 Before Anything Else Tell git who you are. git config --global user.name "Charles J. Geyer" git config --global
More informationZeroVM Package Manager Documentation
ZeroVM Package Manager Documentation Release 0.2.1 ZeroVM Team October 14, 2014 Contents 1 Introduction 3 1.1 Creating a ZeroVM Application..................................... 3 2 ZeroCloud Authentication
More informationIntroduction: Manual Testing :
: What is Automation Testing? Use of Automation. Where do we use. Tools that Do Automation. Web Applications vs Standalone Applications. What is selenium? How selenium works. Manual Testing : HTML: Detailed
More informationEnhancedEndpointTracker Documentation
EnhancedEndpointTracker Documentation Release 1.0 agccie Jul 23, 2018 Contents: 1 Introduction 1 2 Install 3 2.1 ACI Application............................................. 3 2.2 Standalone Application.........................................
More informationAccelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat
Accelerate at DevOps Speed With Openshift v3 Alessandro Vozza & Samuel Terburg Red Hat IT (R)Evolution Red Hat Brings It All Together What is Kubernetes Open source container cluster manager Inspired by
More informationSalesforce DX Setup Guide
Salesforce DX Setup Guide Version 42.0, Spring 18 @salesforcedocs Last updated: April 24, 2018 Copyright 2000 2018 salesforce.com, inc. All rights reserved. Salesforce is a registered trademark of salesforce.com,
More informationCon$nuous Integra$on Development Environment. Kovács Gábor
Con$nuous Integra$on Development Environment Kovács Gábor kovacsg@tmit.bme.hu Before we start anything Select a language Set up conven$ons Select development tools Set up development environment Set up
More informationScientific Software Development with Eclipse
Scientific Software Development with Eclipse A Best Practices for HPC Developers Webinar Gregory R. Watson ORNL is managed by UT-Battelle for the US Department of Energy Contents Downloading and Installing
More informationvrealize Code Stream Plug-In SDK Development Guide
vrealize Code Stream Plug-In SDK Development Guide vrealize Code Stream 2.2 This document supports the version of each product listed and supports all subsequent versions until the document is replaced
More informationSource Code Management wih git
Source Code Management wih git Matthieu Herrb December 22 http://homepages.laas.fr/matthieu/cours/git.pdf Licence This work is licensed under a Creative Commons Attribution-ShareAlike 3. Unported License.
More informationRed Hat JBoss Developer Studio 10.3 Getting Started with JBoss Developer Studio Tools
Red Hat JBoss Developer Studio 10.3 Getting Started with JBoss Developer Studio Tools Introduction to Using Red Hat JBoss Developer Studio Tools Misha Husnain Ali Supriya Bharadwaj Red Hat Developer Group
More informationRDO container registry Documentation
RDO container registry Documentation Release 0.0.1.dev28 Red Hat Jun 08, 2018 Contents 1 Table of Contents 3 1.1 About the registry............................................ 3 1.2 Installing the registry...........................................
More informationBest Practices for a Mission- Critical Jenkins
Best Practices for a Mission- Critical Jenkins Mike Rooney Jenkins Connoisseur http://linkedin.com/in/mcrooney Jenkins Uses! Genius.com staging deployment, code reviews, automated branching and merging,
More informationSystem Integration and Testing Project Proposal
System Integration and Testing Project Proposal Overview Project Name: System Integration and Testing Repository Name: integration Description: Responsible for ONAP cross-projects system integration and
More informationSoftware Development I
6.148 Software Development I Two things How to write code for web apps. How to collaborate and keep track of your work. A text editor A text editor A text editor Anything that you re used to using Even
More informationTestbed-12 TEAM Engine Virtualization User Guide
Testbed-12 TEAM Engine Virtualization User Guide Table of Contents 1. Introduction............................................................................. 3 2. VirtualBox...............................................................................
More informationThis tutorial provides a basic understanding of the infrastructure and fundamental concepts of managing an infrastructure using Chef.
About the Tutorial Chef is a configuration management technology developed by Opscode to manage infrastructure on physical or virtual machines. It is an open source developed using Ruby, which helps in
More informationgit Version: 2.0b Merge combines trees, and checks out the result Pull does a fetch, then a merge If you only can remember one command:
Merge combines trees, and checks out the result Pull does a fetch, then a merge If you only can remember one command: git --help Get common commands and help git --help How to use git
More informationIndex. Chaminda Chandrasekara 2017 C. Chandrasekara, Beginning Build and Release Management with TFS 2017 and VSTS, DOI /
Index A Agent platforms, 10 system and user capabilities, 10 Agent pool add user, 12 assign permissions, 55 56 default pool, 8 hosted Linux pool, 8 hosted pool, 7 set up assign administrator role, 45 auto-provision
More informationsainsmart Documentation
sainsmart Documentation Release 0.3.1 Victor Yap Jun 21, 2017 Contents 1 sainsmart 3 1.1 Install................................................... 3 1.2 Usage...................................................
More informationgit the SCM system Jan-Simon Möller training.linuxfoundation.org
git the SCM system Jan-Simon Möller training.linuxfoundation.org Topics What is git (what is a SCM) How to install git How to personalize git How to use git for development What is git? What is a SCM System?
More informationApplication Program Interface Guide for Python
Application Program Interface Guide for Python Document Version: 2017-06-15 Application Program Interface (API) calls are supported in NETLAB+ VE version 17.1.6 and later. This guide is to be used along
More informationDeveloping and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering
Developing and Testing Java Microservices on Docker Todd Fasullo Dir. Engineering Agenda Who is Smartsheet + why we started using Docker Docker fundamentals Demo - creating a service Demo - building service
More informationUsing NGiNX for release automation at The Atlantic
Using NGiNX for release automation at The Atlantic About the speakers Mike Howsden is the DevOps Lead at The Atlantic Frankie Dintino is a Senior Full-Stack Developer at The Atlantic One Virtual Machine
More informationEMC Documentum Composer
EMC Documentum Composer Version 6.0 SP1.5 User Guide P/N 300 005 253 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All
More informationDeveloping Kubernetes Services
/ MARCH 2019 / CON LONDON Developing Kubernetes Services at Airbnb Scale What is kubernetes? @MELAN IECEBULA Who am I? A BRIEF HISTORY Why Microservices? 4000000 3000000 MONOLITH LOC 2000000 1000000 0
More informationDEVOPS COURSE CONTENT
LINUX Basics: Unix and linux difference Linux File system structure Basic linux/unix commands Changing file permissions and ownership Types of links soft and hard link Filter commands Simple filter and
More informationTable of Contents. Concepts
Table of Contents Git Repositories Overview Learn about Git Quickstarts Create repo - Web Create repo - CLI Create repo - Visual Studio Create repo - IntelliJ Create repo - Xcode Create repo - Eclipse
More informationTenable.sc-Tenable.io Upgrade Assistant Guide, Version 2.0. Last Revised: January 16, 2019
Tenable.sc-Tenable.io Upgrade Assistant Guide, Version 2.0 Last Revised: January 16, 2019 Table of Contents Welcome to the Tenable.sc-Tenable.io Upgrade Assistant 3 Get Started 4 Environment Requirements
More informationRelease Ralph Offinger
nagios c heck p aloaltodocumentation Release 0.3.2 Ralph Offinger May 30, 2017 Contents 1 nagios_check_paloalto: a Nagios/Icinga Plugin 3 1.1 Documentation..............................................
More informationCeilometer Documentation
Ceilometer Documentation Release 0.0 OpenStack, LLC July 06, 2012 CONTENTS 1 What is the purpose of the project and vision for it? 3 2 Table of contents 5 2.1 Initial setup................................................
More informationsites</distribsiteroot>
Maven Parent POMs What is this? We have several parent poms. They pre-configure a whole array of things, from plugin versions to deployment on our infrastructure. They should be used: By all public and
More informationflask-dynamo Documentation
flask-dynamo Documentation Release 0.1.2 Randall Degges January 22, 2018 Contents 1 User s Guide 3 1.1 Quickstart................................................ 3 1.2 Getting Help...............................................
More informationTDDC88 Lab 4 Software Configuration Management
TDDC88 Lab 4 Software Configuration Management Introduction "Version control is to programmers what the safety net is to a trapeze artist. Knowing the net is there to catch them if they fall, aerialists
More informationDell EMC Networking Saltstack Integration Documentation
Dell EMC Networking Saltstack Integration Documentation Release 1.0 Dell EMC Networking Team Sep 07, 2018 Table of Contents 1 Introduction 1 1.1 Salt....................................................
More informationSample Spark Web-App. Overview. Prerequisites
Sample Spark Web-App Overview Follow along with these instructions using the sample Guessing Game project provided to you. This guide will walk you through setting up your workspace, compiling and running
More informationejpiaj Documentation Release Marek Wywiał
ejpiaj Documentation Release 0.4.0 Marek Wywiał Mar 06, 2018 Contents 1 ejpiaj 3 1.1 License.................................................. 3 1.2 Features..................................................
More informationManual Script Windows Batch For Loop Files In A Directory
Manual Script Windows Batch For Loop Files In A Directory If I run the batch file manually from the command prompt, it works fine. think it is (it refers to the current directory, which is not necessarily
More informationGit version control with Eclipse (EGit) Tutorial
Git version control with Eclipse (EGit) Tutorial 출처 : Lars Vogel http://www.vogella.com/tutorials/eclipsegit/article.html Lars Vogel Version 3.6 Copyright 2009, 2010, 2011, 2012, 2013, 2014 Lars Vogel
More informationJenkins CI for MacDevOps. Tim Sutton Concordia University, Faculty of Fine Arts Montreal
Jenkins CI for MacDevOps Tim Sutton Concordia University, Faculty of Fine Arts Montreal A story svn update./configure make Hudson Jenkins git pull cd code/tools./make_munki_mpkg.sh munkibuilds.org Continuous
More informationRed Hat Developer Studio 12.0
Red Hat Developer Studio 12.0 Getting Started with Developer Studio Tools Introduction to Using Red Hat Developer Studio Tools Last Updated: 2018-07-16 Red Hat Developer Studio 12.0 Getting Started with
More informationInfo Error Deploying Artifact Failed To Transfer File Return Code Is 401
Info Error Deploying Artifact Failed To Transfer File Return Code Is 401 Here is my pom.xml, note that it is also the attached file. (ERROR) Failed to execute goal Return code is: 401, ReasonPhrase: Unauthorized.
More information