From 0d00b28da897d46515637198df2214f5eadf2815 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Mon, 31 May 2021 12:32:41 +1000 Subject: [PATCH] Create ircbot container This container installs Limnoria, the supybot replacement as the generic ircbot container. We install meetbot plugin as a sibling project. Previously we've conflated supybot with meetbot, which is a bit confusing because meetbot is a plugin, but we also use other plugins such as the channel logger. We also hope to convert some of our other bots to Limnoria (ptgbot?) to consolidate everything. For this reason I've called this the more generic "ircbot". The image installs meetbot as a sibling project, with the idea being any other plugins would also be installed as siblings. The siblings install expects the work directory to be a relative directory. I'm not sure we run this from other projects, but this will work the same if we do. Depends-On: https://review.opendev.org/c/opendev/meetbot/+/793876 Change-Id: Icee4c6bbb5ea235ba69c10f800a14bbf5beef3d5 --- docker/ircbot/Dockerfile | 42 ++++++++++++++++++++++++++++++++ docker/ircbot/local-build.sh | 16 ++++++++++++ zuul.d/docker-images/base.yaml | 4 +-- zuul.d/docker-images/ircbot.yaml | 29 ++++++++++++++++++++++ zuul.d/project.yaml | 11 +++++++++ 5 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 docker/ircbot/Dockerfile create mode 100755 docker/ircbot/local-build.sh create mode 100644 zuul.d/docker-images/ircbot.yaml diff --git a/docker/ircbot/Dockerfile b/docker/ircbot/Dockerfile new file mode 100644 index 0000000000..0c054cc88b --- /dev/null +++ b/docker/ircbot/Dockerfile @@ -0,0 +1,42 @@ +# Copyright (c) 2021 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 opendevorg/python-builder:3.9 as builder +ARG ZUUL_SIBLINGS="" + +RUN apt-get update \ + && apt-get -y install git + +#NOTE(ianw) : 2021-05-31 - only until changes integrated upstream +#RUN git clone https://github.com/ProgVal/Limnoria /tmp/src +RUN git clone -b setuptools https://github.com/ianw/Limnoria /tmp/src + +COPY . /tmp/src + +RUN assemble + +FROM opendevorg/python-base:3.9 as ircbot + +COPY --from=builder /output /output + +RUN /output/install-from-bindep \ + && rm -rf /output + +# Install other misc dependencies +# XXX: ubuntu bug tracker plugins from +# https://git.launchpad.net/~krytarik/ubuntu-bots/+git/ubuntu-bots/tree/ +RUN pip install irclog2html + +ENTRYPOINT [ "/usr/local/bin/supybot", "--allow-root", "/var/lib/limnoria/limnoria.config" ] diff --git a/docker/ircbot/local-build.sh b/docker/ircbot/local-build.sh new file mode 100755 index 0000000000..a5bb125d96 --- /dev/null +++ b/docker/ircbot/local-build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# This clones meetbot into a top-level "meetbot" (and in the future +# other sibling plugins) directory and sets up a sibling install to +# build the container locally. + +if [ ! -d .zuul-siblings/opendev.org/opendev/meetbot ]; then + mkdir -p .zuul-siblings/opendev.org/opendev + if [ ! -d meetbot ]; then + git clone https://opendev.org/opendev/meetbot + fi + pushd .zuul-siblings/opendev.org/opendev + ln -sf ../../../meetbot meetbot +fi + +docker build . -f Dockerfile --build-arg "ZUUL_SIBLINGS=opendev.org/opendev/meetbot" diff --git a/zuul.d/docker-images/base.yaml b/zuul.d/docker-images/base.yaml index 10705c877c..79648fb527 100644 --- a/zuul.d/docker-images/base.yaml +++ b/zuul.d/docker-images/base.yaml @@ -22,7 +22,7 @@ abstract: true vars: docker_mirror_base_url: "http://{{ zuul_site_mirror_fqdn }}/deb-docker/{{ ansible_distribution_release }}" - zuul_work_dir: /home/zuul/src/opendev.org/opendev/system-config + zuul_work_dir: "{{ zuul.projects['opendev.org/opendev/system-config'].src_dir }}" - job: name: system-config-upload-image @@ -30,7 +30,7 @@ dependencies: opendev-buildset-registry abstract: true vars: - zuul_work_dir: /home/zuul/src/opendev.org/opendev/system-config + zuul_work_dir: "{{ zuul.projects['opendev.org/opendev/system-config'].src_dir }}" secrets: name: docker_credentials secret: system-config-dockerhub diff --git a/zuul.d/docker-images/ircbot.yaml b/zuul.d/docker-images/ircbot.yaml new file mode 100644 index 0000000000..3bbca4647e --- /dev/null +++ b/zuul.d/docker-images/ircbot.yaml @@ -0,0 +1,29 @@ +# ircbot jobs +- job: + name: system-config-build-image-ircbot + description: Build a ircbot image. + parent: system-config-build-image + required-projects: &ircbot_required_projects + - opendev/meetbot + vars: &ircbot_vars + docker_images: + - context: docker/ircbot + target: ircbot + repository: opendevorg/ircbot + siblings: + - opendev.org/opendev/meetbot + files: &ircbot_files + - docker/ircbot/.* +- job: + name: system-config-upload-image-ircbot + description: Build and upload a ircbot image. + parent: system-config-upload-image + required-projects: *ircbot_required_projects + vars: *ircbot_vars + files: *ircbot_files +- job: + name: system-config-promote-image-ircbot + description: Promote a previously published ircbot image to latest. + parent: system-config-promote-image + vars: *ircbot_vars + files: *ircbot_files diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index dc746f98a7..d21c08e568 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -116,6 +116,11 @@ - name: opendev-buildset-registry - name: system-config-build-image-python-base-3.7 soft: true + - system-config-build-image-ircbot: + dependencies: + - name: opendev-buildset-registry + - name: system-config-build-image-python-builder-3.9 + soft: true - system-config-build-image-python-base-3.7 - system-config-build-image-python-base-3.8 - system-config-build-image-python-base-3.9 @@ -234,6 +239,11 @@ - name: opendev-buildset-registry - name: system-config-build-image-python-base-3.7 soft: true + - system-config-upload-image-ircbot: + dependencies: + - name: opendev-buildset-registry + - name: system-config-build-image-python-builder-3.9 + soft: true - system-config-upload-image-python-base-3.7 - system-config-upload-image-python-base-3.8 - system-config-upload-image-python-base-3.9 @@ -258,6 +268,7 @@ - system-config-promote-image-zookeeper-statsd - system-config-promote-image-accessbot - system-config-promote-image-refstack + - system-config-promote-image-ircbot - system-config-promote-image-python-base-3.7 - system-config-promote-image-python-base-3.8 - system-config-promote-image-python-base-3.9