Remove the get_latest_ref script and use the primary branch.

We previously used the get_latest_ref.py script to fetch the
latest commit sha for each project that passed CI correctly. Although,
that has some challenges due to requiring Gitlab Auth token. It causes
issues with building PRs and we don't want to share the Gitlab token
with PR authors.

Instead, this commit removes the code and sha references and Instead
simply uses the primary master branch from each project to build the
rolling release container image.
This commit is contained in:
Abhilash Raj
2022-04-14 07:20:42 +00:00
committed by GitHub
parent 7cb4bad168
commit 941b7f0411
6 changed files with 9 additions and 92 deletions

View File

@@ -89,36 +89,24 @@ $ docker pull docker.io/maxking/mailman-web:rolling
$ docker pull docker.io/maxking/mailman-core:rolling $ docker pull docker.io/maxking/mailman-core:rolling
``` ```
Rolling releases are built with every commit and also re-generated weekly. You Rolling releases are built with every commit and also re-generated nightly. You
can inspect the images to get which commit it was built using: can inspect the images to get which commit it was built using:
```bash ```bash
$ docker inspect --format '{{json .Config.Labels }}' mailman-core | python -m json.tool $ docker inspect --format '{{json .Config.Labels }}' mailman-core | python -m json.tool
{ {
"version.core": "31f434d0",
"version.git_commit": "45a4d7805b2b3d0e7c51679f59682d64ba02f05f", "version.git_commit": "45a4d7805b2b3d0e7c51679f59682d64ba02f05f",
"version.mm3-hk": "c625bfd2"
} }
$ docker inspect --format '{{json .Config.Labels }}' mailman-web | python -m json.tool $ docker inspect --format '{{json .Config.Labels }}' mailman-web | python -m json.tool
{ {
"version.client": "d9e9cb73",
"version.dj-mm3": "72a7d6c4",
"version.git_commit": "45a4d7805b2b3d0e7c51679f59682d64ba02f05f", "version.git_commit": "45a4d7805b2b3d0e7c51679f59682d64ba02f05f",
"version.hyperkitty": "b67ca8a8",
"version.postorius": "73328ad4"
} }
``` ```
- `version.git_commit` : This is the commit hash of the Dockerfile in the - `version.git_commit` : This is the commit hash of the Dockerfile in the
[Github repo](https://github.com/maxking/docker-mailman) [Github repo](https://github.com/maxking/docker-mailman)
- `version.core`: The commit hash of Mailman Core
- `version.mm3-hk`: The commit hash of Mailman3-hyperkitty plugin.
- `version.client`: The commit hash of Mailman Client.
- `version.hyperkitty`: The commit hash of Hyperkitty.
- `version.postorius`: The commit hash of Postorius.
- `version.dj-mm3`: The commit hash of Django-Mailman3 project.
## Dependencies ## Dependencies
@@ -414,7 +402,7 @@ smtp_port: $SMTP_PORT
configuration: /etc/postfix-mailman.cfg configuration: /etc/postfix-mailman.cfg
``` ```
So, if you need to update the values, you can set `SMTP_HOST`, `SMTP_PORT`, So, if you need to update the values, you can set `SMTP_HOST`, `SMTP_PORT`,
`MM_HOSTNAME` environment variables in `mailman-core` container. `MM_HOSTNAME` environment variables in `mailman-core` container.
Please verify the output for `[mta]` section to ensure that it points to Please verify the output for `[mta]` section to ensure that it points to

View File

@@ -12,49 +12,19 @@ DOCKER=docker
if [ "$BUILD_ROLLING" = "yes" ]; then if [ "$BUILD_ROLLING" = "yes" ]; then
echo "Building rolling releases..." echo "Building rolling releases..."
python3 -m venv venv
source venv/bin/activate
pip install python-gitlab
# Get the latest commit for repositories and set their reference values to be
# used in the development builds.
CORE_REF=$(python get_latest_ref.py mailman/mailman)
CLIENT_REF=$(python get_latest_ref.py mailman/mailmanclient)
POSTORIUS_REF=$(python get_latest_ref.py mailman/postorius)
HYPERKITTY_REF=$(python get_latest_ref.py mailman/hyperkitty)
DJ_MM3_REF=$(python get_latest_ref.py mailman/django-mailman3)
MM3_HK_REF=$(python get_latest_ref.py mailman/mailman-hyperkitty)
# Build the mailman-core image. # Build the mailman-core image.
$DOCKER build -f core/Dockerfile.dev \ $DOCKER build -f core/Dockerfile.dev \
--build-arg CORE_REF=$CORE_REF \
--build-arg MM3_HK_REF=$MM3_HK_REF \
--label version.core="$CORE_REF" \
--label version.mm3-hk="$MM3_HK_REF" \
--label version.git_commit="$COMMIT_ID" \ --label version.git_commit="$COMMIT_ID" \
-t maxking/mailman-core:rolling core/ -t maxking/mailman-core:rolling core/
# Build the mailman-web image. # Build the mailman-web image.
$DOCKER build -f web/Dockerfile.dev \ $DOCKER build -f web/Dockerfile.dev \
--label version.git_commit="$COMMIT_ID" \ --label version.git_commit="$COMMIT_ID" \
--label version.postorius="$POSTORIUS_REF" \
--label version.hyperkitty="$HYPERKITTY_REF" \
--label version.client="$CLIENT_REF" \
--label version.dj-mm3="$DJ_MM3_REF" \
--build-arg POSTORIUS_REF=$POSTORIUS_REF \
--build-arg CLIENT_REF=$CLIENT_REF \
--build-arg HYPERKITTY_REF=$HYPERKITTY_REF \
--build-arg DJ_MM3_REF=$DJ_MM3_REF \
-t maxking/mailman-web:rolling web/ -t maxking/mailman-web:rolling web/
# build the postorius image. # build the postorius image.
$DOCKER build -f postorius/Dockerfile.dev\ $DOCKER build -f postorius/Dockerfile.dev\
--label version.git_commit="$COMMIT_ID"\ --label version.git_commit="$COMMIT_ID"\
--label version.postorius="$POSTORIUS_REF" \
--label version.client="$CLIENT_REF" \
--label version.dj-mm3="$DJ_MM3_REF" \
--build-arg POSTORIUS_REF=$POSTORIUS_REF \
--build-arg CLIENT_REF=$CLIENT_REF \
--build-arg DJ_MM3_REF=$DJ_MM3_REF \
-t maxking/postorius:rolling postorius/ -t maxking/postorius:rolling postorius/
else else
echo "Building stable releases..." echo "Building stable releases..."

View File

@@ -18,8 +18,8 @@ RUN --mount=type=cache,target=/root/.cache \
&& apk add --no-cache bash su-exec postgresql-client mysql-client curl python3 py3-pip linux-headers py-cryptography mariadb-connector-c \ && apk add --no-cache bash su-exec postgresql-client mysql-client curl python3 py3-pip linux-headers py-cryptography mariadb-connector-c \
&& python3 -m pip install -U psycopg2 pymysql setuptools wheel \ && python3 -m pip install -U psycopg2 pymysql setuptools wheel \
&& python3 -m pip install \ && python3 -m pip install \
git+https://gitlab.com/mailman/mailman@${CORE_REF} \ git+https://gitlab.com/mailman/mailman \
git+https://gitlab.com/mailman/mailman-hyperkitty@${MM3_HK_REF} \ git+https://gitlab.com/mailman/mailman-hyperkitty \
gunicorn==19.9.0 \ gunicorn==19.9.0 \
&& apk del build-deps \ && apk del build-deps \
&& adduser -S mailman && adduser -S mailman

View File

@@ -1,41 +0,0 @@
#! /usr/bin/env python
import os
import sys
import gitlab
def usage():
print("{} <project_name> <project_branch>")
def main():
if 2 > len(sys.argv) > 3:
usage()
project_name = sys.argv[1]
if len(sys.argv) > 2:
branch_name = sys.argv[2]
else:
branch_name = 'master'
gl_token = os.getenv('GITLAB_TOKEN')
if gl_token is None:
print('GITLAB_TOKEN not set!')
exit(1)
gl = gitlab.Gitlab('https://gitlab.com/', gl_token)
project = gl.projects.get(project_name)
# Find the last commit in the branch that passed the CI
# successfully and return the reference to it.
for commit in project.commits.list(ref=branch_name):
stasues = list(status.status == 'success' for status in
commit.statuses.list() if status.allow_failure == False)
if len(stasues) == 0:
continue
if all(stasues):
print(commit.short_id)
break
if __name__ == '__main__':
main()

View File

@@ -22,8 +22,8 @@ RUN --mount=type=cache,target=/root/.cache \
python3 py3-pip libffi gettext py-cryptography \ python3 py3-pip libffi gettext py-cryptography \
&& python3 -m pip install -U pip setuptools wheel \ && python3 -m pip install -U pip setuptools wheel \
&& python3 -m pip install -U \ && python3 -m pip install -U \
git+https://gitlab.com/mailman/mailmanclient@${CLIENT_REF} \ git+https://gitlab.com/mailman/mailmanclient \
git+https://gitlab.com/mailman/postorius@${POSTORIUS_REF} \ git+https://gitlab.com/mailman/postorius \
uwsgi \ uwsgi \
'psycopg2<2.9' \ 'psycopg2<2.9' \
dj-database-url \ dj-database-url \

View File

@@ -23,9 +23,9 @@ RUN --mount=type=cache,target=/root/.cache \
curl mailcap xapian-core xapian-bindings-python3 libffi gettext py-cryptography \ curl mailcap xapian-core xapian-bindings-python3 libffi gettext py-cryptography \
&& python3 -m pip install -U pip setuptools wheel \ && python3 -m pip install -U pip setuptools wheel \
&& python3 -m pip install -U \ && python3 -m pip install -U \
git+https://gitlab.com/mailman/mailmanclient@${CLIENT_REF} \ git+https://gitlab.com/mailman/mailmanclient \
git+https://gitlab.com/mailman/postorius@${POSTORIUS_REF} \ git+https://gitlab.com/mailman/postorius \
git+https://gitlab.com/mailman/hyperkitty@${HYPERKITTY_REF} \ git+https://gitlab.com/mailman/hyperkitty \
whoosh \ whoosh \
uwsgi \ uwsgi \
'psycopg2<2.9' \ 'psycopg2<2.9' \