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:
14
README.md
14
README.md
@@ -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
|
||||||
|
|
||||||
|
|||||||
30
build.sh
30
build.sh
@@ -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..."
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
|
||||||
@@ -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 \
|
||||||
|
|||||||
@@ -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' \
|
||||||
|
|||||||
Reference in New Issue
Block a user