diff --git a/.zuul.yaml b/.zuul.yaml index b8f7c636..73586c6e 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -24,6 +24,7 @@ - airship-shipyard-chart-build-latest-htk - airship-shipyard-whitespace-lint-gate - airship-shipyard-image-gate + - airship-shipyard-airskiff-deployment gate: jobs: - openstack-tox-pep8 @@ -87,6 +88,31 @@ dynamic: patch_set: true +- job: + name: airship-shipyard-airskiff-deployment + nodeset: airship-shipyard-single-node + description: | + Deploy Memcached using Airskiff and submitted Armada 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/armada + - airship/deckhand + - airship/pegleg + - airship/treasuremap + - openstack/openstack-helm-infra + vars: + OSH_INFRA_PATH: "../../openstack/openstack-helm-infra" + irrelevant-files: + - ^.*\.rst$ + - ^doc/.*$ + - ^releasenotes/.*$ + - job: name: airship-shipyard-docker-build-post timeout: 1800 diff --git a/tools/gate/playbooks/airskiff-deploy.yaml b/tools/gate/playbooks/airskiff-deploy.yaml new file mode 100644 index 00000000..1691957e --- /dev/null +++ b/tools/gate/playbooks/airskiff-deploy.yaml @@ -0,0 +1,66 @@ +# Copyright 2018 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. + +- hosts: primary + tasks: + - name: Install Required Packages + shell: | + ./tools/deployment/airskiff/developer/000-install-packages.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + become: yes + + - name: Build Shipyard and Airflow with submitted changes + shell: | + make + args: + chdir: "{{ zuul.project.src_dir }}" + become: yes + + - name: Deploy Kubernetes with Minikube + shell: | + export OSH_INFRA_PATH={{ OSH_INFRA_PATH }} + ./tools/deployment/airskiff/developer/010-deploy-k8s.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + + - name: Setup OpenStack Client + shell: | + ./tools/deployment/airskiff/developer/020-setup-client.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + become: yes + + - name: Deploy Airship components using Armada + shell: | + mkdir ~/.kube + cp -rp /home/zuul/.kube/config ~/.kube/config + ./tools/deployment/airskiff/developer/030-armada-bootstrap.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + become: yes + + - name: Deploy OpenStack using Airship + shell: | + ./tools/deployment/airskiff/developer/100-deploy-osh.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + become: yes + + - name: Wait for deployment completion + shell: | + ./tools/gate/wait-for-shipyard.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + become: yes diff --git a/tools/gate/playbooks/airskiff-reduce-site.yaml b/tools/gate/playbooks/airskiff-reduce-site.yaml new file mode 100644 index 00000000..fcf1b3f8 --- /dev/null +++ b/tools/gate/playbooks/airskiff-reduce-site.yaml @@ -0,0 +1,22 @@ +# Copyright 2018 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. + +- hosts: primary + tasks: + - name: Overwrite Armada manifest + shell: | + mv tools/gate/manifests/full-site.yaml \ + site/airskiff/software/manifests/full-site.yaml + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" diff --git a/tools/gate/playbooks/debug-report.yaml b/tools/gate/playbooks/debug-report.yaml new file mode 100644 index 00000000..8404a3a6 --- /dev/null +++ b/tools/gate/playbooks/debug-report.yaml @@ -0,0 +1,34 @@ +# Copyright 2018 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. + +- hosts: primary + tasks: + - name: Build debug report + shell: | + ./tools/gate/debug-report.sh + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + + - name: Extract debug report + shell: | + mkdir -p /tmp/debug + tar -xf debug-* -C /tmp/debug + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" + + - name: Pull logs to executor + synchronize: + src: /tmp/debug + dest: "{{ zuul.executor.log_root }}/{{ inventory_hostname }}" + mode: pull diff --git a/tools/gate/playbooks/git-config.yaml b/tools/gate/playbooks/git-config.yaml new file mode 100644 index 00000000..d4a118e5 --- /dev/null +++ b/tools/gate/playbooks/git-config.yaml @@ -0,0 +1,25 @@ +# Copyright 2018 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. + +- hosts: primary + tasks: + - name: Git config + shell: | + set -xe; + tee .git/config << EOF + [remote "origin"] + url = https://opendev.org/airship/treasuremap.git + EOF + args: + chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}"