deckhand/.zuul.yaml
Ahmad Mahmoudi e7ba6828a0 (fix) Address uwsgi and other gating issues
- With Ubuntu bionic based deckhand docker image, uswsi crashes with
  segmentation fault when it tries to load psycopg2 library, causing
  the deckhand service become unavailable.
  The root cause of this problem seems to be that uwsgi and psycopg2
  binary wheels are built with different ssl libraries.
  To address this issue, upgrading psycopg2 to the latest release to
  the latest binary release.

- For opensuse 15.1 image build, python3-six was updated to address
  package not found issue.

- Updated gating ansbile playbooks to address non-voting gate failures.

Change-Id: I7be920e16e6114eb2bdbc052a6761f29008baf81
2020-02-28 21:28:56 +00:00

530 lines
20 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-python35-jobs
- openstack-python3-train-jobs
- openstack-python3-ussuri-jobs
vars:
rtd_webhook_id: '38572'
rtd_project_name: 'airship-deckhand'
check:
jobs:
- deckhand-tox-py35-postgresql
- deckhand-functional-uwsgi-py35:
voting: false
- deckhand-functional-docker-py35-ubuntu_xenial
- deckhand-functional-docker-py35-ubuntu_bionic
- deckhand-functional-docker-py35-opensuse
- deckhand-integration-uwsgi-py35:
voting: false
- deckhand-integration-docker-py35-ubuntu_xenial
- deckhand-integration-docker-py35-ubuntu_bionic
- deckhand-integration-docker-py35-opensuse
- deckhand-chart-build-gate
- deckhand-chart-build-latest-htk
- deckhand-docker-build-gate-ubuntu_xenial
- deckhand-docker-build-gate-ubuntu_bionic
- deckhand-docker-build-gate-opensuse
- deckhand-airskiff-deployment
gate:
jobs:
- deckhand-tox-py35-postgresql
- deckhand-functional-docker-py35-ubuntu_xenial
- deckhand-functional-docker-py35-ubuntu_bionic
- deckhand-functional-docker-py35-opensuse
- deckhand-integration-docker-py35-ubuntu_xenial
- deckhand-integration-docker-py35-ubuntu_bionic
- deckhand-integration-docker-py35-opensuse
- deckhand-chart-build-gate
- deckhand-docker-build-gate-ubuntu_xenial
- deckhand-docker-build-gate-ubuntu_bionic
- deckhand-docker-build-gate-opensuse
- openstack-tox-pep8
post:
jobs:
- deckhand-upload-git-mirror
- deckhand-docker-publish-ubuntu_xenial
- deckhand-docker-publish-ubuntu_bionic
- deckhand-docker-publish-opensuse
- deckhand-docker-tag-ubuntu_xenial
- deckhand-docker-tag-ubuntu_bionic
- deckhand-docker-tag-opensuse
- nodeset:
name: deckhand-single-node
nodes:
- name: primary
label: ubuntu-bionic
- nodeset:
name: deckhand-single-node-airskiff
nodes:
- name: primary
label: ubuntu-bionic
- job:
name: deckhand-tox-py35-postgresql
parent: openstack-tox-py35
pre-run:
- tools/gate/playbooks/install-postgresql.yaml
vars:
tox_envlist: py35-postgresql
- job:
name: deckhand-functional-uwsgi-py35
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.5.
run: tools/gate/playbooks/run-functional-tests-uwsgi.yaml
nodeset: deckhand-single-node
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.
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-py35-ubuntu_xenial
description: |
Run tox-based functional tests for the Airship Deckhand project under
cPython version 3.5. Uses tox with the ``functional-py35`` environment.
Ubuntu (xenial) image is built and used.
parent: deckhand-functional-docker-base
nodeset: deckhand-single-node
vars:
tox_envlist: functional
disable_keystone: true
distro: ubuntu_xenial
irrelevant-files: *irrelevant-files
- job:
name: deckhand-functional-docker-py35-ubuntu_bionic
description: |
Run tox-based functional tests for the Airship Deckhand project under
cPython version 3.5. Uses tox with the ``functional-py35`` 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-functional-docker-py35-opensuse
description: |
Run tox-based functional tests for the Airship Deckhand project under
cPython version 3.5. Uses tox with the ``functional-py35`` environment.
Opensuse image is built and used.
parent: deckhand-functional-docker-base
nodeset: deckhand-single-node
vars:
tox_envlist: functional
disable_keystone: true
distro: opensuse_15
irrelevant-files: *irrelevant-files
- job:
name: deckhand-integration-uwsgi-py35
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.5.
timeout: 3600
run: tools/gate/playbooks/run-integration-tests-uwsgi.yaml
nodeset: deckhand-single-node
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
- job:
name: deckhand-chart-build-latest-htk
description: |
Build charts using latest Helm toolkit.
voting: false
timeout: 900
run: tools/gate/playbooks/build-charts.yaml
nodeset: deckhand-single-node
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.
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-py35-ubuntu_xenial
description: |
Run tox-based integration tests for the Airship Deckhand project under
cPython version 3.5. Builds ubuntu (xenial) deckhand image.
parent: deckhand-integration-docker-base
nodeset: openstack-helm-single-node
vars:
disable_keystone: false
distro: ubuntu_xenial
- job:
name: deckhand-integration-docker-py35-ubuntu_bionic
description: |
Run tox-based integration tests for the Airship Deckhand project under
cPython version 3.5. 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
nodeset: deckhand-single-node-airskiff
description: |
Deploy Memcached using Airskiff and submitted Deckhand changes.
timeout: 9600
voting: false
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-integration-docker-py35-opensuse
description: |
Run tox-based integration tests for the Airship Deckhand project under
cPython version 3.5. Builds opensuse deckhand image.
parent: deckhand-integration-docker-base
nodeset: openstack-helm-single-node
vars:
disable_keystone: false
distro: opensuse_15
- job:
name: deckhand-docker-build-gate-ubuntu_xenial
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_xenial
tags:
dynamic:
patch_set: true
- job:
name: deckhand-docker-build-gate-ubuntu_bionic
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-build-gate-opensuse
timeout: 1800
run: tools/gate/playbooks/docker-image-build.yaml
nodeset: deckhand-single-node
irrelevant-files: *non-code-files-template
vars:
publish: false
distro: opensuse_15
tags:
dynamic:
patch_set: true
- job:
name: deckhand-docker-publish-ubuntu_xenial
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_xenial
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: 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-publish-opensuse
description: |
Runs on every merge, unless files in a dictionary below are changed.
Builds and publishes container opensuse 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: opensuse_15
tags:
dynamic:
branch: true
commit: true
static:
- latest
- job:
name: deckhand-docker-tag-ubuntu_xenial
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_xenial
- 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: 1800
run: tools/gate/playbooks/docker-image-tag.yaml
nodeset:
nodes: []
secrets:
- airship_deckhand_quay_creds
vars:
distro: ubuntu_bionic
- job:
name: deckhand-docker-tag-opensuse
description: |
Runs on every merge when files in a dictionalry below are changed, and
adds git commit id tag onto the opensuse 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: opensuse_15
# file pattern here must be exactly the same as in
# deckhand-docker-publish job above,
# job will be executed on merge only when any of this files get changed
files: *non-code-files-template
- 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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