Add build-on-merge job for pti/rpt Yocto
Extend templates to provision global and project settings,
and to create netrc using mvn-site-id.
Refactor shell scripts into prereqs, verify, build and upload.
First draft of upload commands that deploy ISO to nexus.
Signed-off-by: Lott, Christopher (cl778h) <cl778h@att.com>
Change-Id: Ibce18bcdf05d99844673ba782d392379795ee945
diff --git a/jjb/oran-jjb/oran-shell-jobs.yaml b/jjb/oran-jjb/oran-shell-jobs.yaml
index 3b68853..4c5aa5a 100644
--- a/jjb/oran-jjb/oran-shell-jobs.yaml
+++ b/jjb/oran-jjb/oran-shell-jobs.yaml
@@ -29,6 +29,7 @@
disable-job: false
gerrit-skip-vote: false
git-url: '$GIT_URL/$GERRIT_PROJECT'
+ mvn-global-settings: global-settings
stream: master
submodule-disable: false
submodule-recursive: true
@@ -66,7 +67,14 @@
jenkins-ssh-credential: '{jenkins-ssh-credential}'
builders:
+ - lf-infra-pre-build
+ - lf-provide-maven-settings:
+ global-settings-file: "{mvn-global-settings}"
+ settings-file: "{mvn-settings}"
+ - lf-infra-create-netrc:
+ server-id: "{mvn-site-id}"
- shell: '{script}'
+ - lf-provide-maven-settings-cleanup
publishers:
- lf-infra-publish
diff --git a/jjb/pti-rtp/build-yocto.sh b/jjb/pti-rtp/build-yocto.sh
new file mode 100644
index 0000000..5e9fbdc
--- /dev/null
+++ b/jjb/pti-rtp/build-yocto.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Copyright (C) 2019 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Builds a Yocto image for real.
+# Assumes prereqs have already been installed.
+
+echo "--> build-yocto.sh"
+
+# Ensure we fail the job if any steps fail.
+set -eu -o pipefail
+
+dir=workspace
+echo "INFO: creating workspace $dir"
+mkdir $dir
+cmd="./scripts/build_oran.sh -w $dir"
+echo "INFO: invoking build script: $cmd"
+$cmd
+
+echo "--> build-yocto.sh ends"
diff --git a/jjb/pti-rtp/verify-pti-rtp-centos.sh b/jjb/pti-rtp/install-yocto-prereq-centos.sh
old mode 100755
new mode 100644
similarity index 74%
rename from jjb/pti-rtp/verify-pti-rtp-centos.sh
rename to jjb/pti-rtp/install-yocto-prereq-centos.sh
index 1564551..55c2abc
--- a/jjb/pti-rtp/verify-pti-rtp-centos.sh
+++ b/jjb/pti-rtp/install-yocto-prereq-centos.sh
@@ -14,10 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Installs prerequisites on CentOS then invokes the pti/rtp build script
-# to test creation of a Yocto image. The "-n" flag skips bitbake.
+# Installs Yocto build prerequisites on CentOS.
-echo "--> verify-pti-rtp-centos.sh"
+echo "--> install-yocto-prereq-centos.sh"
# Ensure we fail the job if any steps fail.
set -eu -o pipefail
@@ -31,11 +30,4 @@
&& sudo yum makecache \
&& sudo yum install -y $pkgs
-dir=workspace
-echo "INFO: creating workspace $dir"
-mkdir $dir
-cmd="./scripts/build_oran.sh -w $dir -n"
-echo "INFO: invoking build script: $cmd"
-$cmd
-
-echo "--> verify-pti-rtp-centos.sh ends"
+echo "--> install-yocto-prereq-centos.sh ends"
diff --git a/jjb/pti-rtp/pti-rtp.yaml b/jjb/pti-rtp/pti-rtp.yaml
index 14f231e..07fd3c4 100644
--- a/jjb/pti-rtp/pti-rtp.yaml
+++ b/jjb/pti-rtp/pti-rtp.yaml
@@ -13,14 +13,36 @@
jobs:
- gerrit-info-yaml-verify
-- project:
- name: pti-rtp-verify
+- pti_rtp_common: &pti_rtp_common
+ name: pti-rtp-common
+ # git repo
project: pti/rtp
+ # jenkins job name prefix
project-name: pti-rtp
+ # maven settings file has credentials
+ mvn-settings: pti-rtp-settings
# use a centos with big memory; docker not required
build-node: centos7-docker-2c-8g
- # runs about 30 minutes
+
+- project:
+ <<: *pti_rtp_common
+ name: pti-rtp-verify
+ # runs about 40 minutes
build-timeout: 60
- script: !include-raw-escape: verify-pti-rtp-centos.sh
+ script: !include-raw-escape:
+ - install-yocto-prereq-centos.sh
+ - verify-yocto.sh
jobs:
- oran-shell-verify
+
+- project:
+ <<: *pti_rtp_common
+ name: pti-rtp-merge
+ # runs about 9 hours
+ build-timeout: 600
+ script: !include-raw-escape:
+ - install-yocto-prereq-centos.sh
+ - build-yocto.sh
+ - upload-yocto.sh
+ jobs:
+ - oran-shell-merge
diff --git a/jjb/pti-rtp/upload-yocto.sh b/jjb/pti-rtp/upload-yocto.sh
new file mode 100644
index 0000000..35b4bae
--- /dev/null
+++ b/jjb/pti-rtp/upload-yocto.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# Copyright (C) 2019 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Uploads a Yocto image to Nexus.
+
+echo "--> upload-yocto.sh"
+
+# Ensure we fail the job if any steps fail.
+set -eu -o pipefail
+
+echo "INFO: creating virtual environment"
+virtualenv -p python3 /tmp/venv
+PATH=/tmp/venv/bin:$PATH
+pipup="python -m pip install -q --upgrade lftools"
+echo "INFO: installing packages: $pipup"
+$pipup
+
+# NEXUS_URL is set by Jenkins
+nexus_repo_id="images"
+nexus_repo_url="$NEXUS_URL/content/sites/$nexus_repo_id"
+echo "INFO: upload to $nexus_repo_url"
+
+repo_dir="$WORKSPACE/nexus/$nexus_repo_id"
+# TODO: get build or version string; use latest for now
+repo_iso_dir="$repo_dir/org/o-ran-sc/pti/rtp/latest"
+echo "INFO: create staging directory $repo_iso_dir"
+mkdir -p "$repo_iso_dir"
+
+# Expect ISO file: oran-image-inf-host-intel-x86-64.iso
+# in build subdir: workspace/prj_oran-inf/tmp-glibc/deploy/images/intel-x86-64/
+iso="workspace/prj_oran-inf/tmp-glibc/deploy/images/intel-x86-64/oran-image-inf-host-intel-x86-64.iso"
+echo "INFO: copy $iso to staging directory $repo_iso_dir"
+cp "$iso" "$repo_iso_dir"
+
+cmd="lftools deploy nexus $nexus_repo_url $repo_dir"
+echo "INFO: Upload ISO to Nexus: $cmd"
+$cmd
+
+echo "--> upload-yocto.sh ends"
diff --git a/jjb/pti-rtp/verify-yocto.sh b/jjb/pti-rtp/verify-yocto.sh
new file mode 100644
index 0000000..da13788
--- /dev/null
+++ b/jjb/pti-rtp/verify-yocto.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Copyright (C) 2019 Wind River Systems, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Tests creation of a Yocto image. The "-n" flag skips bitbake.
+# Assumes prereqs have already been installed.
+
+echo "--> verify-yocto.sh"
+
+# Ensure we fail the job if any steps fail.
+set -eu -o pipefail
+
+dir=workspace
+echo "INFO: creating workspace $dir"
+mkdir $dir
+cmd="./scripts/build_oran.sh -w $dir -n"
+echo "INFO: invoking build script: $cmd"
+$cmd
+
+echo "--> verify-yocto.sh ends"