
update dockerfile for python deckhand install add deckhand version to chart 1.0 add chart version 0.2.0 update all packages to latest in requirements.txt update zuul jobs for focal and python 3.8 remove zuul job functional-uwsgi-py38 in favor of functional-docker-py38 update tox config typecast to string in re.sub() function add stestr to test-requirements.txt add SQLAlchemy jsonpickle sphinx-rtd-theme stestr to requirements.txt deprecated function: BarbicanException -> BarbicanClientException fix mock import using unittest fix import collections to collections.abc fix for collections modules for older than python 3.10 versions. deprecated function: json -> to_json deprecated function: werkzeug.contrib.profiler -> werkzeug.middleware.profiler deprecated function: falcon.AIP -> falcon.App deprecation warning: switch from resp.body to resp.text rename fixtures to dh_fixtures because there is an imported module fixtures switch from stream.read to bounded_stream.read deprecated function: falcon process_response needed additional parameter deprecated function: falcon default_exception_handler changed parameter order move from MagicMock object to falcon test generated object to fix incompatability with upgraded Falcon module. Adjust gabbi tests to fix incompatability with upgraded DeepDiff module update Makefile to execute ubuntu_focal update HTK (helmtoolkit) unpin barbican to pass integration tests Use helm 3 in chart build. `helm serve` is removed in helm 3 so this moves to using local `file://` dependencies [0] instead. Change-Id: I180416f480edea1b8968d80c993b3e1fcc95c08d
469 lines
18 KiB
YAML
469 lines
18 KiB
YAML
# 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.
|
|
|
|
- project:
|
|
templates:
|
|
- openstack-cover-jobs
|
|
- docs-on-readthedocs
|
|
- openstack-python38-jobs
|
|
vars:
|
|
rtd_webhook_id: '38572'
|
|
rtd_project_name: 'airship-deckhand'
|
|
check:
|
|
jobs:
|
|
- deckhand-tox-py38-postgresql
|
|
# Remove in favor of deckhand-functional-docker-py38 it runs the
|
|
# same tests just in a container
|
|
# - deckhand-functional-uwsgi-py38
|
|
- deckhand-functional-docker-py38-ubuntu_focal
|
|
# non-voting, failing, incompatable with updates
|
|
# - deckhand-functional-docker-py36-ubuntu_bionic
|
|
# non-voting, failing, incompatable with updates
|
|
# Remove in favor of deckhand-uwsgi-docker-py38 it runs the
|
|
# same tests just in a container
|
|
# - deckhand-integration-uwsgi-py38
|
|
- deckhand-integration-docker-py38-ubuntu_focal
|
|
# non-voting, failing, incompatable with updates
|
|
# - deckhand-integration-docker-py36-ubuntu_bionic
|
|
- deckhand-chart-build-gate
|
|
- deckhand-chart-build-latest-htk
|
|
- deckhand-docker-build-gate-ubuntu_focal
|
|
# non-voting, failing, incompatable with updates
|
|
# - deckhand-docker-build-gate-ubuntu_bionic
|
|
- openstack-tox-pep8
|
|
- deckhand-airskiff-deployment
|
|
gate:
|
|
jobs:
|
|
- deckhand-tox-py38-postgresql
|
|
- deckhand-functional-docker-py38-ubuntu_focal
|
|
- deckhand-functional-docker-py36-ubuntu_bionic
|
|
- deckhand-integration-docker-py38-ubuntu_focal
|
|
- deckhand-integration-docker-py36-ubuntu_bionic
|
|
- deckhand-chart-build-gate
|
|
- deckhand-docker-build-gate-ubuntu_focal
|
|
- deckhand-docker-build-gate-ubuntu_bionic
|
|
- openstack-tox-pep8
|
|
post:
|
|
jobs:
|
|
- deckhand-upload-git-mirror
|
|
- deckhand-docker-publish-ubuntu_focal
|
|
- deckhand-docker-publish-ubuntu_bionic
|
|
- deckhand-docker-tag-ubuntu_focal
|
|
- deckhand-docker-tag-ubuntu_bionic
|
|
|
|
- nodeset:
|
|
name: deckhand-single-node
|
|
nodes:
|
|
- name: primary
|
|
label: ubuntu-bionic
|
|
|
|
- nodeset:
|
|
name: deckhand-single-node-airskiff
|
|
nodes:
|
|
- name: primary
|
|
label: ubuntu-bionic
|
|
|
|
- nodeset:
|
|
name: deckhand-single-node-focal
|
|
nodes:
|
|
- name: primary
|
|
label: ubuntu-focal
|
|
|
|
- nodeset:
|
|
name: deckhand-single-node-jammy
|
|
nodes:
|
|
- name: primary
|
|
label: ubuntu-jammy
|
|
|
|
- job:
|
|
name: deckhand-tox-py38-postgresql
|
|
parent: openstack-tox-py38
|
|
nodeset: deckhand-single-node-focal
|
|
pre-run:
|
|
- tools/gate/playbooks/install-postgresql.yaml
|
|
vars:
|
|
tox_envlist: py38-postgresql
|
|
|
|
- job:
|
|
name: deckhand-functional-uwsgi-py38
|
|
voting: false
|
|
description: |
|
|
Run tox-based functional tests for the Airship Deckhand project using a
|
|
minimalistic deployment consisting of uwsgi for Deckhand API and pifpaf
|
|
for ephemeral PostgreSQL DB, under cPython version 3.8.
|
|
run: tools/gate/playbooks/run-functional-tests-uwsgi.yaml
|
|
nodeset: deckhand-single-node-focal
|
|
vars:
|
|
tox_envlist: functional-dev
|
|
irrelevant-files: &irrelevant-files
|
|
- ^.*\.rst$
|
|
- ^doc/.*$
|
|
- ^etc/.*$
|
|
- ^releasenotes/.*$
|
|
- ^setup.cfg$
|
|
- ^deckhand/tests/unit/.*$
|
|
|
|
- job:
|
|
name: deckhand-functional-docker-base
|
|
description: |
|
|
Base job for running deckhand functional tests. Runs tests
|
|
against Docker image generated from source code.
|
|
nodeset: deckhand-single-node-focal
|
|
roles:
|
|
- zuul: openstack/openstack-helm-infra
|
|
timeout: 3600
|
|
pre-run:
|
|
- tools/gate/playbooks/osh-infra-upgrade-host.yaml
|
|
- tools/gate/playbooks/osh-infra-deploy-docker.yaml
|
|
run: tools/gate/playbooks/run-functional-tests-docker.yaml
|
|
required-projects:
|
|
- openstack/openstack-helm-infra
|
|
|
|
- job:
|
|
name: deckhand-functional-docker-py38-ubuntu_focal
|
|
description: |
|
|
Run tox-based functional tests for the Airship Deckhand project under
|
|
cPython version 3.8. Uses tox with the ``functional-py38`` environment.
|
|
Ubuntu (focal) image is built and used.
|
|
parent: deckhand-functional-docker-base
|
|
nodeset: deckhand-single-node-focal
|
|
vars:
|
|
tox_envlist: functional
|
|
disable_keystone: true
|
|
distro: ubuntu_focal
|
|
irrelevant-files: *irrelevant-files
|
|
|
|
- job:
|
|
name: deckhand-functional-docker-py36-ubuntu_bionic
|
|
voting: false
|
|
description: |
|
|
Run tox-based functional tests for the Airship Deckhand project under
|
|
cPython version 3.6. Uses tox with the ``functional-py36`` environment.
|
|
Ubuntu (bionic) image is built and used.
|
|
parent: deckhand-functional-docker-base
|
|
nodeset: deckhand-single-node
|
|
vars:
|
|
tox_envlist: functional
|
|
disable_keystone: true
|
|
distro: ubuntu_bionic
|
|
irrelevant-files: *irrelevant-files
|
|
|
|
- job:
|
|
name: deckhand-integration-uwsgi-py38
|
|
voting: false
|
|
description: |
|
|
Run tox-based integration tests for the Airship Deckhand project using a
|
|
minimalistic deployment consisting of uwsgi for Deckhand API and pifpaf
|
|
for ephemeral PostgreSQL DB, under cPython version 3.8.
|
|
timeout: 3600
|
|
run: tools/gate/playbooks/run-integration-tests-uwsgi.yaml
|
|
nodeset: deckhand-single-node-focal
|
|
irrelevant-files: *irrelevant-files
|
|
vars:
|
|
disable_keystone: true
|
|
|
|
- job:
|
|
name: deckhand-chart-build-gate
|
|
description: |
|
|
Build charts using pinned Helm toolkit.
|
|
timeout: 900
|
|
run: tools/gate/playbooks/build-charts.yaml
|
|
nodeset: deckhand-single-node-focal
|
|
|
|
- job:
|
|
name: deckhand-chart-build-latest-htk
|
|
description: |
|
|
Build charts using latest Helm toolkit.
|
|
timeout: 900
|
|
run: tools/gate/playbooks/build-charts.yaml
|
|
nodeset: deckhand-single-node-focal
|
|
vars:
|
|
HTK_COMMIT: master
|
|
|
|
- job:
|
|
name: deckhand-integration-docker-base
|
|
description: |
|
|
Base job for running deckhand integration tests. Runs tests
|
|
against Docker image generated from source code.
|
|
nodeset: deckhand-single-node-focal
|
|
timeout: 3600
|
|
roles:
|
|
- zuul: openstack/openstack-helm-infra
|
|
vars:
|
|
zuul_osh_relative_path: ../../openstack/openstack-helm/
|
|
zuul_osh_infra_relative_path: ../../openstack/openstack-helm-infra/
|
|
pre-run:
|
|
- tools/gate/playbooks/osh-infra-upgrade-host.yaml
|
|
- tools/gate/playbooks/osh-infra-deploy-docker.yaml
|
|
run:
|
|
- tools/gate/playbooks/run-integration-tests-docker.yaml
|
|
post-run: tools/gate/playbooks/osh-infra-collect-logs.yaml
|
|
required-projects:
|
|
- openstack/openstack-helm
|
|
- openstack/openstack-helm-infra
|
|
irrelevant-files:
|
|
- ^.*\.rst$
|
|
- ^doc/.*$
|
|
- ^releasenotes/.*$
|
|
|
|
- job:
|
|
name: deckhand-integration-docker-py38-ubuntu_focal
|
|
description: |
|
|
Run tox-based integration tests for the Airship Deckhand project under
|
|
cPython version 3.8. Builds ubuntu (focal) deckhand image.
|
|
parent: deckhand-integration-docker-base
|
|
nodeset: openstack-helm-single-node
|
|
vars:
|
|
disable_keystone: false
|
|
distro: ubuntu_focal
|
|
|
|
- job:
|
|
name: deckhand-integration-docker-py36-ubuntu_bionic
|
|
voting: false
|
|
description: |
|
|
Run tox-based integration tests for the Airship Deckhand project under
|
|
cPython version 3.6. Builds ubuntu (bionic) deckhand image.
|
|
parent: deckhand-integration-docker-base
|
|
nodeset: openstack-helm-single-node
|
|
vars:
|
|
disable_keystone: false
|
|
distro: ubuntu_bionic
|
|
|
|
- job:
|
|
name: deckhand-airskiff-deployment
|
|
voting: false
|
|
nodeset: deckhand-single-node-airskiff
|
|
description: |
|
|
Deploy Memcached using Airskiff and submitted Deckhand changes.
|
|
timeout: 9600
|
|
pre-run:
|
|
- tools/gate/playbooks/airskiff-reduce-site.yaml
|
|
- tools/gate/playbooks/git-config.yaml
|
|
run: tools/gate/playbooks/airskiff-deploy.yaml
|
|
post-run: tools/gate/playbooks/debug-report.yaml
|
|
required-projects:
|
|
- airship/treasuremap
|
|
vars:
|
|
CLONE_DECKHAND: false
|
|
irrelevant-files:
|
|
- ^.*\.rst$
|
|
- ^doc/.*$
|
|
- ^releasenotes/.*$
|
|
|
|
- job:
|
|
name: deckhand-docker-build-gate-ubuntu_focal
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-build.yaml
|
|
nodeset: deckhand-single-node
|
|
irrelevant-files: &non-code-files-template
|
|
- ^.*\.rst$
|
|
- ^doc/.*$
|
|
- ^charts/.*$
|
|
- ^etc/.*$
|
|
- ^releasenotes/.*$
|
|
- ^setup.cfg$
|
|
vars:
|
|
publish: false
|
|
distro: ubuntu_focal
|
|
tags:
|
|
dynamic:
|
|
patch_set: true
|
|
|
|
- job:
|
|
name: deckhand-docker-build-gate-ubuntu_bionic
|
|
voting: false
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-build.yaml
|
|
nodeset: deckhand-single-node
|
|
irrelevant-files: *non-code-files-template
|
|
vars:
|
|
publish: false
|
|
distro: ubuntu_bionic
|
|
tags:
|
|
dynamic:
|
|
patch_set: true
|
|
|
|
- job:
|
|
name: deckhand-docker-publish-ubuntu_focal
|
|
description: |
|
|
Runs on every merge, unless files in a dictionary below are changed.
|
|
Builds and publishes container ubuntu images on quay.io with a set of tags
|
|
listed in vars section. Waits in Zuul queue for a node (VM) assignment.
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-build.yaml
|
|
nodeset: deckhand-single-node-focal
|
|
secrets:
|
|
- airship_deckhand_quay_creds
|
|
irrelevant-files: *non-code-files-template
|
|
vars:
|
|
publish: true
|
|
distro: ubuntu_focal
|
|
tags:
|
|
dynamic:
|
|
branch: true
|
|
commit: true
|
|
static:
|
|
- latest
|
|
|
|
- job:
|
|
name: deckhand-docker-publish-ubuntu_bionic
|
|
voting: false
|
|
description: |
|
|
Runs on every merge, unless files in a dictionary below are changed.
|
|
Builds and publishes container ubuntu images on quay.io with a set of tags
|
|
listed in vars section. Waits in Zuul queue for a node (VM) assignment.
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-build.yaml
|
|
nodeset: deckhand-single-node
|
|
secrets:
|
|
- airship_deckhand_quay_creds
|
|
irrelevant-files: *non-code-files-template
|
|
vars:
|
|
publish: true
|
|
distro: ubuntu_bionic
|
|
tags:
|
|
dynamic:
|
|
branch: true
|
|
commit: true
|
|
static:
|
|
- latest
|
|
|
|
- job:
|
|
name: deckhand-docker-tag-ubuntu_focal
|
|
description: |
|
|
Runs on every merge when files in a dictionalry below are changed, and
|
|
adds git commit id tag onto the ubuntu container image published on quay.io,
|
|
which has `latest` tag set. Does not wait in queue for a node (VM)
|
|
assignment, runs almost immediately.
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-tag.yaml
|
|
nodeset:
|
|
nodes: []
|
|
secrets:
|
|
- airship_deckhand_quay_creds
|
|
vars:
|
|
distro: ubuntu_focal
|
|
|
|
- job:
|
|
name: deckhand-docker-tag-ubuntu_bionic
|
|
voting: false
|
|
description: |
|
|
Runs on every merge when files in a dictionalry below are changed, and
|
|
adds git commit id tag onto the ubuntu container image published on quay.io,
|
|
which has `latest` tag set. Does not wait in queue for a node (VM)
|
|
assignment, runs almost immediately.
|
|
timeout: 1800
|
|
run: tools/gate/playbooks/docker-image-tag.yaml
|
|
nodeset:
|
|
nodes: []
|
|
secrets:
|
|
- airship_deckhand_quay_creds
|
|
vars:
|
|
distro: ubuntu_bionic
|
|
|
|
- secret:
|
|
name: airship_deckhand_quay_creds
|
|
data:
|
|
username: !encrypted/pkcs1-oaep
|
|
- eC+ZaBS1TN37yuvL2WoGkJQ8OFBSLiXxV0wAkH+2l9wLNjmT3QxwnjXTNSw883zEkE9C/
|
|
XPDUxgv7RMLO/Bfs7uXKH1QjCbIJREPJ7Vk6WY9BUvn6olT/JCafpRcsmAkIS4W8p0l7J
|
|
ZxelQnGm/Z2zcq4eWeKzKsFLGiAHyoFASXqlDf93NesR+lZ4xnZkO24+oPMpZq6o2Xr2D
|
|
eWrxEcEsn817o7bA5d9mHb3u2e4tgyxhRevz43VD+0p1bK1thjRnUVpmOvHNjGI+jphAT
|
|
Vf2+Zqys0+xJ4yJ62bhnayvLZeaKD96rLIXCsbm4xYWsyrzCYvJQ4nESY7McYoDEG6PgL
|
|
3Gr/6oyNUzobQNAxuwo0GpecaBVy5Z1/8Ihlb8r1nNM3J0a7oz1PyPS4O7WRlQmXgHJ/x
|
|
jJJmh66ruDxi1bcarmn4AR6lWmfyFqHwIlptsvX9AcJd4FWII9ZYdTUiidJ9ob4KmchIY
|
|
G0wdqGDaekNR01VgB+JD05IM4UMLjwRnFmLUKIvo0H9YU5X253rv/GXNks1Ov2OevIlch
|
|
RnnnpCESNso+xup0IztfWBkcGPGBpgmIh6T5s5bfg0n9CYEzsJMGiJuMKgeZcBvnif6Qb
|
|
y1mzFxQiyEUUPzngF6ger7sBdXSrkCv8cqWsxdeVf2xEXLCDl/x2rhfj7fa5C8=
|
|
password: !encrypted/pkcs1-oaep
|
|
- TL/cjk3UCv2QQTk/QX6ujvLpHQDgijFmBWG3r9Hg/migT1Iry/eQi/HftHhShWjF0lk6Y
|
|
kesdX49H8wXHkRutGxrmcb4HMde4clebtT0dIvVFU7/Ieoq5OnxVLdIPP3YBLZYLy5Ah5
|
|
jLtfV1FJsuRN5gVGJeOXQUhPitrEnNrcj50ke1+llvfRl7PIR1byAM/6gQLbV3oUtOgk6
|
|
jmpieqxq55yO+o76bXOp8YNNVr0eqI1nISfBoku2GL7nipAcfxDIeR3a5J4pdaJEEhJR7
|
|
qqgp1RMt/aADkBUDqw1xbF86V2Mh2l60mWtYUHm4EvOFotrzeOd6Th73K9y57cBuQRJwT
|
|
qP+T+3yuTtuwvzjgTG+h5deppsRb3EFtPYSI6TqWVKtH2zwRbTJCSbgdY03Tjrwn9vZJK
|
|
QA4O1fRLBhchBqaIcpOFj8AFNPYCtz6cvL0uzAHXfQoQ3r9icNlPg0N5W2VINxYvDIiOc
|
|
Lfpty/EyKOJJpOXoBiJlsGHFLi/8gdMAAtMDf72yrQH6KxdNxdRGs5oALkUQ1IcuLbXng
|
|
ySP8WG+DBiwjt4IAtwd/sF+jyVBzDaywxdbS6RJycI+lRThvibQ5UFpr349yOhUdETB6p
|
|
yzFswIVmx1tHM7NhD80zwdSEj4EjG0AL3GXuwfLHGbr5WIeCaVEuCMW+XUwQpw=
|
|
# Token is valid for 10 years, expires on 10/10/2028
|
|
token: !encrypted/pkcs1-oaep
|
|
- Can0JzCSPRnujg8fZBtSXvLuGVRNaaoVkvCm8EKlqohnUmaryU7ColJxWYjPBxEEePxhB
|
|
mzkM5pD9o8PVkkUj5wxxUXlFDO73AMiwStmh2r/p+sd7bkgw5a2jzhYpBmVtn/qmEemsm
|
|
iIxQi0kz81qrU0H6w3r58lgskIIbD4yOYgu4DeoWmBU+yZ1V1E5RoumVQBdxB1fyenaKG
|
|
zR4Y6ebek31+VAlqSN0HUIYMgbc6Mt7ErEn2wjj9MxNvvP52pWDyxr5U2kKpOYdJpZt9h
|
|
EZgM2cF2zfuG+4KnpdONap54uVRnRcJCf6poI/l4UVYO5Z+EvlF3Xawp3jiPCMCGGy3dd
|
|
lEeEkvNzJppwAj5bEWT1NoFi7PigkK91znppVHu17jBEKkcl2S6LK87RTjfqnBsAmE30d
|
|
ibxqS7pCoSCGuUCP4XrW8QfI70Ml4Gb636bZUqZFi1WxzhfNKSO8LBPHekVQnwrmhhv2Z
|
|
CN9JZdtqR49JpHajubfYrtWxPHuiwnTwgsnpkpM0+5Z1nss/nQhW70uCBXvJkYUtenV87
|
|
c4Exr6ncOjgtqtjheW16hAGLtm2o36ZvBoLD7yqwYAjwb0bfuzDrw8oWa2yAgOcWnHPO6
|
|
w0lNv46YTHiJK9hezHqI0hgn5wifVI8avRZmHwaArVvX4LUXD2N/Tk7mxi7r2U=
|
|
|
|
- job:
|
|
name: deckhand-upload-git-mirror
|
|
parent: upload-git-mirror
|
|
description: Mirrors airship/deckhand to airshipit/deckhand
|
|
vars:
|
|
git_mirror_repository: airshipit/deckhand
|
|
secrets:
|
|
- name: git_mirror_credentials
|
|
secret: deckhand-airshipit-github-secret
|
|
pass-to-parent: true
|
|
|
|
- secret:
|
|
name: deckhand-airshipit-github-secret
|
|
data:
|
|
user: git
|
|
host: github.com
|
|
host_key: github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
|
|
ssh_key: !encrypted/pkcs1-oaep
|
|
- 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
- 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
- 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
- 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
|