openjdk8 <!-- Managed by Jenkins Job Builder --> false false false false build-vm false $GIT_URL/$PROJECT/example-org/releng/ciman PROJECT Parameter to identify a Gerrit project. This is typically the project repo path as exists in Gerrit. For example: ofextensions/circuitsw releng/ciman STREAM Stream is often set to the same name as 'branch' but can sometimes be used as a name representing a project's release code name. master GERRIT_PROJECT Parameter to identify Gerrit project. This is typically the project repo path as exists in Gerrit. For example: ofextensions/circuitsw Note that Gerrit will override this parameter automatically if a job is triggered by Gerrit. releng/ciman GERRIT_BRANCH Parameter to identify a Gerrit branch. Note that Gerrit will override this parameter automatically if a job is triggered by Gerrit. master GERRIT_REFSPEC Parameter to identify a refspec when pulling from Gerrit. Note that Gerrit will override this parameter automatically if a job is triggered by Gerrit. refs/heads/master LFTOOLS_VERSION Version of lftools to install. Can be a specific version like '0.6.0' or a PEP-440 definition. https://www.python.org/dev/peps/pep-0440/ For example '<1.0.0' or '>=1.0.0,<2.0.0'. <1.0.0 M2_HOME Maven selector to be used by shell scripts /w/tools/hudson.tasks.Maven_MavenInstallation/mvn33 MAVEN_OPTS Maven Java opts. Example: -Xmx1024m -XX:MaxPermSize=256m MAVEN_PARAMS Maven parameters to pass to the mvn command. -Dmerge MVN Maven selector to be used by shell scripts /w/tools/hudson.tasks.Maven_MavenInstallation/mvn33/bin/mvn STAGING_PROFILE_ID Nexus staging profile ID. uuddlrlrba ARCHIVE_ARTIFACTS Artifacts to archive to the logs server. 2 origin +refs/pull/*:refs/remotes/origin/pr/* git@github.com:example-org/releng/ciman test-credential master false false true false false Default true false false false true false 10 false ^remerge$ false true true false Maven Merge mkdir -p $WORKSPACE/target/classes $WORKSPACE/jacoco/classes echo "quiet=on" > "$HOME/.wgetrc" --version mvn33 false rm "$HOME/.wgetrc" global-settings GLOBAL_SETTINGS_FILE aproject-settings SETTINGS_FILE SERVER_ID=fakeproject-snapshots #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> create-netrc.sh" # Ensure we fail the job if any steps fail. set -eu -o pipefail NEXUS_URL="${NEXUSPROXY:-$NEXUS_URL}" CREDENTIAL=$(xmlstarlet sel -N "x=http://maven.apache.org/SETTINGS/1.0.0" \ -t -m "/x:settings/x:servers/x:server[x:id='${SERVER_ID}']" \ -v x:username -o ":" -v x:password \ "$SETTINGS_FILE") machine=$(echo "$NEXUS_URL" | awk -F/ '{print $3}') user=$(echo "$CREDENTIAL" | cut -f1 -d:) pass=$(echo "$CREDENTIAL" | cut -f2 -d:) echo "machine ${machine%:*} login $user password $pass" > ~/.netrc NEXUS_CUT_DIRS=6 NEXUS_REPO=fakeproject-snapshots #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> lftools-install.sh" # Script to install lftools via a version passed in via lf-infra-parameters # # Required parameters: # # LFTOOLS_VERSION: Passed in via lf-infra-parameters configuration. Can be # set to a strict version number like '1.2.3' or using # PEP-440 definitions. # # Examples: # <1.0.0 # >=1.0.0,<2.0.0 # # By default a released version of lftools should always be used. # The purpose of the 2 variables below is so that lftools devs can test # unreleased versions of lftools. There are 2 methods to install a dev version # of lftools: # # 1) gerrit patch: Used to test a patch that has not yet been merged. # To do this set something like this: # LFTOOLS_MODE=gerrit # LFTOOLS_REFSPEC=refs/changes/96/5296/7 # # 2) git branch: Used to install an lftools version from a specific branch. # To use this set the variables as follows: # LFTOOLS_MODE=git # LFTOOLS_REFSPEC=master # # 3) release : The intended use case and default setting. # Set LFTOOLS_MODE=release, in this case LFTOOLS_REFSPEC is unused. LFTOOLS_MODE=release # release | git | gerrit LFTOOLS_REFSPEC=master # Ensure we fail the job if any steps fail. # DO NOT set -u as virtualenv's activate script has unbound variables set -e -o pipefail virtualenv --quiet "/tmp/v/lftools" # shellcheck source=/tmp/v/lftools/bin/activate disable=SC1091 source "/tmp/v/lftools/bin/activate" pip install --quiet --upgrade pip case $LFTOOLS_MODE in gerrit) git clone https://gerrit.linuxfoundation.org/infra/releng/lftools.git /tmp/lftools pushd /tmp/lftools git fetch origin "$LFTOOLS_REFSPEC" git checkout FETCH_HEAD pip install --quiet --upgrade -r requirements.txt pip install --quiet --upgrade -e . popd ;; git) pip install --quiet --upgrade git+https://gerrit.linuxfoundation.org/infra/releng/lftools.git@"$BRANCH" ;; release) if [[ $LFTOOLS_VERSION =~ ^[0-9] ]]; then LFTOOLS_VERSION="==$LFTOOLS_VERSION" fi pip install --quiet --upgrade "lftools${LFTOOLS_VERSION}" ;; esac lftools --version # pipdeptree prints out a lot of information because lftools pulls in many # dependencies. Let's only print it if we want to debug. # echo "----> Pip Dependency Tree" # pip install --quiet --upgrade pipdeptree # pipdeptree #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## # This file contains a list of variables that are generally useful in many # scripts. It is meant to be sourced in other scripts so that the variables can # be called. MAVEN_OPTIONS="$(echo --show-version \ --batch-mode \ -Djenkins \ -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \ -Dmaven.repo.local=/tmp/r \ -Dorg.ops4j.pax.url.mvn.localRepository=/tmp/r)" echo "$MAVEN_OPTIONS" #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## # Uses wget to fetch a project's maven-metadata.xml files from a Maven repository. # Ensure we fail the job if any steps fail. set -eu -o pipefail project=$(xmlstarlet sel \ -N "x=http://maven.apache.org/POM/4.0.0" -t \ --if "/x:project/x:groupId" \ -v "/x:project/x:groupId" \ --elif "/x:project/x:parent/x:groupId" \ -v "/x:project/x:parent/x:groupId" \ --else -o "" pom.xml) project_path="${project//.//}" mkdir -p "$WORKSPACE/m2repo/$project_path" pushd "$WORKSPACE/m2repo/$project_path" # Temporarily disable failing for wget # If 404 happens we don't care because it might be a new project. set +e wget -nv --recursive \ --accept maven-metadata.xml \ -R "index.html*" \ --execute robots=off \ --no-parent \ --no-host-directories \ --cut-dirs="$NEXUS_CUT_DIRS" \ "$NEXUS_URL/content/repositories/$NEXUS_REPO/$project_path/" set -e # Re-enable. popd # Backup metadata - Used later to find metadata files that have not been modified mkdir -p "$WORKSPACE/m2repo-backup" cp -a "$WORKSPACE/m2repo/"* "$WORKSPACE/m2repo-backup" #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## # This script builds a Maven project and deploys it into a staging repo which # can be used to deploy elsewhere later eg. Nexus staging / snapshot repos. # DO NOT enable -u because $MAVEN_PARAMS and $MAVEN_OPTIONS could be unbound. # Ensure we fail the job if any steps fail. set -e -o pipefail set +u export MAVEN_OPTS # Disable SC2086 because we want to allow word splitting for $MAVEN_* parameters. # shellcheck disable=SC2086 $MVN clean deploy \ --global-settings "$GLOBAL_SETTINGS_FILE" \ --settings "$SETTINGS_FILE" \ -DaltDeploymentRepository=staging::default::file:"$WORKSPACE"/m2repo \ $MAVEN_PARAMS $MAVEN_OPTIONS #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## # Upload the snapshot files to a snapshot repo. # # Requires the existance of $WORKSPACE/m2repo and $WORKSPACE/m2repo-backup to # compare if maven metadata files have changed. Unchanged files are then # removed from $WORKSPACE/m2repo before uploading to the snapshot repo. # Ensure we fail the job if any steps fail. set -eu -o pipefail m2repo_dir="$WORKSPACE/m2repo" nexus_repo_url="$NEXUS_URL/content/repositories/$NEXUS_REPO" # Remove metadata files that were not updated. set +e # Temporarily disable to run diff command. metadata_files=($(diff -s -r "$m2repo_dir" "$WORKSPACE/m2repo-backup" \ | grep 'Files .* and .* are identical' | awk '{print $2}')) set -e # Re-enable. set +u # $metadata_files could be unbound if project is new. if [ -n "${metadata_files[*]}" ]; then for i in "${metadata_files[@]}"; do rm "$i"* done fi set -u # Re-enable. find "$m2repo_dir" -type d -empty -delete lftools deploy nexus -s "$nexus_repo_url" "$m2repo_dir" #!/bin/bash set +e # DO NOT cause build failure if any of the rm calls fail. rm "$GLOBAL_SETTINGS_FILE" "$SETTINGS_FILE" # In some cases we use the lf-provide-maven-settings macro to produce # a "$HOME/.netrc" file containing credentials. Remove that file here # too if it exists. rm "$HOME/.netrc" # DO NOT fail build if any of the above lines fail. exit 0 false low [FINDBUGS] false false false false false true false **/**.exec **/classes **/src/main/java **/gen/**,**/generated-sources/**,**/yang-gen**,**/pax/** 10 20 50 40 #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> sysstat.sh" set +e # DON'T fail build if script fails. OS=$(facter operatingsystem) case "$OS" in Ubuntu) SYSSTAT_PATH="/var/log/sysstat" # Dont run the script when systat is not enabled by default if ! grep --quiet 'ENABLED="true"' "/etc/default/sysstat"; then exit 0 fi ;; CentOS|RedHat) SYSSTAT_PATH="/var/log/sa" ;; *) # nothing to do exit 0 ;; esac SAR_DIR="$WORKSPACE/archives/sar-reports" mkdir -p "$SAR_DIR" cp "$SYSSTAT_PATH/"* "$_" # convert sar data to ascii format while IFS="" read -r s do [ -f "$s" ] && LC_TIME=POSIX sar -A -f "$s" > "$SAR_DIR/sar${s//[!0-9]/}" done < <(find "$SYSSTAT_PATH" -name "sa[0-9]*" || true) # DON'T fail build if script fails. exit 0 jenkins-log-archives-settings SETTINGS_FILE SERVER_ID=logs #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> create-netrc.sh" # Ensure we fail the job if any steps fail. set -eu -o pipefail NEXUS_URL="${NEXUSPROXY:-$NEXUS_URL}" CREDENTIAL=$(xmlstarlet sel -N "x=http://maven.apache.org/SETTINGS/1.0.0" \ -t -m "/x:settings/x:servers/x:server[x:id='${SERVER_ID}']" \ -v x:username -o ":" -v x:password \ "$SETTINGS_FILE") machine=$(echo "$NEXUS_URL" | awk -F/ '{print $3}') user=$(echo "$CREDENTIAL" | cut -f1 -d:) pass=$(echo "$CREDENTIAL" | cut -f2 -d:) echo "machine ${machine%:*} login $user password $pass" > ~/.netrc #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> lftools-install.sh" # Script to install lftools via a version passed in via lf-infra-parameters # # Required parameters: # # LFTOOLS_VERSION: Passed in via lf-infra-parameters configuration. Can be # set to a strict version number like '1.2.3' or using # PEP-440 definitions. # # Examples: # <1.0.0 # >=1.0.0,<2.0.0 # # By default a released version of lftools should always be used. # The purpose of the 2 variables below is so that lftools devs can test # unreleased versions of lftools. There are 2 methods to install a dev version # of lftools: # # 1) gerrit patch: Used to test a patch that has not yet been merged. # To do this set something like this: # LFTOOLS_MODE=gerrit # LFTOOLS_REFSPEC=refs/changes/96/5296/7 # # 2) git branch: Used to install an lftools version from a specific branch. # To use this set the variables as follows: # LFTOOLS_MODE=git # LFTOOLS_REFSPEC=master # # 3) release : The intended use case and default setting. # Set LFTOOLS_MODE=release, in this case LFTOOLS_REFSPEC is unused. LFTOOLS_MODE=release # release | git | gerrit LFTOOLS_REFSPEC=master # Ensure we fail the job if any steps fail. # DO NOT set -u as virtualenv's activate script has unbound variables set -e -o pipefail virtualenv --quiet "/tmp/v/lftools" # shellcheck source=/tmp/v/lftools/bin/activate disable=SC1091 source "/tmp/v/lftools/bin/activate" pip install --quiet --upgrade pip case $LFTOOLS_MODE in gerrit) git clone https://gerrit.linuxfoundation.org/infra/releng/lftools.git /tmp/lftools pushd /tmp/lftools git fetch origin "$LFTOOLS_REFSPEC" git checkout FETCH_HEAD pip install --quiet --upgrade -r requirements.txt pip install --quiet --upgrade -e . popd ;; git) pip install --quiet --upgrade git+https://gerrit.linuxfoundation.org/infra/releng/lftools.git@"$BRANCH" ;; release) if [[ $LFTOOLS_VERSION =~ ^[0-9] ]]; then LFTOOLS_VERSION="==$LFTOOLS_VERSION" fi pip install --quiet --upgrade "lftools${LFTOOLS_VERSION}" ;; esac lftools --version # pipdeptree prints out a lot of information because lftools pulls in many # dependencies. Let's only print it if we want to debug. # echo "----> Pip Dependency Tree" # pip install --quiet --upgrade pipdeptree # pipdeptree #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## echo "---> logs-deploy.sh" # Ensure we fail the job if any steps fail. set -eu -o pipefail set -x # Trace commands for this script to make debugging easier. ARCHIVE_ARTIFACTS="${ARCHIVE_ARTIFACTS:-}" LOGS_SERVER="${LOGS_SERVER:-None}" if [ "${LOGS_SERVER}" == 'None' ] then set +x # Disable trace since we no longer need it echo "WARNING: Logging server not set" else NEXUS_URL="${NEXUSPROXY:-$NEXUS_URL}" NEXUS_PATH="${SILO}/${JENKINS_HOSTNAME}/${JOB_NAME}/${BUILD_NUMBER}" BUILD_URL="${BUILD_URL}" lftools deploy archives -p "$ARCHIVE_ARTIFACTS" "$NEXUS_URL" "$NEXUS_PATH" "$WORKSPACE" lftools deploy logs "$NEXUS_URL" "$NEXUS_PATH" "$BUILD_URL" set +x # Disable trace since we no longer need it. echo "Build logs: <a href=\"$LOGS_SERVER/$NEXUS_PATH\">$LOGS_SERVER/$NEXUS_PATH</a>" fi #!/bin/bash # SPDX-License-Identifier: EPL-1.0 ############################################################################## # Copyright (c) 2017 The Linux Foundation and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html ############################################################################## # Clear log credential files rm "$SETTINGS_FILE" rm ~/.netrc ^Build logs: .* false false false **/*.jenkins-trigger EXCLUDE false false true true true true true true 30 BUILD_TIMEOUT true false 0 3 absolute test-credential npmrc $HOME/.npmrc