summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml32
-rwxr-xr-xscripts/generate_container42
2 files changed, 55 insertions, 19 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 73130a2e..fa16ee09 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -40,13 +40,6 @@ security-check:
.poezio-tests:
script:
- - apt-get update && apt-get install -y libidn11-dev
- - wget https://static.rust-lang.org/rustup/archive/1.24.3/x86_64-unknown-linux-gnu/rustup-init
- - chmod +x rustup-init
- - ./rustup-init -y --no-modify-path --default-toolchain nightly
- - rm rustup-init
- - ls ~/.cargo/bin
- - export PATH=$PATH:$HOME/.cargo/bin
- git clone https://lab.louiz.org/poezio/slixmpp.git
- pip3 install pytest pyasn1-modules cffi setuptools-rust --upgrade
- cd slixmpp
@@ -54,49 +47,50 @@ security-check:
- cd ..
- python3 setup.py install
- py.test -v test/
+ - cargo test
pytest-3.7:
stage: test
- image: python:3.7
+ image: docker.louiz.org/poezio/poezio:rust-python3.7
extends:
- .poezio-tests
pytest-3.8:
stage: test
- image: python:3.8
+ image: docker.louiz.org/poezio/poezio:rust-python3.8
extends:
- .poezio-tests
pytest-3.9:
stage: test
- image: python:3.9
+ image: docker.louiz.org/poezio/poezio:rust-python3.9
extends:
- .poezio-tests
pytest-3.10:
stage: test
- image: python:3.10-rc
+ image: docker.louiz.org/poezio/poezio:rust-python3.10
extends:
- .poezio-tests
pylint-plugins:
stage: lint
- image: python:3
+ image: docker.louiz.org/poezio/poezio:rust-python3.10
allow_failure: true
script:
- - apt-get update && apt-get install -y libidn11-dev
- - wget https://static.rust-lang.org/rustup/archive/1.14.0/x86_64-unknown-linux-gnu/rustup-init
- - chmod +x rustup-init
- - ./rustup-init -y --no-modify-path --default-toolchain nightly
- - rm rustup-init
- - ls ~/.cargo/bin
- - export PATH=$PATH:$HOME/.cargo/bin
- pip3 install pylint pyasn1-modules cffi setuptools-rust --upgrade
- pip3 install -e git+https://lab.louiz.org/poezio/slixmpp.git#egg=slixmpp
- pip3 install -r requirements-plugins.txt
- python3 setup.py install
- pylint -E plugins
+rust-lint:
+ stage: lint
+ image: docker.louiz.org/poezio/poezio:rust-python3.10
+ script:
+ - cargo fmt --check
+ - cargo clippy --no-deps
+
mypy:
stage: lint
image: python:3
diff --git a/scripts/generate_container b/scripts/generate_container
new file mode 100755
index 00000000..fc01a0ee
--- /dev/null
+++ b/scripts/generate_container
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# vim:fenc=utf-8 et ts=4 sts=4 sw=4
+#
+# Copyright © 2022 Maxime “pep” Buquet <pep@bouah.net>
+#
+# Distributed under terms of the GPLv3+ license.
+
+"""
+ Generate Dockerfiles for our CI containers.
+
+ The output can be used in the following way:
+ ```
+ docker login docker.louiz.org
+ CONTAINER=docker.louiz.org/poezio/poezio:rust-python3.10
+ python generate_container 3.10 | docker -t $CONTAINER -
+ docker push $CONTAINER
+ ```
+"""
+
+import sys
+
+TEMPLATE='''FROM rust:slim
+RUN set -eux; \
+ apt update; \
+ apt install -y --no-install-recommends git libidn11-dev libncurses-dev; \
+ rm -rf /var/lib/apt/lists/*
+RUN rustup component add clippy rustfmt
+COPY --from=python:VERSION-slim /usr/ /usr/
+COPY --from=python:VERSION-slim /lib/ /lib/
+RUN ldconfig'''
+
+REGISTRY='docker.louiz.org'
+CONTAINER='poezio/poezio'
+TAG='rust-python{version}'
+
+if __name__ == '__main__':
+ if len(sys.argv) != 2:
+ print('./generate_container.py <python version>', file=sys.stderr)
+ sys.exit(1)
+
+ print(TEMPLATE.replace('VERSION', sys.argv[1]))