updates for focal

add focal dockerfile
update zuul jobs for focal
update tox for tox4 changes
update all requirements to latest and match deckhand
update cfssl from R1.2 to v1.6.3
fixed local gates for focal
updated examples promenade manifests to run on focal

Change-Id: I2af4043784766d36588c6f738053ad66e7b89a90
This commit is contained in:
Wahlstedt, Walter (ww229g) 2022-12-19 16:02:39 -05:00
parent 3ba747bb48
commit 8ce937a9f7
53 changed files with 753 additions and 358 deletions

View File

@ -25,7 +25,7 @@ PUSH_IMAGE ?= false
# use this variable for image labels added in internal build process # use this variable for image labels added in internal build process
LABEL ?= org.airshipit.build=community LABEL ?= org.airshipit.build=community
COMMIT ?= $(shell git rev-parse HEAD) COMMIT ?= $(shell git rev-parse HEAD)
DISTRO ?= ubuntu_bionic DISTRO ?= ubuntu_focal
PYTHON = python3 PYTHON = python3
CHARTS := $(filter-out deps, $(patsubst charts/%/.,%,$(wildcard charts/*/.))) CHARTS := $(filter-out deps, $(patsubst charts/%/.,%,$(wildcard charts/*/.)))
IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO} IMAGE := ${DOCKER_REGISTRY}/${IMAGE_PREFIX}/${IMAGE_NAME}:${IMAGE_TAG}-${DISTRO}
@ -43,7 +43,7 @@ docs: clean
tox -e docs tox -e docs
tests-unit: external-deps tests-unit: external-deps
tox -e py36 tox -e py38
external-deps: external-deps:
./tools/install-external-deps.sh ./tools/install-external-deps.sh
@ -51,6 +51,9 @@ external-deps:
tests-pep8: tests-pep8:
tox -e pep8 tox -e pep8
tests-freeze:
tox -e freeze
chartbanner: chartbanner:
@echo Building charts: $(CHARTS) @echo Building charts: $(CHARTS)

View File

@ -2,3 +2,4 @@ apiVersion: v1
description: The Promenade API description: The Promenade API
name: promenade name: promenade
version: 0.1.0 version: 0.1.0
appVersion: 1.1.0

View File

@ -1,5 +1,5 @@
sphinx>=1.6.2 sphinx>=1.6.2
sphinx_rtd_theme==0.2.4 sphinx_rtd_theme==0.2.4
falcon==1.4.1 falcon>=1.4.1
oslo.config==7.0.0 oslo.config==7.0.0
markupsafe==2.0.1 markupsafe==2.0.1

View File

@ -57,9 +57,9 @@ author = u'Promenade Authors'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = u'0.1.0' version = u'0.9.0'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = u'0.1.0' release = u'0.9.0'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.

View File

@ -26,7 +26,7 @@ Sample Document to run containers in Docker runtime
monitoring_image: busybox:1.28.3 monitoring_image: busybox:1.28.3
packages: packages:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -73,6 +73,14 @@ data:
mode: 0744 mode: 0744
content: |- content: |-
export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml
- path: /etc/containerd/config.toml
mode: 0400
content: |-
version = 2
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry:5000"]
endpoint = ["http://registry:5000"]
images: images:
monitoring_image: &busybox busybox:1.28.3 monitoring_image: &busybox busybox:1.28.3
haproxy: haproxy:1.8.3 haproxy: haproxy:1.8.3
@ -81,8 +89,8 @@ data:
packages: packages:
common: common:
repositories: repositories:
- deb https://download.ceph.com/debian-nautilus/ bionic main - deb https://download.ceph.com/debian-nautilus/ focal main
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -9,6 +9,8 @@ metadata:
storagePolicy: cleartext storagePolicy: cleartext
data: data:
arguments: arguments:
- --container-runtime=remote
- --container-runtime-endpoint=unix:///run/containerd/containerd.sock
- --v=3 - --v=3
images: images:
pause: k8s.gcr.io/pause-amd64:3.1 pause: k8s.gcr.io/pause-amd64:3.1

View File

@ -109,9 +109,9 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -133,9 +133,9 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -501,7 +501,7 @@ data:
CLUSTER_TYPE: CLUSTER_TYPE:
- k8s - k8s
- bgp - bgp
IP_AUTODETECTION_METHOD: interface=ens3 IP_AUTODETECTION_METHOD: interface=ens1
WAIT_FOR_STORAGE: "true" WAIT_FOR_STORAGE: "true"
endpoints: endpoints:
@ -533,8 +533,8 @@ data:
service_calico_etcd: false service_calico_etcd: false
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
subpath: calico subpath: calico
dependencies: dependencies:
- infra-helm-toolkit - infra-helm-toolkit

View File

@ -8,6 +8,9 @@ metadata:
layer: site layer: site
storagePolicy: cleartext storagePolicy: cleartext
data: data:
systemd_units:
kube-cgroup:
enable: true
files: files:
- path: /opt/kubernetes/bin/kubelet - path: /opt/kubernetes/bin/kubelet
tar_url: https://dl.k8s.io/v1.24.4/kubernetes-node-linux-amd64.tar.gz tar_url: https://dl.k8s.io/v1.24.4/kubernetes-node-linux-amd64.tar.gz
@ -17,6 +20,38 @@ data:
tar_url: https://dl.k8s.io/v1.24.4/kubernetes-node-linux-amd64.tar.gz tar_url: https://dl.k8s.io/v1.24.4/kubernetes-node-linux-amd64.tar.gz
tar_path: kubernetes/node/bin/kubectl tar_path: kubernetes/node/bin/kubectl
mode: 0555 mode: 0555
- path: /etc/systemd/system/kube-cgroup.service
content: |
[Unit]
Description=Create and tune cgroup for Kubernetes Pods
Requires=network-online.target
Before=kubelet.service
[Service]
Delegate=yes
ExecStart=/usr/local/sbin/kube-cgroup.sh
[Install]
RequiredBy=kubelet.service
mode: 0444
- path: /usr/local/sbin/kube-cgroup.sh
mode: 0744
content: |-
#!/bin/bash
set -x
KUBE_CGROUP=${KUBE_CGROUP:-"kube_whitelist"}
SYSTEMD_ABSPATH="/sys/fs/cgroup/systemd/$KUBE_CGROUP"
CPUSET_ABSPATH="/sys/fs/cgroup/cpuset/$KUBE_CGROUP"
CPU_ABSPATH="/sys/fs/cgroup/cpu/$KUBE_CGROUP"
MEM_ABSPATH="/sys/fs/cgroup/memory/$KUBE_CGROUP"
PIDS_ABSPATH="/sys/fs/cgroup/pids/$KUBE_CGROUP"
for cg in $SYSTEMD_ABSPATH $CPUSET_ABSPATH $CPU_ABSPATH $MEM_ABSPATH $PIDS_ABSPATH
do
mkdir -p "$cg"
done
- path: /etc/logrotate.d/json-logrotate - path: /etc/logrotate.d/json-logrotate
mode: 0444 mode: 0444
content: |- content: |-
@ -38,6 +73,14 @@ data:
mode: 0744 mode: 0744
content: |- content: |-
export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml
- path: /etc/containerd/config.toml
mode: 0400
content: |-
version = 2
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry:5000"]
endpoint = ["http://registry:5000"]
images: images:
monitoring_image: busybox:1.28.3 monitoring_image: busybox:1.28.3
haproxy: haproxy:1.8.3 haproxy: haproxy:1.8.3
@ -46,7 +89,7 @@ data:
packages: packages:
common: common:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
@ -121,7 +164,7 @@ data:
socat: socat socat: socat
genesis: genesis:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
@ -196,7 +239,7 @@ data:
socat: socat socat: socat
join: join:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -9,10 +9,9 @@ metadata:
storagePolicy: cleartext storagePolicy: cleartext
data: data:
arguments: arguments:
- --cni-bin-dir=/opt/cni/bin - --container-runtime=remote
- --cni-conf-dir=/etc/cni/net.d - --container-runtime-endpoint=unix:///run/containerd/containerd.sock
- --network-plugin=cni - --v=3
- --v=5
images: images:
pause: k8s.gcr.io/pause-amd64:3.1 pause: k8s.gcr.io/pause-amd64:3.1
config_file_overrides: config_file_overrides:

