diff options
-rw-r--r-- | .gitlab-ci.yml | 32 | ||||
-rwxr-xr-x | scripts/generate_container | 42 |
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])) |