# 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 - openstack-python36-jobs vars: rtd_webhook_id: '38572' rtd_project_name: 'airship-deckhand' check: jobs: - deckhand-tox-py36-postgresql - deckhand-tox-py38-postgresql - deckhand-functional-uwsgi-py36 - deckhand-functional-uwsgi-py38 - deckhand-functional-docker-py38-ubuntu_focal - deckhand-functional-docker-py36-ubuntu_bionic - deckhand-integration-uwsgi-py36 - deckhand-integration-uwsgi-py38 - deckhand-integration-docker-py38-ubuntu_focal - deckhand-integration-docker-py36-ubuntu_bionic - deckhand-chart-build-gate - deckhand-chart-build-latest-htk - deckhand-docker-build-gate-ubuntu_focal - deckhand-docker-build-gate-ubuntu_bionic - openstack-tox-pep8 - deckhand-airskiff-deployment-focal - deckhand-airskiff-deployment-bionic gate: jobs: - deckhand-tox-py36-postgresql - deckhand-tox-py38-postgresql - deckhand-functional-uwsgi-py36 - deckhand-functional-uwsgi-py38 - deckhand-functional-docker-py38-ubuntu_focal - deckhand-functional-docker-py36-ubuntu_bionic - deckhand-integration-uwsgi-py36 - deckhand-integration-uwsgi-py38 - 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 - deckhand-airskiff-deployment-focal - deckhand-airskiff-deployment-bionic post: jobs: - deckhand-upload-git-mirror - deckhand-docker-publish-ubuntu_focal # - deckhand-docker-tag-ubuntu_focal - deckhand-docker-publish-ubuntu_bionic # - 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-airskiff-focal nodes: - name: primary label: ubuntu-focal - 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-tox-py36-postgresql parent: openstack-tox-py38 nodeset: deckhand-single-node pre-run: - tools/gate/playbooks/install-postgresql.yaml vars: tox_envlist: py36-postgresql - job: name: deckhand-functional-uwsgi-py36 voting: true 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.6. run: tools/gate/playbooks/run-functional-tests-uwsgi.yaml nodeset: deckhand-single-node vars: tox_envlist: py36-functional-dev distro: ubuntu_bionic irrelevant-files: &irrelevant-files - ^.*\.rst$ - ^doc/.*$ - ^etc/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^deckhand/tests/unit/.*$ - job: name: deckhand-functional-uwsgi-py38 voting: true 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: py38-functional-dev distro: ubuntu_focal irrelevant-files: *irrelevant-files - 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: py38-functional disable_keystone: true distro: ubuntu_focal irrelevant-files: *irrelevant-files - job: name: deckhand-functional-docker-py36-ubuntu_bionic description: | Run tox-based functional tests for the Airship Deckhand project under cPython version 3.6. Uses tox with the ``functional-py36`` environment. Ubuntu (focal) image is built and used. parent: deckhand-functional-docker-base nodeset: deckhand-single-node vars: tox_envlist: py36-functional disable_keystone: true distro: ubuntu_bionic irrelevant-files: *irrelevant-files - job: name: deckhand-integration-uwsgi-py36 voting: true 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.6. timeout: 3600 run: tools/gate/playbooks/run-integration-tests-uwsgi.yaml nodeset: deckhand-single-node irrelevant-files: *irrelevant-files vars: disable_keystone: true distro: ubuntu_bionic - job: name: deckhand-integration-uwsgi-py38 voting: true 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 distro: ubuntu_focal - 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 description: | Run tox-based integration tests for the Airship Deckhand project under cPython version 3.6. 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-airskiff-deployment-focal voting: true nodeset: deckhand-single-node-airskiff-focal 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 OSH_INFRA_COMMIT: 443ff3e3e340c94c5cbb214d1e2a8b2a3937541d DECKHAND_IMAGE_DISTRO: ubuntu_focal distro: ubuntu_focal irrelevant-files: - ^.*\.rst$ - ^doc/.*$ - ^releasenotes/.*$ - job: name: deckhand-airskiff-deployment-bionic voting: true nodeset: deckhand-single-node-airskiff-focal 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 OSH_INFRA_COMMIT: 443ff3e3e340c94c5cbb214d1e2a8b2a3937541d DECKHAND_IMAGE_DISTRO: ubuntu_bionic distro: ubuntu_focal irrelevant-files: - ^.*\.rst$ - ^doc/.*$ - ^releasenotes/.*$ - job: name: deckhand-docker-build-gate-ubuntu_focal timeout: 3600 run: tools/gate/playbooks/docker-image-build.yaml nodeset: deckhand-single-node-focal 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 timeout: 3600 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: 3600 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 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: 3600 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: 3600 # 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 # 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: 3600 # 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-2023-03-23 pass-to-parent: true - secret: name: deckhand-airshipit-github-secret-2023-03-23 data: user: git host: github.com host_key: github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= ssh_key: !encrypted/pkcs1-oaep - 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