View File

@ -150,9 +150,9 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -175,9 +175,9 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -522,7 +522,7 @@ data:
CLUSTER_TYPE: CLUSTER_TYPE:
- k8s - k8s
- bgp - bgp
IP_AUTODETECTION_METHOD: interface=ens3 IP_AUTODETECTION_METHOD: interface=ens1
WAIT_FOR_STORAGE: "true" WAIT_FOR_STORAGE: "true"
endpoints: endpoints:
@ -553,7 +553,7 @@ data:
service_calico_etcd: false service_calico_etcd: false
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
reference: master reference: master
subpath: calico subpath: calico
dependencies: dependencies:

View File

@ -111,7 +111,7 @@ data:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -135,7 +135,7 @@ data:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -428,7 +428,7 @@ data:
source: source:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
subpath: calico subpath: calico
dependencies: dependencies:
- infra-helm-toolkit - infra-helm-toolkit

View File

@ -73,6 +73,14 @@ data:
mode: 0744 mode: 0744
content: |- content: |-
export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml export KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml
- path: /etc/containerd/config.toml
mode: 0400
content: |-
version = 2
[plugins."io.containerd.grpc.v1.cri"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry:5000"]
endpoint = ["http://registry:5000"]
images: images:
monitoring_image: &busybox busybox:1.28.3 monitoring_image: &busybox busybox:1.28.3
haproxy: haproxy:1.8.3 haproxy: haproxy:1.8.3
@ -81,7 +89,7 @@ data:
packages: packages:
common: common:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -9,9 +9,8 @@ metadata:
storagePolicy: cleartext storagePolicy: cleartext
data: data:
arguments: arguments:
- --cni-bin-dir=/opt/cni/bin - --container-runtime=remote
- --cni-conf-dir=/etc/cni/net.d - --container-runtime-endpoint=unix:///run/containerd/containerd.sock
- --network-plugin=cni
- --v=3 - --v=3
images: images:
pause: k8s.gcr.io/pause-amd64:3.1 pause: k8s.gcr.io/pause-amd64:3.1

View File

@ -111,7 +111,7 @@ data:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -135,7 +135,7 @@ data:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -401,7 +401,7 @@ data:
CLUSTER_TYPE: CLUSTER_TYPE:
- k8s - k8s
- bgp - bgp
IP_AUTODETECTION_METHOD: interface=ens3 IP_AUTODETECTION_METHOD: interface=ens1
WAIT_FOR_STORAGE: "true" WAIT_FOR_STORAGE: "true"
endpoints: endpoints:
@ -434,7 +434,7 @@ data:
source: source:
type: git type: git
location: https://opendev.org/openstack/openstack-helm-infra.git location: https://opendev.org/openstack/openstack-helm-infra.git
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
subpath: calico subpath: calico
dependencies: dependencies:
- infra-helm-toolkit - infra-helm-toolkit

View File

@ -82,7 +82,7 @@ COPY requirements-frozen.txt /opt/promenade
RUN pip3 install --no-cache-dir -r requirements-frozen.txt RUN pip3 install --no-cache-dir -r requirements-frozen.txt
# Setting promenade version for BPR # Setting promenade version for BPR
ENV PBR_VERSION 0.8.0 ENV PBR_VERSION 0.9.0
COPY . /opt/promenade COPY . /opt/promenade
RUN pip3 install -e /opt/promenade RUN pip3 install -e /opt/promenade

View File

@ -0,0 +1,95 @@
# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
#
# 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.
ARG FROM=ubuntu:20.04
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
org.opencontainers.image.url='https://airshipit.org' \
org.opencontainers.image.documentation='https://airship-promenade.readthedocs.org' \
org.opencontainers.image.source='https://opendev.org/airship/promenade' \
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
VOLUME /etc/promenade
VOLUME /target
RUN mkdir /opt/promenade
WORKDIR /opt/promenade
ENV PORT 9000
EXPOSE $PORT
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
ENTRYPOINT ["/opt/promenade/entrypoint.sh"]
RUN set -ex \
&& apt-get update -qq \
&& apt-get install --no-install-recommends -y \
automake \
ca-certificates \
curl \
dnsutils \
gcc \
git \
gpg \
gpg-agent \
libpcre3-dev \
libtool \
make \
python3-dev \
python3-pip \
python3-setuptools \
rsync \
&& ln -s /usr/bin/python3 /usr/bin/python \
&& curl -Lo /usr/local/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 \
&& chmod 555 /usr/local/bin/cfssl \
&& python3 -m pip install -U pip \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& useradd -u 1000 -g users -d /opt/promenade promenade \
&& rm -rf /var/lib/apt/lists/*
# Install LibYAML
ENV LD_LIBRARY_PATH=/usr/local/lib
ARG LIBYAML_VERSION=0.2.5
RUN set -ex \
&& git clone https://github.com/yaml/libyaml.git \
&& cd libyaml \
&& git checkout $LIBYAML_VERSION \
&& ./bootstrap \
&& ./configure \
&& make \
&& make install \
&& cd .. \
&& rm -fr libyaml
COPY requirements-frozen.txt /opt/promenade
RUN pip3 install --no-cache-dir -r requirements-frozen.txt
# Setting promenade version for BPR
ENV PBR_VERSION 0.9.0
COPY . /opt/promenade
RUN pip3 install --verbose --editable /opt/promenade \
&& echo "/opt/promenade" \
> /usr/local/lib/python3.8/dist-packages/promenade.pth
USER promenade

View File

@ -108,7 +108,11 @@ while true; do
done done
while true; do while true; do
if ! DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::="--force-confold" -y --no-install-recommends \ if ! DEBIAN_FRONTEND=noninteractive apt-get install \
-o Dpkg::Options::="--force-confold" \
-y \
--allow-downgrades \
--no-install-recommends \
{%- for role in roles %} {%- for role in roles %}
{%- for package in config.get_path('HostSystem:packages.' + role + '.required',{}).values() %} {%- for package in config.get_path('HostSystem:packages.' + role + '.required',{}).values() %}
{{ package }} \ {{ package }} \
@ -129,6 +133,9 @@ while true; do
fi fi
done done
sed -i -e 's/slot //g' /lib/systemd/network/99-default.link
DEBIAN_FRONTEND=noninteractive apt-get upgrade -o Dpkg::Options::="--force-confold" -q -y --allow-downgrades --no-install-recommends
# Start core processes # Start core processes
# #
set +x set +x

View File

@ -1,18 +1,19 @@
beaker==1.10.0 Beaker==1.12.0
click==6.7 click==8.1.3
falcon==1.4.1 falcon==3.1.1
jinja2==2.10 Jinja2==3.1.2
jsonpath-ng==1.4.3 jsonpath-ng==1.5.3
jsonschema==3.2.0 jsonschema==3.2.0
keystoneauth1==3.18.0 keystoneauth1==5.1.1
keystonemiddleware==5.3.0 keystonemiddleware==10.2.0
setuptools==40.4.3 setuptools==67.0.0
kubernetes~=24.2.0 kubernetes==24.2.0
oslo.context==2.21.0 oslo.context==5.0.0
oslo.policy==1.40.1 oslo.policy==4.0.0
pastedeploy==1.5.2 PasteDeploy==3.0.1
pylibyaml~=0.1 pylibyaml==0.1.0
pyyaml~=5.1 PyYAML==5.4.1
requests==2.22.0 requests==2.28.2
uwsgi==2.0.19.1 uWSGI==2.0.21
git+https://opendev.org/airship/deckhand.git@5cd799cc5d04527ac782270008ff647b3779ff05#egg=deckhand Deckhand @ git+https://opendev.org/airship/deckhand.git@70aa35a396d5f76753616f5289228f9c2b0e7ec7
# Deckhand @ git+https://review.opendev.org/airship/deckhand@refs/changes/93/869293/222#egg=deckhand

View File

@ -1,115 +1,136 @@
alembic==1.0.1 alabaster==0.7.13
amqp==2.6.0 alembic==1.7.1
asn1crypto==1.3.0 amqp==5.0.8
Babel==2.8.0 attrs==22.2.0
Beaker==1.10.0 autopage==0.5.1
cachetools==4.1.0 Babel==2.11.0
certifi==2020.4.5.2 bcrypt==4.0.1
cffi==1.14.0 Beaker==1.12.0
chardet==3.0.4 cachetools==5.3.0
click==6.7 certifi==2022.12.7
cliff==3.1.0 cffi==1.15.1
cmd2==0.8.9 charset-normalizer==3.0.1
cryptography==3.1.1 click==8.1.3
debtcollector==1.22.0 cliff==4.2.0
pbr==5.4.5 cmd2==2.4.3
Deckhand @ git+https://opendev.org/airship/deckhand.git@5cd799cc5d04527ac782270008ff647b3779ff05#egg=deckhand cryptography==3.4.8
decorator==4.4.2 debtcollector==2.5.0
deepdiff==3.3.0 Deckhand @ git+https://opendev.org/airship/deckhand.git@70aa35a396d5f76753616f5289228f9c2b0e7ec7
dnspython==1.16.0 decorator==5.1.1
dogpile.cache==0.9.2 deepdiff==5.8.1
eventlet==0.25.2 dnspython==2.3.0
docutils==0.17.1
dogpile.cache==1.1.8
entrypoints==0.3
eventlet==0.33.3
extras==1.0.0 extras==1.0.0
falcon==1.4.1 falcon==3.1.1
fasteners==0.15 fasteners==0.18
fixtures==3.0.0 fixtures==3.0.0
flake8===3.7.9 flake8==3.7.9
futurist==1.10.0 future==0.18.3
google-auth==1.16.1 futurist==2.4.1
greenlet==0.4.16 google-auth==2.16.1
greenlet==2.0.2
hacking==3.0.1 hacking==3.0.1
idna==2.8 idna==3.4
importlib-metadata==1.6.1 imagesize==1.4.1
ipaddress==1.0.23 importlib-metadata==6.0.0
iso8601==0.1.12 importlib-resources==5.12.0
Jinja2==2.10 iso8601==1.1.0
jsonpath-ng==1.4.3 Jinja2==3.1.2
jsonpickle==1.4.1 jsonpath-ng==1.5.3
jsonpickle==3.0.1
jsonschema==3.2.0 jsonschema==3.2.0
keystoneauth1==3.18.0 keystoneauth1==5.1.1
keystonemiddleware==5.3.0 keystonemiddleware==10.2.0
kombu==4.6.10 kombu==5.1.0
kubernetes==24.2.0; python_version >= '3.6' kubernetes==24.2.0
linecache2==1.0.0 Mako==1.2.4
Mako==1.1.3 MarkupSafe==2.1.2
MarkupSafe==1.1.1
mccabe==0.6.1 mccabe==0.6.1
monotonic==1.5 msgpack==1.0.4
msgpack==1.0.0 netaddr==0.8.0
netaddr==0.7.19 netifaces==0.11.0
netifaces==0.10.9 networkx==2.6.2
networkx==2.2 oauthlib==3.2.2
ordered-set==4.1.0
os-service-types==1.7.0 os-service-types==1.7.0
oslo.cache==1.38.1 oslo.cache==2.8.2
oslo.concurrency==3.28.1 oslo.concurrency==4.4.1
oslo.config==7.0.0 oslo.config==8.7.1
oslo.context==2.21.0 oslo.context==5.0.0
oslo.db==4.41.1 oslo.db==11.0.0
oslo.i18n==3.25.1 oslo.i18n==6.0.0
oslo.log==3.45.2 oslo.log==4.6.0
oslo.messaging==9.1.1 oslo.messaging==12.9.4
oslo.middleware==3.36.0 oslo.metrics==0.6.0
oslo.policy==1.40.1 oslo.middleware==4.4.0
oslo.serialization==2.29.2 oslo.policy==4.0.0
oslo.service==1.41.1 oslo.serialization==4.2.0
oslo.utils==3.42.1 oslo.service==3.1.1
Paste==3.0.1 oslo.utils==4.10.2
PasteDeploy==1.5.2 packaging==23.0
Paste==3.5.0
PasteDeploy==3.0.1
pbr==5.6.0
ply==3.11 ply==3.11
prettytable==0.7.2 prettytable==3.6.0
psycopg2==2.7.5 prometheus-client==0.16.0
psycopg2-binary==2.9.5
pyasn1==0.4.8 pyasn1==0.4.8
pyasn1-modules==0.2.8 pyasn1-modules==0.2.8
pycadf==2.10.0 pycadf==3.1.1
pycodestyle==2.5.0 pycodestyle==2.5.0
pycparser==2.20 pycparser==2.21
pyflakes==2.1.0 pyflakes==2.1.1
Pygments==2.14.0
pyinotify==0.9.6 pyinotify==0.9.6
pylibyaml==0.1.0 pylibyaml==0.1.0
pyparsing==2.4.7 pyparsing==3.0.9
pyperclip==1.8.0 pyperclip==1.8.2
python-barbicanclient==4.7.0 pyrsistent==0.19.3
python-dateutil==2.8.1 python-barbicanclient==5.2.0
python-editor==1.0.4 python-dateutil==2.8.2
python-keystoneclient==3.22.0 python-keystoneclient==3.22.0
python-memcached==1.59 python-memcached==1.59
python-mimeparse==1.6.0 python-subunit==1.4.2
pytz==2020.1 pytz==2022.7.1
PyYAML==5.4.1 PyYAML==5.4.1
repoze.lru==0.7 repoze.lru==0.7
requests==2.22.0 requests==2.28.2
rfc3986==1.4.0 requests-oauthlib==1.3.1
Routes==2.4.1 rfc3986==2.0.0
rsa==4.0 Routes==2.5.1
six==1.15.0 rsa==4.9
SQLAlchemy==1.3.17 six==1.16.0
snowballstemmer==2.2.0
Sphinx==5.3.0
sphinx-rtd-theme==1.1.1
sphinxcontrib-applehelp==1.0.4
sphinxcontrib-devhelp==1.0.2
sphinxcontrib-htmlhelp==2.0.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
SQLAlchemy==1.4.23
sqlalchemy-migrate==0.13.0 sqlalchemy-migrate==0.13.0
sqlparse==0.3.1 sqlparse==0.4.3
statsd==3.3.0 statsd==4.0.1
stevedore==1.32.0 stestr==3.2.0
stevedore==4.1.1
Tempita==0.5.2 Tempita==0.5.2
testresources==2.0.1 testresources==2.0.1
testscenarios==0.5.0 testscenarios==0.5.0
testtools==2.4.0 testtools==2.5.0
traceback2==1.4.0 urllib3==1.26.6
unittest2==1.1.0 uWSGI==2.0.21
urllib3==1.25.9 vine==5.0.0
uWSGI==2.0.19.1 voluptuous==0.13.1
vine==1.3.0 wcwidth==0.2.6
wcwidth==0.2.4 WebOb==1.8.7
WebOb==1.8.6 websocket-client==1.5.1
websocket-client==0.57.0 Werkzeug==2.0.1
Werkzeug==0.16.1 wrapt==1.14.1
wrapt==1.12.1 yappi==1.4.0
yappi==1.2.5 zipp==3.14.0
zipp==1.2.0

View File

@ -1,12 +1,10 @@
[metadata] [metadata]
name = promenade name = promenade
summary = 'Promenade is a tool for bootstrapping a resilient ' summary = Promenade is a tool for bootstrapping a resilient kubernetes cluster and managing its life-cycle via helm charts.
'Kubernetes cluster and managing its life-cycle via ' description_file = README.md
'Helm charts.
description-file = README.md
author = The Airship Authors author = The Airship Authors
author-email = airship-discuss@lists.airshipit.org author_email = airship-discuss@lists.airshipit.org
home-page = https://opendev.org/airship/promenade home_page = https://opendev.org/airship/promenade
classifier = classifier =
Intended Audience :: Information Technology Intended Audience :: Information Technology
@ -14,8 +12,7 @@ classifier =
License :: OSI Approved :: Apache Software License License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux Operating System :: POSIX :: Linux
Programming Language :: Python :: 3 Programming Language :: Python :: 3
Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.6
[files] [files]
packages = packages =

View File

@ -18,5 +18,6 @@ from setuptools import setup
setup( setup(
setup_requires=['setuptools>=17.1', 'pbr>=2.0.0'], setup_requires=['setuptools>=17.1', 'pbr>=2.0.0'],
pbr=True pbr=True,
packages=['promenade']
) )

View File

@ -1,4 +1,4 @@
pytest pytest
flake8===3.7.9 flake8==3.7.9
bandit>=1.5 bandit>=1.5
yapf==0.24.0 yapf==0.24.0

View File

@ -168,7 +168,7 @@ VALID_DOCS = [
'-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n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\nYT90qFF93M3v01BbxP+EIY2/9tiIPbrd\n=0YYh\n-----END PGP PUBLIC KEY BLOCK-----' '-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n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\nYT90qFF93M3v01BbxP+EIY2/9tiIPbrd\n=0YYh\n-----END PGP PUBLIC KEY BLOCK-----'
], ],
'repositories': [ 'repositories': [
'deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable' 'deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable'
], ],
'required': { 'required': {
'docker': 'docker-ce=5:19.03.8~3-0~ubuntu-bionic', 'docker': 'docker-ce=5:19.03.8~3-0~ubuntu-bionic',

View File

@ -42,7 +42,7 @@ data:
packages: packages:
common: common:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
@ -116,7 +116,7 @@ data:
socat: socat=1.7.3.1-1 socat: socat=1.7.3.1-1
genesis: genesis:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
@ -190,7 +190,7 @@ data:
socat: socat=1.7.3.1-1 socat: socat=1.7.3.1-1
join: join:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -110,7 +110,7 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: master reference: master
dependencies: [] dependencies: []
@ -135,7 +135,7 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: master reference: master
dependencies: [] dependencies: []
@ -439,7 +439,7 @@ data:
service_calico_etcd: false service_calico_etcd: false
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
reference: master reference: master
subpath: calico subpath: calico
dependencies: dependencies:

View File

@ -1,8 +1,8 @@
export TEMP_DIR=${TEMP_DIR:-$(mktemp -d)} export TEMP_DIR=${TEMP_DIR:-$(mktemp -d)}
export BASE_IMAGE_SIZE=${BASE_IMAGE_SIZE:-344784896} export BASE_IMAGE_SIZE=${BASE_IMAGE_SIZE:-644612096}
export BASE_IMAGE_URL=${BASE_IMAGE_URL:-https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img} export BASE_IMAGE_URL=${BASE_IMAGE_URL:-https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img}
export IMAGE_PROMENADE=${IMAGE_PROMENADE:-quay.io/airshipit/promenade:master} export IMAGE_PROMENADE=${IMAGE_PROMENADE:-quay.io/airshipit/promenade:master}
export IMAGE_PROMENADE_DISTRO=${IMAGE_PROMENADE_DISTRO:-ubuntu_bionic} export IMAGE_PROMENADE_DISTRO=${IMAGE_PROMENADE_DISTRO:-ubuntu_focal}
export NGINX_DIR="${TEMP_DIR}/nginx" export NGINX_DIR="${TEMP_DIR}/nginx"
export NGINX_URL="http://192.168.77.1:7777" export NGINX_URL="http://192.168.77.1:7777"
export PROMENADE_BASE_URL="http://promenade-api.ucp.svc.cluster.local" export PROMENADE_BASE_URL="http://promenade-api.ucp.svc.cluster.local"

View File

@ -11,7 +11,7 @@ promenade_render_curl_url() {
USE_DECKHAND=${2} USE_DECKHAND=${2}
DECKHAND_REVISION=${3} DECKHAND_REVISION=${3}
shift 3 shift 3
LABELS=(${@}) LABELS=("${@}")
LABEL_PARAMS= LABEL_PARAMS=
for label in "${LABELS[@]}"; do for label in "${LABELS[@]}"; do

View File

@ -1,13 +1,13 @@
registry_down() { registry_down() {
REGISTRY_ID=$(docker ps -qa -f name=registry) REGISTRY_ID=$(docker ps -qa -f name=registry)
if [[ ! -z ${REGISTRY_ID} ]]; then if [[ -n ${REGISTRY_ID} ]]; then
log Removing docker registry log Removing docker registry
docker rm -fv "${REGISTRY_ID}" &>> "${LOG_FILE}" docker rm -fv "${REGISTRY_ID}" &>> "${LOG_FILE}"
fi fi
} }
registry_list_images() { registry_list_images() {
FILES=($(config_configuration | xargs -n 1 -I DIRNAME find DIRNAME -type f -name '*.yaml' | grep -v PKICatalog)) FILES=("$(config_configuration | xargs -I dirname find dirname -type f -name '*.yaml' | grep -v PKICatalog)")
HOSTNAME_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}' HOSTNAME_REGEX='[a-zA-Z0-9][a-zA-Z0-9_-]{0,62}'
DOMAIN_NAME_REGEX="${HOSTNAME_REGEX}(\.${HOSTNAME_REGEX})*" DOMAIN_NAME_REGEX="${HOSTNAME_REGEX}(\.${HOSTNAME_REGEX})*"
@ -45,7 +45,7 @@ registry_populate() {
} }
registry_replace_references() { registry_replace_references() {
FILES=(${@}) FILES=("${@}")
for image in $(registry_list_images); do for image in $(registry_list_images); do
sed -i "s;${image}\$;registry:5000/${image};g" "${FILES[@]}" sed -i "s;${image}\$;registry:5000/${image};g" "${FILES[@]}"
done done
@ -55,7 +55,7 @@ registry_up() {
log Validating local registry is up log Validating local registry is up
REGISTRY_ID=$(docker ps -qa -f name=registry) REGISTRY_ID=$(docker ps -qa -f name=registry)
RUNNING_REGISTRY_ID=$(docker ps -q -f name=registry) RUNNING_REGISTRY_ID=$(docker ps -q -f name=registry)
if [[ -z ${RUNNING_REGISTRY_ID} && ! -z ${REGISTRY_ID} ]]; then if [[ -z ${RUNNING_REGISTRY_ID} && -n ${REGISTRY_ID} ]]; then
log Removing stopped docker registry log Removing stopped docker registry
docker rm -fv "${REGISTRY_ID}" &>> "${LOG_FILE}" docker rm -fv "${REGISTRY_ID}" &>> "${LOG_FILE}"
fi fi

View File

@ -22,6 +22,7 @@ img_base_declare() {
} }
iso_gen() { iso_gen() {
set -x
NAME=${1} NAME=${1}
if virsh vol-key --pool "${VIRSH_POOL}" --vol "cloud-init-${NAME}.iso" &> /dev/null; then if virsh vol-key --pool "${VIRSH_POOL}" --vol "cloud-init-${NAME}.iso" &> /dev/null; then
@ -67,6 +68,7 @@ iso_gen() {
--vol "cloud-init-${NAME}.iso" \ --vol "cloud-init-${NAME}.iso" \
--file "${ISO_DIR}/cidata.iso" --file "${ISO_DIR}/cidata.iso"
} &>> "${LOG_FILE}" } &>> "${LOG_FILE}"
set +x
} }
iso_path() { iso_path() {
@ -125,11 +127,12 @@ vm_create() {
DISK_OPTS="bus=virtio,cache=directsync,discard=unmap,format=qcow2" DISK_OPTS="bus=virtio,cache=directsync,discard=unmap,format=qcow2"
virt-install \ virt-install \
--name "${NAME}" \ --name "${NAME}" \
--osinfo ubuntu20.04 \
--virt-type kvm \ --virt-type kvm \
--cpu host,+x2apic,-avx2 \ --cpu host,+x2apic,-avx2 \
--graphics vnc,listen=0.0.0.0 \ --graphics vnc,listen=0.0.0.0 \
--noautoconsole \ --noautoconsole \
--network "network=promenade,model=virtio" \ --network "network=promenade,model=e1000" \
--vcpus "$(config_vm_vcpus)" \ --vcpus "$(config_vm_vcpus)" \
--memory "$(config_vm_memory)" \ --memory "$(config_vm_memory)" \
--import \ --import \
@ -140,6 +143,7 @@ vm_create() {
ssh_cmd "${NAME}" sync ssh_cmd "${NAME}" sync
# docker enables forwarding, containerd - does not # docker enables forwarding, containerd - does not
ssh_cmd "${NAME}" sysctl net.ipv4.conf.all.forwarding=1 ssh_cmd "${NAME}" sysctl net.ipv4.conf.all.forwarding=1
ssh_cmd "${NAME}" sysctl net.ipv4.conf.all.rp_filter=1
} }
vm_create_all() { vm_create_all() {

View File

@ -20,7 +20,7 @@ else
fi fi
FILENAME=$(ssh_cmd "${GENESIS_NAME}" ls /mnt/sonobuoy || echo "") FILENAME=$(ssh_cmd "${GENESIS_NAME}" ls /mnt/sonobuoy || echo "")
if [[ ! -z ${FILENAME} ]]; then if [[ -n ${FILENAME} ]]; then
if rsync_cmd "${GENESIS_NAME}:/mnt/sonobuoy/${FILENAME}" "${WORKSPACE}/conformance/sonobuoy.tgz"; then if rsync_cmd "${GENESIS_NAME}:/mnt/sonobuoy/${FILENAME}" "${WORKSPACE}/conformance/sonobuoy.tgz"; then
tar xf "${WORKSPACE}/conformance/sonobuoy.tgz" -C "${WORKSPACE}/conformance" tar xf "${WORKSPACE}/conformance/sonobuoy.tgz" -C "${WORKSPACE}/conformance"
fi fi

View File

@ -50,7 +50,7 @@ rm -f "${OUTPUT_FILE}"
for source_dir in $(config_configuration); do for source_dir in $(config_configuration); do
log Copying configuration from "${source_dir}" log Copying configuration from "${source_dir}"
for filename in ${WORKSPACE}/${source_dir}/*.yaml; do for filename in "${WORKSPACE}"/"${source_dir}"/*.yaml; do
if should_include_filename "${filename}"; then if should_include_filename "${filename}"; then
log Including config from "$filename" log Including config from "$filename"
cat "${filename}" >> "${OUTPUT_FILE}" cat "${filename}" >> "${OUTPUT_FILE}"
@ -68,7 +68,7 @@ log "Setting up local caches.."
nginx_cache_and_replace_tar_urls "${OUTPUT_DIR}"/*.yaml nginx_cache_and_replace_tar_urls "${OUTPUT_DIR}"/*.yaml
registry_replace_references "${OUTPUT_DIR}"/*.yaml registry_replace_references "${OUTPUT_DIR}"/*.yaml
FILES=($(ls "${OUTPUT_DIR}")) FILES=("$(ls "${OUTPUT_DIR}")")
log Generating certificates log Generating certificates
docker run --rm -t \ docker run --rm -t \

View File

@ -2,7 +2,7 @@
version: 1 version: 1
config: config:
- type: physical - type: physical
name: ens3 name: ens1
subnets: subnets:
- type: static - type: static
address: ${BR_IP_NODE}/24 address: ${BR_IP_NODE}/24

View File

@ -105,9 +105,9 @@ data:
values: {} values: {}
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
subpath: helm-toolkit subpath: helm-toolkit
reference: ee331fd0d38e3584fecbefbf6218ba0c8e112338 reference: fa8916f5bcc8cbf064a387569e2630b7bbf0b49b
dependencies: [] dependencies: []
--- ---
schema: armada/Chart/v1 schema: armada/Chart/v1
@ -479,7 +479,7 @@ data:
service_calico_etcd: false service_calico_etcd: false
source: source:
type: git type: git
location: https://git.openstack.org/openstack/openstack-helm-infra location: https://opendev.org/openstack/openstack-helm-infra.git
reference: master reference: master
subpath: calico subpath: calico
dependencies: dependencies:

View File

@ -75,7 +75,7 @@ data:
helm: ${IMAGE_HELM} helm: ${IMAGE_HELM}
packages: packages:
repositories: repositories:
- deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable - deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
keys: keys:
- |- - |-
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----

View File

@ -17,7 +17,7 @@
set -eux set -eux
HTK_REPO=${HTK_REPO:-"https://opendev.org/openstack/openstack-helm-infra.git"} HTK_REPO=${HTK_REPO:-"https://opendev.org/openstack/openstack-helm-infra.git"}
HTK_STABLE_COMMIT=${HTK_COMMIT:-"5c4056ad341afcc577e63902b6ddbfb222d757e1"} HTK_STABLE_COMMIT=${HTK_COMMIT:-"fa8916f5bcc8cbf064a387569e2630b7bbf0b49b"}

View File

@ -5,7 +5,7 @@ set -ex
CFSSL_URL=${CFSSL_URL:-https://pkg.cfssl.org/R1.2/cfssl_linux-amd64} CFSSL_URL=${CFSSL_URL:-https://pkg.cfssl.org/R1.2/cfssl_linux-amd64}
if [[ ! $(which cfssl) ]]; then if [[ ! $(command -v cfssl) ]]; then
TMP_DIR=$(mktemp -d) TMP_DIR=$(mktemp -d)
pushd "${TMP_DIR}" pushd "${TMP_DIR}"
curl -Lo cfssl "${CFSSL_URL}" curl -Lo cfssl "${CFSSL_URL}"
@ -13,4 +13,5 @@ if [[ ! $(which cfssl) ]]; then
sudo mv cfssl /usr/local/bin/ sudo mv cfssl /usr/local/bin/
popd popd
rm -rf "${TMP_DIR}" rm -rf "${TMP_DIR}"
cfssl version
fi fi

View File

@ -7,12 +7,12 @@ WORKSPACE=$(realpath "${SCRIPT_DIR}/..")
for manifest in $(find "${WORKSPACE}/tools/g2/manifests" -type f | sort); do for manifest in $(find "${WORKSPACE}/tools/g2/manifests" -type f | sort); do
echo Checking "${manifest}" echo Checking "${manifest}"
python -m jsonschema "${WORKSPACE}/tools/g2/manifest-schema.json" -i "${manifest}" python3 -m jsonschema "${WORKSPACE}/tools/g2/manifest-schema.json" -i "${manifest}"
done done
if [[ -x $(which shellcheck) ]]; then if [[ -x "$(command -v shellcheck)" ]]; then
echo Checking shell scripts.. echo Checking shell scripts..
shellcheck -s bash -e SC1090 -e SC2162 -e SC2164 -e SC2128 -e SC2029 "${WORKSPACE}"/tools/cleanup.sh "${WORKSPACE}"/tools/*gate*.sh "${WORKSPACE}"/tools/g2/stages/* "${WORKSPACE}"/tools/g2/lib/* "${WORKSPACE}"/tools/install-external-deps.sh shellcheck -s bash -e SC1091 -e SC1090 -e SC2162 -e SC2164 -e SC2128 -e SC2029 "${WORKSPACE}"/tools/cleanup.sh "${WORKSPACE}"/tools/*gate*.sh "${WORKSPACE}"/tools/g2/stages/* "${WORKSPACE}"/tools/g2/lib/* "${WORKSPACE}"/tools/install-external-deps.sh
else else
echo No shellcheck executable found. Please, install it. echo No shellcheck executable found. Please, install it.
exit 1 exit 1

View File

@ -19,7 +19,7 @@ REQUIRE_RELOG=0
log_stage_header "Installing Packages" log_stage_header "Installing Packages"
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
sudo apt-get update -qq sudo apt-get update -qq
sudo apt-get install -q -y --no-install-recommends \ sudo apt-get install -q -y --no-install-recommends --allow-downgrades \
apt-transport-https \ apt-transport-https \
build-essential \ build-essential \
ca-certificates \ ca-certificates \
@ -28,12 +28,15 @@ sudo apt-get install -q -y --no-install-recommends \
genisoimage \ genisoimage \
jq \ jq \
libstring-shellquote-perl \ libstring-shellquote-perl \
libvirt-bin \
python3-dev \ python3-dev \
software-properties-common \
qemu-kvm \ qemu-kvm \
qemu-utils \ qemu-utils \
software-properties-common \ virt-manager \
virtinst libvirt-daemon-system \
virtinst \
libvirt-clients \
bridge-utils
# Install the docker gpg key & Add the repository # Install the docker gpg key & Add the repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
@ -44,10 +47,13 @@ sudo add-apt-repository \
sudo apt-get update -qq sudo apt-get update -qq
# Remove old versions of docker, if installed # Remove old versions of docker, if installed
sudo apt-get remove -q -y docker docker-engine docker.io sudo apt-get remove -q -y docker docker-engine docker.io --allow-downgrades \
# Install docker # Install docker
sudo apt-get install -q -y --no-install-recommends \ sudo apt-get install -q -y --no-install-recommends \
docker-ce docker-ce \
docker-ce-cli \
docker-buildx-plugin \
containerd.io
# Set up proxy when using docker_image in yamls # Set up proxy when using docker_image in yamls
sudo mkdir -p /etc/systemd/system/docker.service.d/ sudo mkdir -p /etc/systemd/system/docker.service.d/

View File

@ -19,9 +19,33 @@
PROMENADE_TMP_LOCAL: "cache" PROMENADE_TMP_LOCAL: "cache"
DISTRO: "{{ distro }}" DISTRO: "{{ distro }}"
become: true become: true
tasks: tasks:
- name: Install docker
command: apt-get install docker.io resolvconf -y - name: Generate configuration files
shell: |
set -xe;
sysctl net.ipv4.conf.all.forwarding=1
sysctl net.ipv4.conf.all.rp_filter=1
args:
chdir: /root
executable: /bin/bash
environment: "{{env}}"
- name: Ensure pip
include_role:
name: ensure-pip
- name: Clear firewall
include_role:
name: clear-firewall
- name: Ensure docker
include_role:
name: ensure-docker
- name: Install resolvconf
command: apt-get install resolvconf -y
- name: Setup Apparmor - name: Setup Apparmor
shell: | shell: |
@ -31,6 +55,9 @@
chdir: "{{ zuul.projects['opendev.org/openstack/openstack-helm-infra'].src_dir }}" chdir: "{{ zuul.projects['opendev.org/openstack/openstack-helm-infra'].src_dir }}"
executable: /bin/bash executable: /bin/bash
- name: List interfaces
command: ip addr show
- name: Generate configuration files - name: Generate configuration files
shell: | shell: |
set -xe; set -xe;

View File

@ -18,9 +18,21 @@
NO_PROXY: "" NO_PROXY: ""
DISTRO: "{{ distro }}" DISTRO: "{{ distro }}"
become: true become: true
roles:
- deploy-apparmor
- ensure-docker
tasks: tasks:
- name: Install docker - name: Install docker
command: apt-get install docker.io resolvconf -y command: |
apt-get install \
docker-ce \
docker-ce-cli \
docker-buildx-plugin \
containerd.io \
resolvconf \
-y
- name: Setup Apparmor - name: Setup Apparmor
shell: | shell: |

View File

@ -1,52 +1,19 @@
- hosts: all - hosts: all
tasks: tasks:
- include_vars: vars.yaml - include_vars: vars.yaml
- name: Install Docker (Debian) - name: Ensure pip
when: ansible_os_family == 'Debian' include_role:
block: name: ensure-pip
- file:
path: "{{ item }}" - name: Clear firewall
state: directory include_role:
with_items: name: clear-firewall
- /etc/docker/
- /etc/systemd/system/docker.service.d/ - name: Ensure docker
- /var/lib/docker/ include_role:
- mount: name: ensure-docker
path: /var/lib/docker/
src: tmpfs
fstype: tmpfs
opts: size=25g
state: mounted
- copy: "{{ item }}"
with_items:
- content: "{{ docker_daemon | to_json }}"
dest: /etc/docker/daemon.json
- src: files/docker-systemd.conf
dest: /etc/systemd/system/docker.service.d/
- apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
- apt_repository:
repo: deb http://{{ zuul_site_mirror_fqdn }}/deb-docker/{{ ansible_distribution_release }} {{ ansible_distribution_release }} stable
- apt:
name: "{{ item }}"
allow_unauthenticated: True
with_items:
- docker-ce
- python3-pip
- python3-setuptools
- pip:
name: docker
version: 2.7.0
executable: pip3
# NOTE(SamYaple): Allow all connections from containers to host so the
# containers can access the http server for git and wheels
- iptables:
action: insert
chain: INPUT
in_interface: docker0
jump: ACCEPT
become: True
- name: Debug tag generation inputs - name: Debug tag generation inputs
block: block:
@ -62,7 +29,7 @@
msg: "{{ tags | to_json }}" msg: "{{ tags | to_json }}"
- name: Determine tags - name: Determine tags
shell: echo '{{ tags | to_json }}' | python {{ zuul.project.src_dir }}/tools/image_tags.py shell: echo '{{ tags | to_json }}' | python3 {{ zuul.project.src_dir }}/tools/image_tags.py
environment: environment:
BRANCH: "{{ zuul.branch | default('') }}" BRANCH: "{{ zuul.branch | default('') }}"
CHANGE: "{{ zuul.change | default('') }}" CHANGE: "{{ zuul.change | default('') }}"

View File

@ -0,0 +1,41 @@
# 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.
---
- block:
- name: ensuring AppArmor is deployed on host
when: ansible_distribution == 'Ubuntu'
include_role:
name: deploy-package
tasks_from: dist
vars:
packages:
deb:
- apparmor
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
- name: "Enable AppArmor"
when: ansible_distribution == 'Ubuntu'
become: true
become_user: root
shell: |-
set -xe
systemctl enable apparmor
systemctl start apparmor
systemctl status apparmor.service
args:
executable: /bin/bash
ignore_errors: True
...

View File

@ -0,0 +1,18 @@
# 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.
---
proxy:
http: null
https: null
noproxy: null
...

View File

@ -0,0 +1,46 @@
# 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.
---
- name: managing distro packages for ubuntu
become: true
become_user: root
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
vars:
state: present
apt:
name: "{{ item }}"
state: "{{ state }}"
with_items: "{{ packages.deb }}"
- name: managing distro packages for centos
become: true
become_user: root
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
vars:
state: present
yum:
name: "{{ item }}"
state: "{{ state }}"
with_items: "{{ packages.rpm }}"
- name: managing distro packages for fedora
become: true
become_user: root
when: ansible_distribution == 'Fedora'
vars:
state: present
dnf:
name: "{{ item }}"
state: "{{ state }}"
with_items: "{{ packages.rpm }}"
...

View File

@ -0,0 +1,27 @@
# 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.
---
- name: managing pip packages
become: true
become_user: root
environment:
http_proxy: "{{ proxy.http }}"
https_proxy: "{{ proxy.https }}"
no_proxy: "{{ proxy.noproxy }}"
vars:
state: present
pip:
name: "{{ item }}"
state: "{{ state }}"
with_items: "{{ packages }}"
...

View File

@ -0,0 +1,15 @@
# 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.
---
ubuntu_kernel_hwe: false
...

View File

@ -0,0 +1,44 @@
# 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.
---
- name: Upgrade to HWE kernel on Ubuntu Hosts
when:
- ansible_distribution == 'Ubuntu'
- ubuntu_kernel_hwe == true
block:
- name: Deploy HWE kernel on Ubuntu Hosts
include_role:
name: deploy-package
tasks_from: dist
vars:
packages:
deb:
- linux-generic-hwe-20.04
- name: Reboot Host following kernel upgrade
shell: sleep 2 && reboot
become: yes
async: 30
poll: 0
ignore_errors: true
args:
executable: /bin/bash
- name: Wait for hosts to come up following reboot
wait_for:
host: '{{ hostvars[item].ansible_host }}'
port: 22
state: started
delay: 60
timeout: 240
with_items: '{{ play_hosts }}'
connection: local
...

41
tox.ini
View File

@ -1,22 +1,19 @@
[tox] [tox]
envlist = pep8,py35,py36,bandit,docs envlist = pep8,py38,bandit,docs
[testenv] [testenv]
basepython=python3 pass_env =
passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY http_proxy
HTTP_PROXY
https_proxy
HTTPS_PROXY
no_proxy
NO_PROXY
[testenv:venv] [testenv:venv]
commands = {posargs} commands = {posargs}
[testenv:py35] [testenv:py38]
setenv =
PYTHONWARNING=all
deps = -r{toxinidir}/requirements-frozen.txt
-r{toxinidir}/test-requirements.txt
commands =
pytest {posargs}
[testenv:py36]
setenv = setenv =
PYTHONWARNING=all PYTHONWARNING=all
deps = -r{toxinidir}/requirements-frozen.txt deps = -r{toxinidir}/requirements-frozen.txt
@ -31,7 +28,9 @@ commands =
bandit -r promenade bandit -r promenade
[testenv:docs] [testenv:docs]
whitelist_externals = rm pass_env = {[pkgenv]pass_env}
allowlist_externals =
rm
deps = deps =
-r{toxinidir}/doc/requirements.txt -r{toxinidir}/doc/requirements.txt
commands = commands =
@ -47,7 +46,7 @@ commands =
[testenv:freeze] [testenv:freeze]
deps = -r{toxinidir}/requirements-direct.txt deps = -r{toxinidir}/requirements-direct.txt
recreate = True recreate = True
whitelist_externals = sh allowlist_externals = sh
grep grep
commands= commands=
sh -c "pip freeze | grep -vE '^(promenade)|(pkg-resources)' > {toxinidir}/requirements-frozen.txt" sh -c "pip freeze | grep -vE '^(promenade)|(pkg-resources)' > {toxinidir}/requirements-frozen.txt"
@ -55,7 +54,7 @@ commands=
[testenv:gate-lint] [testenv:gate-lint]
deps = deps =
jsonschema==2.6.0 jsonschema==2.6.0
whitelist_externals = sh allowlist_externals = sh
commands = commands =
{toxinidir}/tools/lint_gate.sh {toxinidir}/tools/lint_gate.sh
@ -66,3 +65,15 @@ commands =
yapf -rd {toxinidir}/promenade {toxinidir}/tests {toxinidir}/tools/image_tags.py yapf -rd {toxinidir}/promenade {toxinidir}/tests {toxinidir}/tools/image_tags.py
flake8 {toxinidir}/promenade flake8 {toxinidir}/promenade
bandit -r promenade bandit -r promenade
[flake8]
# [H106] Don't put vim configuration in source files.
# [H203] Use assertIs(Not)None to check for None.
# [H204] Use assert(Not)Equal to check for equality.
# [H205] Use assert(Greater|Less)(Equal) for comparison.
# [H210] Require 'autospec', 'spec', or 'spec_set' in mock.patch/mock.patch.object calls
# [H904] Delay string interpolations at logging calls.
enable-extensions = H106,H203,H204,H205,H210
# [E731] Do not assign a lambda expression, use a def. This reduces readability in some cases.
ignore = E126,E731,F405,H102,H301,H306,H401,H404,H405,H904,W503,W504
exclude = .venv,.git,.tox,dist,*lib/python*,*egg,build,releasenotes,doc,alembic/versions

View File

@ -1,3 +1,6 @@
---
# Copyright 2018 SUSE LINUX GmbH.
#
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
@ -10,61 +13,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- project:
templates:
- docs-on-readthedocs
vars:
rtd_webhook_id: '38575'
rtd_project_name: 'airship-promenade'
check:
jobs:
- openstack-tox-pep8-bionic
- airship-promenade-lint-ws
- airship-promenade-docker-build-gate-ubuntu_xenial
- airship-promenade-docker-build-gate-ubuntu_bionic
- airship-promenade-chart-build-gate
- airship-promenade-chart-build-latest-htk
- airship-promenade-unit-py35
- airship-promenade-genesis-containerd-gate
gate:
jobs:
- openstack-tox-pep8-bionic
- airship-promenade-lint-ws
- airship-promenade-docker-build-gate-ubuntu_xenial
- airship-promenade-docker-build-gate-ubuntu_bionic
- airship-promenade-chart-build-gate
- airship-promenade-unit-py35
- airship-promenade-genesis-containerd-gate
post:
jobs:
- airship-promenade-docker-build-post-ubuntu_xenial
- airship-promenade-docker-build-post-ubuntu_bionic
- promenade-upload-git-mirror
- nodeset:
name: airship-promenade-single-node
nodes:
- name: primary
label: ubuntu-bionic
- nodeset:
name: airship-promenade-single-node-bionic
nodes:
- name: primary
label: ubuntu-bionic
- job: - job:
name: airship-promenade-genesis-containerd-gate name: airship-promenade-genesis-containerd-gate
description: | description: |
Deploy airship promenade genesis with containerd Deploy airship promenade genesis with containerd
run: tools/zuul/playbooks/deploy-promenade-containerd.yaml run:
- tools/zuul/playbooks/deploy-promenade-containerd.yaml
required-projects: required-projects:
- openstack/openstack-helm-infra - openstack/openstack-helm-infra
timeout: 3600 timeout: 3600
nodeset: airship-promenade-single-node-bionic nodeset: airship-promenade-single-node-focal
vars: vars:
distro: ubuntu_bionic distro: ubuntu_focal
- job: - job:
name: airship-promenade-lint-ws name: airship-promenade-lint-ws
@ -72,7 +32,7 @@
Lints all files for trailing whitespace Lints all files for trailing whitespace
run: tools/zuul/playbooks/zuul-linter.yaml run: tools/zuul/playbooks/zuul-linter.yaml
timeout: 300 timeout: 300
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
- job: - job:
name: airship-promenade-chart-build-gate name: airship-promenade-chart-build-gate
@ -80,7 +40,7 @@
Lints charts using pinned HTK Lints charts using pinned HTK
run: tools/zuul/playbooks/helm-linter.yaml run: tools/zuul/playbooks/helm-linter.yaml
timeout: 300 timeout: 300
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
- job: - job:
name: airship-promenade-chart-build-latest-htk name: airship-promenade-chart-build-latest-htk
@ -89,33 +49,33 @@
voting: false voting: false
run: tools/zuul/playbooks/helm-linter.yaml run: tools/zuul/playbooks/helm-linter.yaml
timeout: 300 timeout: 300
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
vars: vars:
HTK_COMMIT: master HTK_COMMIT: master
- job: - job:
name: airship-promenade-unit-py35 name: airship-promenade-unit-py38
description: | description: |
Executes unit tests under Python 3.5 Executes unit tests under Python 3.8
run: tools/zuul/playbooks/make-tests.yaml run: tools/zuul/playbooks/make-tests.yaml
timeout: 1500 timeout: 1500
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
files: files:
- ^.*\.py$ - ^.*\.py$
- job: - job:
name: airship-promenade-linter name: airship-promenade-linter
run: tools/zuul/playbooks/zuul-linter.yaml run: tools/zuul/playbooks/zuul-linter.yaml
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
- job: - job:
name: airship-promenade-docker-build-gate-ubuntu_bionic name: airship-promenade-docker-build-gate
voting: false voting: true
run: tools/zuul/playbooks/docker-image-build.yaml run: tools/zuul/playbooks/docker-image-build.yaml
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
vars: vars:
publish: false publish: false
distro: ubuntu_bionic distro: ubuntu_focal
tags: tags:
dynamic: dynamic:
patch_set: true patch_set: true
@ -125,50 +85,15 @@
- ^tests/.*$ - ^tests/.*$
- ^tools/.*$ - ^tools/.*$
- job: - job:
name: airship-promenade-docker-build-gate-ubuntu_bionic name: airship-promenade-docker-build-post
run: tools/zuul/playbooks/docker-image-build.yaml
nodeset: airship-promenade-single-node
vars:
publish: false
distro: ubuntu_bionic
tags:
dynamic:
patch_set: true
irrelevant-files:
- ^charts/.*$
- ^etc/.*$
- ^tests/.*$
- ^tools/.*$
- job:
name: airship-promenade-docker-build-post-ubuntu_xenial
voting: false voting: false
run: tools/zuul/playbooks/docker-image-build.yaml run: tools/zuul/playbooks/docker-image-build.yaml
nodeset: airship-promenade-single-node nodeset: airship-promenade-single-node-focal
secrets: secrets:
- airship_promenade_quay_creds - airship_promenade_quay_creds
vars: vars:
publish: true publish: true
distro: ubuntu_xenial distro: ubuntu_focal
tags:
dynamic:
branch: true
commit: true
static:
- latest
irrelevant-files:
- ^charts/.*$
- ^etc/.*$
- ^tests/.*$
- ^tools/.*$
- job:
name: airship-promenade-docker-build-post-ubuntu_bionic
run: tools/zuul/playbooks/docker-image-build.yaml
nodeset: airship-promenade-single-node
secrets:
- airship_promenade_quay_creds
vars:
publish: true
distro: ubuntu_bionic
tags: tags:
dynamic: dynamic:
branch: true branch: true

22
zuul.d/nodesets.yaml Normal file
View File

@ -0,0 +1,22 @@
---
# 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.
- nodeset:
name: airship-promenade-single-node-focal
nodes:
- name: primary
label: ubuntu-focal
groups:
- name: primary
nodes:
- primary

44
zuul.d/project.yaml Normal file
View File

@ -0,0 +1,44 @@
---
# Copyright 2018 SUSE LINUX GmbH.
#
# 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:
- docs-on-readthedocs
vars:
rtd_webhook_id: '38575'
rtd_project_name: 'airship-promenade'
check:
jobs:
- openstack-tox-pep8
# - openstack-tox-py38
- airship-promenade-lint-ws
- airship-promenade-docker-build-gate
- airship-promenade-chart-build-gate
- airship-promenade-chart-build-latest-htk
- airship-promenade-unit-py38
- airship-promenade-genesis-containerd-gate
gate:
jobs:
- openstack-tox-pep8
- airship-promenade-lint-ws
- airship-promenade-docker-build-gate
- airship-promenade-chart-build-gate
- airship-promenade-unit-py38
- airship-promenade-genesis-containerd-gate
post:
jobs:
- airship-promenade-docker-build-post
- promenade-upload-git-mirror
...