Merge lp:~gnuoy/ubuntu-openstack-ci/operator-charmcraft-charms into lp:ubuntu-openstack-ci

Proposed by Liam Young
Status: Merged
Merged at revision: 435
Proposed branch: lp:~gnuoy/ubuntu-openstack-ci/operator-charmcraft-charms
Merge into: lp:ubuntu-openstack-ci
Diff against target: 129 lines (+75/-3)
1 file modified
run/job-parts/osci_layerci_common.sh (+75/-3)
To merge this branch: bzr merge lp:~gnuoy/ubuntu-openstack-ci/operator-charmcraft-charms
Reviewer Review Type Date Requested Status
Aurelien Lourot (community) Approve
Ubuntu OpenStack CI Team Pending
Review via email: mp+389413@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Aurelien Lourot (aurelien-lourot) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'run/job-parts/osci_layerci_common.sh'
2--- run/job-parts/osci_layerci_common.sh 2020-07-03 09:56:17 +0000
3+++ run/job-parts/osci_layerci_common.sh 2020-08-17 13:09:31 +0000
4@@ -100,7 +100,15 @@
5 mkdir -p $WORKSPACE/asset/$ASSET_NAME
6 tar -jxvf $WORKSPACE/asset/$ARCHIVE_NAME -C $WORKSPACE/asset/$ASSET_NAME
7 ls -al $WORKSPACE/asset/$ASSET_NAME
8- export BUILT_ASSET_DIR=$WORKSPACE/asset/$ASSET_NAME
9+ CHARM_ARCHIVE=$WORKSPACE/asset/$ASSET_NAME/${ASSET_NAME}.charm
10+ if [[ -f $CHARM_ARCHIVE ]]; then
11+ export BUILT_ASSET_DIR=$WORKSPACE/asset/$ASSET_NAME/unpacked
12+ mkdir $BUILT_ASSET_DIR
13+ unzip -qq $CHARM_ARCHIVE -d $BUILT_ASSET_DIR
14+ cp $CHARM_ARCHIVE $BUILT_ASSET_DIR
15+ else
16+ export BUILT_ASSET_DIR=$WORKSPACE/asset/$ASSET_NAME
17+ fi
18 }
19
20
21@@ -155,6 +163,33 @@
22 $UOSCI_RELEASE_TOOLS_ROOT/generate-repo-info $CO_DIR &> $BUILT_ASSET_DIR/repo-info
23 }
24
25+function f_layerci_build_charm_operator(){
26+# Build asset (charm) based on checkout dir and base name env vars,
27+# and set the built asset file env var to be consumed by jobs.
28+ if [[ -z "$CO_DIR" ]]; then
29+ echo " ! Missing required CO_DIR env var"
30+ exit 1
31+ fi
32+ if [[ -z "$BASE_NAME" ]]; then
33+ echo " ! Missing required BASE_NAME env var"
34+ exit 1
35+ fi
36+ f_line "Building $CO_DIR ($BASE_NAME)"
37+
38+ # Build the asset
39+ f_proxy_if_proxy
40+ . $UOSCI_RELEASE_TOOLS_ROOT/build-charm $CO_DIR
41+ f_proxy_unset
42+
43+ # Confirm built asset location
44+ if [[ -z "$BUILT_ASSET_FILE" ]]; then
45+ echo " ! Unable to determine BUILT_ASSET_FILE"
46+ exit 1
47+ fi
48+ echo " . BUILT_ASSET_FILE: $BUILT_ASSET_FILE"
49+ du -hsc $BUILT_ASSET_FILE
50+}
51+
52
53 function f_layerci_archive_built_asset(){
54 # Assumes the asset (charm) has already been built.
55@@ -184,6 +219,34 @@
56 }
57
58
59+function f_layerci_archive_built_asset_operator(){
60+# Assumes the asset (charm) has already been built.
61+# Sets the properties files for later jobs to consume.
62+ f_line "Archiving built asset $BUILT_ASSET_FILE as artifact"
63+ if [[ -z "$BUILT_ASSET_FILE" ]]; then
64+ echo " ! Missing required env var BUILT_ASSET_FILE"
65+ exit 1
66+ fi
67+ if [[ ! -f "$BUILT_ASSET_FILE" ]]; then
68+ echo " ! BUILT_ASSET_FILE does not exist"
69+ exit 1
70+ fi
71+
72+ # Create archive and make sure it exists
73+ # Builds always go in workspace/build/
74+ mkdir -p $WORKSPACE/build
75+ export BUILT_ASSET_ARTIFACT_ARCHIVE_NAME="${BASE_NAME}-${JOB_NAME}-${BUILD_NUMBER}.tar.bz2"
76+ tar -C $(dirname $BUILT_ASSET_FILE) -cjvf $WORKSPACE/build/$BUILT_ASSET_ARTIFACT_ARCHIVE_NAME $(basename $BUILT_ASSET_FILE)
77+ ls -alh $WORKSPACE/build/$BUILT_ASSET_ARTIFACT_ARCHIVE_NAME
78+
79+ # Create properties files for parameterized job consumption. These env vars
80+ # are critical to pass along for layer ci awareness in other jobs.
81+ echo "BUILT_ASSET_ARTIFACT_ARCHIVE_NAME=$BUILT_ASSET_ARTIFACT_ARCHIVE_NAME" > $WORKSPACE/charm_build.properties
82+ echo "BUILT_ASSET_BASE_NAME=$BASE_NAME" >> $WORKSPACE/charm_build.properties
83+ echo "BUILT_ASSET_SHA1=$(cd $WORKSPACE/build; sha1sum $BUILT_ASSET_ARTIFACT_ARCHIVE_NAME)" >> $WORKSPACE/charm_build.properties
84+}
85+
86+
87 function f_layerci_build_and_archive_if_necessary() {
88 # Detect asset (charm/layer/interface) type, build and archive if relevant.
89 # Announce detection for clarity. Expects CO_DIR and OSCI_ASSET_TYPE
90@@ -203,6 +266,12 @@
91 f_layerci_build_charm $CO_DIR
92 f_layerci_archive_built_asset
93 ;;
94+ "charm (source operator)")
95+ # Build and prepare jenkins workspace artifact for copying by other jobs
96+ echo " . Proceeding with $CO_DIR as a source charm [need to build]"
97+ f_layerci_build_charm_operator $CO_DIR
98+ f_layerci_archive_built_asset_operator
99+ ;;
100 "layer")
101 # Build and prepare jenkins workspace artifact for copying by other jobs
102 echo " . Proceeding with $CO_DIR as a layer [need to build]"
103@@ -254,13 +323,16 @@
104 function f_layerci_build_if_necessary() {
105 f_layerci_check_and_announce_asset_type
106 case "$OSCI_ASSET_TYPE" in
107- "charm (built)"|"charm (classic)"|"bundle (func)"|"bundle (bundle_test_collection)")
108+ "charm (built)"|"charm (classic)"|"bundle (func)"|"bundle (bundle_test_collection)"|"charm (built operator)")
109 # OK
110 :
111 ;;
112 "charm (source)")
113 f_layerci_build_charm
114 ;;
115+ "charm (source operator)")
116+ f_layerci_build_charm_operator
117+ ;;
118 *)
119 #
120 echo " ! Asset type not supported in this call: $OSCI_ASSET_TYPE"
121@@ -280,7 +352,7 @@
122 fi
123
124 case "$OSCI_ASSET_TYPE" in
125- "charm (built)"|"charm (classic)"|"charm (source)"|"layer"|"interface"|"bundle (func)"|"bundle (bundle_test_collection)")
126+ "charm (built)"|"charm (classic)"|"charm (source)"|"layer"|"interface"|"bundle (func)"|"bundle (bundle_test_collection)"|"charm (source operator)"|"charm (built operator)")
127 # OK
128 :
129 ;;

Subscribers

People subscribed via source and target branches