diff --git a/.zuul.yaml b/.zuul.yaml index 15f719c356..26ca146ff6 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -152,6 +152,59 @@ tox_envlist: functional tox_install_siblings: true +- secret: + name: osc-dockerhub + data: + username: osclientzuul + password: !encrypted/pkcs1-oaep + - qQ0O7bXUWBhkygjSKcPHogWvR2ax67EgHZcYd27zgg6KvpdK9GsNTRTIeD5yeBb9Dzr/K + RcAf+0pQT3fRIsKyEx2odHNevGpePjmUZENd5vHTIvTuZWq+X5ehpXgkEYvw3jwYJg78F + ids1igEaHsE86OMHjWauyc1QUzYfwkf+ziK7TIOZ6RpVRHgq5Bf9S+Hz/QnVdxOLaIlO0 + VC/bchKX/36vOQKd20KkNhBQAnUlDBQWMnZocvZKZYtkDs2w2vqlnUPRlzEppBWm5Yae6 + 5acyIHEEAIbECd/wC/OT8YndoeOUiqOZY0uSWtv4JgEKl6AexP+54VxPrsz7LayRMDJ4B + jVCZK6y1sss9mF6mNXvZipPEVgklGcGM76GfGdqTeuQ3i8CqaKmCTBo1IKlEmcslXR/5T + vjibWzvNHPpFcpYEEM6GLGg2K6nja1MCE1s/L76pN3FtxCZHdl8rZXU+mJH37uQk9zvdR + Y6qtWJ+3o5sbgYfjgdp/nPs1xXMUvuG83qykuzYgtOYvlEw51eqwd2SPXd3op/KApAhKR + Zlu8fBUkm/FyXToOpCl0s/eR4w1d+Spv0A+UhrS5pmV18+NlpNs0Krj5wS9KWMUIec0ae + opgPkQrFfj/zD45rrIUJRzT+alZlZeK+WQfeNOXt2i6MLtOPesHMukTc6ksXtA= + +- job: + name: osc-build-image + parent: opendev-build-docker-image + description: Build Docker images. + allowed-projects: openstack/python-openstackclient + requires: + - python-builder-container-image + - python-base-container-image + provides: osc-container-image + vars: &osc_image_vars + docker_images: + - context: . + repository: osclient/python-openstackclient + +- job: + name: osc-upload-image + parent: opendev-upload-docker-image + description: Build Docker images and upload to Docker Hub. + allowed-projects: openstack/python-openstackclient + requires: + - python-builder-container-image + - python-base-container-image + provides: osc-container-image + vars: *osc_image_vars + secrets: &osc_image_secrets + - name: docker_credentials + secret: osc-dockerhub + pass-to-parent: true + +- job: + name: osc-promote-image + parent: opendev-promote-docker-image + allowed-projects: openstack/python-openstackclient + description: Promote previously uploaded Docker images. + vars: *osc_image_vars + secrets: *osc_image_secrets + - project-template: name: osc-tox-unit-tips check: @@ -174,6 +227,7 @@ - lib-forward-testing-python3 check: jobs: + - osc-build-image - osc-functional-devstack # - osc-functional-devstack-n-net: # voting: false @@ -187,4 +241,8 @@ branches: ^(?!stable) gate: jobs: + - osc-upload-image - osc-functional-devstack + promote: + jobs: + - osc-promote-image diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..9ff8084c30 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +# Copyright (c) 2020 Red Hat, Inc. +# +# 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. + +FROM docker.io/opendevorg/python-builder as builder + +COPY . /tmp/src +RUN assemble + +FROM docker.io/opendevorg/python-base + +COPY --from=builder /output/ /output +RUN /output/install-from-bindep + +CMD ["/usr/local/bin/openstack"] diff --git a/examples/openstack.sh b/examples/openstack.sh new file mode 100755 index 0000000000..aa35acfeb8 --- /dev/null +++ b/examples/openstack.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright (c) 2020 Red Hat, Inc. +# +# 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. + +# This is an example script that can be installed somewhere, such as +# /usr/local/bin/openstack, that will allow using python-openstackclient +# via the container image instead of via a direct installation. It +# bind-mounts in clouds.yaml files, so it should behave like a directly +# installed osc. + +if type podman 2>/dev/null ; then + RUNTIME=podman +else + RUNTIME=docker +fi + +exec $RUNTIME run -it --rm \ + -v/etc/openstack:/etc/openstack \ + -v$HOME/.config/openstack:/root/.config/openstack \ + osclient/openstackclient \ + openstack $@