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
This commit is contained in:
Ian Wienand 2021-05-31 12:32:41 +10:00
parent fec8018581
commit 0d00b28da8
5 changed files with 100 additions and 2 deletions

42
docker/ircbot/Dockerfile Normal file
View File

@ -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" ]

16
docker/ircbot/local-build.sh Executable file
View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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