From ecceb52f33e8cccdca277f6ff015058fdfd832b4 Mon Sep 17 00:00:00 2001 From: Alex Kavanagh Date: Tue, 15 Feb 2022 16:19:57 +0000 Subject: [PATCH] Update to classic charms to build using charmcraft in CI This update is to ensure that the Zuul Canonical CI builds the charm before functional tests and ensure that that artifact is used for the functional tests. This is to try to ensure that the charm that gets landed to the charmhub is the same charm that was tested with. Change-Id: I4ebaac856ddda643804454288961924c1c256aa9 --- .gitignore | 1 + build-requirements.txt | 7 +++++++ charmcraft.yaml | 2 +- osci.yaml | 4 ++++ rename.sh | 13 +++++++++++++ requirements.txt | 1 - test-requirements.txt | 2 -- tests/bundles/focal-xena.yaml | 2 +- tests/bundles/focal-yoga.yaml | 2 +- tests/bundles/impish-xena.yaml | 2 +- tests/bundles/jammy-yoga.yaml | 2 +- tox.ini | 12 +++++++++++- 12 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 build-requirements.txt create mode 100755 rename.sh diff --git a/.gitignore b/.gitignore index e09e8dc..7192276 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ bin/ *.pyc +*.charm .tox .testrepository .coverage diff --git a/build-requirements.txt b/build-requirements.txt new file mode 100644 index 0000000..b6d2452 --- /dev/null +++ b/build-requirements.txt @@ -0,0 +1,7 @@ +# NOTES(lourot): +# * We don't install charmcraft via pip anymore because it anyway spins up a +# container and scp the system's charmcraft snap inside it. So the charmcraft +# snap is necessary on the system anyway. +# * `tox -e build` successfully validated with charmcraft 1.2.1 + +cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35. diff --git a/charmcraft.yaml b/charmcraft.yaml index ba84f31..1974db4 100644 --- a/charmcraft.yaml +++ b/charmcraft.yaml @@ -6,6 +6,7 @@ parts: source: . prime: - actions/* + - charmhelpers/* - files/* - hooks/* - lib/* @@ -13,7 +14,6 @@ parts: - actions.yaml - config.yaml - copyright - - hardening.yaml - icon.svg - LICENSE - Makefile diff --git a/osci.yaml b/osci.yaml index da6cd31..3a71857 100644 --- a/osci.yaml +++ b/osci.yaml @@ -4,3 +4,7 @@ - charm-unit-jobs-py39 - charm-xena-functional-jobs - charm-yoga-functional-jobs + vars: + needs_charm_build: true + charm_build_name: hacluster + build_type: charmcraft diff --git a/rename.sh b/rename.sh new file mode 100755 index 0000000..d0c35c9 --- /dev/null +++ b/rename.sh @@ -0,0 +1,13 @@ +#!/bin/bash +charm=$(grep "charm_build_name" osci.yaml | awk '{print $2}') +echo "renaming ${charm}_*.charm to ${charm}.charm" +echo -n "pwd: " +pwd +ls -al +echo "Removing bad downloaded charm maybe?" +if [[ -e "${charm}.charm" ]]; +then + rm "${charm}.charm" +fi +echo "Renaming charm here." +mv ${charm}_*.charm ${charm}.charm diff --git a/requirements.txt b/requirements.txt index 3cfff8b..ead6e89 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,4 +22,3 @@ dnspython<2.0.0; python_version < '3.6' dnspython; python_version >= '3.6' psutil>=1.1.1,<2.0.0 -cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35. diff --git a/test-requirements.txt b/test-requirements.txt index 3299333..0aabe17 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -41,5 +41,3 @@ git+https://opendev.org/openstack/tempest.git#egg=tempest;python_version>='3.6' tempest<24.0.0;python_version<'3.6' croniter # needed for charm-rabbitmq-server unit tests -pyparsing<3.0.0 # but cffi needs it, so pin here. -cffi==1.14.6; python_version < '3.6' # cffi 1.15.0 drops support for py35. diff --git a/tests/bundles/focal-xena.yaml b/tests/bundles/focal-xena.yaml index c5e96f9..d1cbad6 100644 --- a/tests/bundles/focal-xena.yaml +++ b/tests/bundles/focal-xena.yaml @@ -44,7 +44,7 @@ applications: channel: latest/edge hacluster: - charm: ../../../hacluster + charm: ../../hacluster.charm subordinate-to: - keystone diff --git a/tests/bundles/focal-yoga.yaml b/tests/bundles/focal-yoga.yaml index 8b95788..0b270a1 100644 --- a/tests/bundles/focal-yoga.yaml +++ b/tests/bundles/focal-yoga.yaml @@ -44,7 +44,7 @@ applications: channel: latest/edge hacluster: - charm: ../../../hacluster + charm: ../../hacluster.charm subordinate-to: - keystone diff --git a/tests/bundles/impish-xena.yaml b/tests/bundles/impish-xena.yaml index 689eee0..502904c 100644 --- a/tests/bundles/impish-xena.yaml +++ b/tests/bundles/impish-xena.yaml @@ -44,7 +44,7 @@ applications: channel: latest/edge hacluster: - charm: ../../../hacluster + charm: ../../hacluster.charm subordinate-to: - keystone diff --git a/tests/bundles/jammy-yoga.yaml b/tests/bundles/jammy-yoga.yaml index ee42519..0130362 100644 --- a/tests/bundles/jammy-yoga.yaml +++ b/tests/bundles/jammy-yoga.yaml @@ -44,7 +44,7 @@ applications: channel: latest/edge hacluster: - charm: ../../../hacluster + charm: ../../hacluster.charm subordinate-to: - keystone diff --git a/tox.ini b/tox.ini index 86d1e90..81fd249 100644 --- a/tox.ini +++ b/tox.ini @@ -37,10 +37,20 @@ setenv = VIRTUAL_ENV={envdir} install_command = {toxinidir}/pip.sh install {opts} {packages} commands = stestr run --slowest {posargs} -allowlist_externals = juju +allowlist_externals = + charmcraft + rename.sh passenv = HOME TERM CS_* OS_* TEST_* deps = -r{toxinidir}/test-requirements.txt +[testenv:build] +basepython = python3 +deps = -r{toxinidir}/build-requirements.txt +commands = + charmcraft clean + charmcraft -v build + {toxinidir}/rename.sh + [testenv:py35] basepython = python3.5 deps = -r{toxinidir}/requirements.txt