Teach the CI How to Publish our Charm on Charmhub
Add a job that publishes the packed charm on Charmhub.
The job is not enabled with this commit; it should be enabled for
the 'post' and 'release' pipelines with the appropriate channel.
Change-Id: Ie62dc692cbce73560e09117888a022700fecca42
diff --git a/playbooks/charm-cinder-storpool-iscsi/publish-to-charmhub.yaml b/playbooks/charm-cinder-storpool-iscsi/publish-to-charmhub.yaml
new file mode 100644
index 0000000..f551710
--- /dev/null
+++ b/playbooks/charm-cinder-storpool-iscsi/publish-to-charmhub.yaml
@@ -0,0 +1,48 @@
+- hosts: all
+ vars:
+ charm_root: "{{ zuul.project.src_dir }}"
+ tasks:
+
+ - name: Install charmcraft
+ community.general.snap:
+ name: charmcraft
+ classic: true
+ become: true
+
+ - name: Initialize lxd
+ ansible.builtin.command: lxd init --auto
+ become: true
+
+ - name: Install tox
+ ansible.builtin.apt:
+ name: tox
+ update_cache: yes
+ become: true
+
+ - name: Generate 'version' File
+ ansible.builtin.shell: echo -n "git." > version && git rev-parse --short=8 HEAD >> version
+ args:
+ chdir: "{{ charm_root }}"
+
+ - name: run build
+ ansible.builtin.shell: tox -e build
+ args:
+ chdir: "{{ charm_root }}"
+
+ - name: Upload Charm to Charmhub
+ ansible.builtin.shell: charmcraft upload --name cinder-storpool-iscsi cinder-storpool.charm
+ register: charmcraft_upload
+ args:
+ chdir: "{{ charm_root }}"
+ environment:
+ CHARMCRAFT_AUTH: "{{ CHARMCRAFT_AUTH['v'] }}"
+
+ - name: Release the Charm
+ ansible.builtin.shell: charmcraft release --revision {{ charm_revision }} --channel {{ channel }} cinder-storpool-iscsi
+ register: release_out
+ args:
+ chdir: "{{ charm_root }}"
+ vars:
+ - charm_revision: "{{ charmcraft_upload.stdout | regex_search('Revision ([0-9]+)', '\\1') | first }}"
+ environment:
+ CHARMCRAFT_AUTH: "{{ CHARMCRAFT_AUTH['v'] }}"
diff --git a/zuul.d/charm-cinder-storpool-iscsi.yaml b/zuul.d/charm-cinder-storpool-iscsi.yaml
index 16060cf..783003d 100644
--- a/zuul.d/charm-cinder-storpool-iscsi.yaml
+++ b/zuul.d/charm-cinder-storpool-iscsi.yaml
@@ -118,6 +118,19 @@
vars:
tox_env: cover
+- job:
+ name: publish-to-charmhub
+ description: "Publish Charm to Charmhub"
+ run: playbooks/charm-cinder-storpool-iscsi/publish-to-charmhub.yaml
+ timeout: 1800
+ nodeset:
+ nodes:
+ - name: controller
+ label: os-ubuntu-focal
+ secrets:
+ - name: CHARMCRAFT_AUTH
+ secret: CHARMCRAFT_AUTH
+
- project:
name: charm-cinder-storpool-iscsi
check:
diff --git a/zuul.d/charmcraft-secrets.yaml b/zuul.d/charmcraft-secrets.yaml
new file mode 100644
index 0000000..907b221
--- /dev/null
+++ b/zuul.d/charmcraft-secrets.yaml
@@ -0,0 +1,24 @@
+- secret:
+ name: CHARMCRAFT_AUTH
+ data:
+ v: !encrypted/pkcs1-oaep
+ - nzhvHxkwbVvRgSehlBspu4pRqYIxEeKaQoxgO58DTYuT9L8ksU/XdditXU+Pu2NQVm/Rg
+ l0p9xhZzgnlXEAghdhdn4V32BXy70igCFTIetJ2SkpJZuqZKlzUjGCjdMyZFUquYSPvYU
+ 1Ta3lrb4fsRDNz94KuHrZxU4lx+4t/FvZl518fBWoKMfXptiv2lhwro9N5Wx4tDqdpG8W
+ 8iYKKsnKl9LvmU//TRkNkiGqAgkvB3Ld6NTk0esd3KOk2975GBvNicgB7axTUA6D1dqrK
+ LPVZHz0SsNOi+/gQSYtorxbf3qWc5T3XsaBWTRvBezTCUT5m99Lq6IXD5XurQEcGZYZOG
+ vJhg28ofKDU1io2qRJvpadwarigee43Vx+7tFVCVxMk3vDBGmM7FDSxG8o9rOf3IKjSXv
+ /ZTQGoi2bQXG22It9S8AUKhrRgk8jzlfqu+Wsno8pTD5ATGUjJRSEcABSVJ7V35H0Tx1/
+ kdhvGHbWJTNhBMvUI9qWx0LJiX1m0js8oalqI43QVBIVaE1iykLvYzZfuftUvc1Qe0f3H
+ sCRYp+4bwRpzhxT3kaqA3FnBfmWU19A4jjzIHJy7RKYVn5INReum5x9bmH3ye+7u/w16M
+ dEgYct1G0moBnVi63mI5HSxIkJPB11UzPsd5Wzs2ihN/sWc6aYWOFMTDrRyBnE=
+ - QwieQwpTGPjcLNZ6BQ2w7m0Y+6XuNB6q22IMSTpfY23KmSJ4WEG6pjaMrjobyfP1lU1+8
+ aiAxUuC6hBvWN9G9py45fd4ywudSmXjYf+aFOKzu39oc9aROYbZBUSJoftH0+3bvDX/qL
+ Hr3GeiGxf5udX00o50NAgSopmqBCAT2kf2UBeIRq5ZLBHDUvNm9o1KE47wn5vgqO/cJ+k
+ yFbMJmugtsAJ9Har5kKQ5tAe+w8UB/aLE9nD0cF4c28j3z/mH/hIxGC2WNs9M9gfQfYGF
+ OW+QOEZTsJaVcl5v+gXndjOITJPHgft49XGsJILtstWHVaMiMM8A84Da8ThvgDKblWfRs
+ VdaVRkiiuXCoD6ssL3ePZkEqJTCOXnH2j1e6AOK9+3MnuW24gLUipMu4AEq4+phx/gxls
+ oKcAas+wfIk1iWi7dqLscTIJB+6f3aCGd/+Q+Cdvw2qmBxLHk/b4pOW2onN8V+BZd2u//
+ MwCnzwXRaf+QqcKI/k28O/Js9dixwWPxUMvnmIpu3r0LTQW0dQlMsz7u03NpbN4MkhWqy
+ o0fYDP5LYDX9mWM3TxerUqVveB1WY9Z/7uq3B4krCw2K5ULCWiT+qq6TDyj1+We1sOkEH
+ PZPwk0bChhhvY1KVaueL59zcUnIBeI1Zobw4TW7jS2TzeS57GgCgNUm40YsrDk=