diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 653a0468..865ef2d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,7 @@ on: [push, pull_request] jobs: lint-commitlint: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -36,7 +36,7 @@ jobs: ./run-tests.sh --check-commitlint ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }} lint-shellcheck: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 @@ -46,14 +46,14 @@ jobs: ./run-tests.sh --check-shellcheck lint-black: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: pip install black @@ -62,7 +62,7 @@ jobs: run: ./run-tests.sh --check-black lint-flake8: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -70,7 +70,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Check compliance with pep8, pyflakes and circular complexity run: | @@ -79,14 +79,14 @@ jobs: ./run-tests.sh --check-flake8 lint-pydocstyle: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: pip install pydocstyle @@ -95,14 +95,14 @@ jobs: run: ./run-tests.sh --check-pydocstyle lint-check-manifest: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: pip install check-manifest @@ -111,7 +111,7 @@ jobs: run: ./run-tests.sh --check-manifest lint-dockerfile: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -120,7 +120,7 @@ jobs: run: ./run-tests.sh --check-dockerfile docker-build: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -131,14 +131,14 @@ jobs: ./run-tests.sh --check-docker-run docs-cli-commands: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: | @@ -149,14 +149,14 @@ jobs: run: ./run-tests.sh --check-cli-cmds docs-cli-api: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: | @@ -167,14 +167,14 @@ jobs: run: ./run-tests.sh --check-cli-api docs-sphinx: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.12" - name: Install Python dependencies run: | @@ -185,7 +185,7 @@ jobs: run: ./run-tests.sh --check-sphinx python-tests: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 strategy: matrix: testenv: [lowest, release] @@ -219,14 +219,14 @@ jobs: run: ./run-tests.sh --check-pytest - name: Codecov Coverage - if: matrix.python-version == '3.8' + if: matrix.python == '3.12' uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} files: coverage.xml release-docker: - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 if: > vars.RELEASE_DOCKER == 'true' && github.event_name == 'push' && diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 1240941f..32f7a2d0 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,9 +7,9 @@ version: 2 build: - os: ubuntu-22.04 + os: ubuntu-24.04 tools: - python: "3.8" + python: "3.12" sphinx: configuration: docs/conf.py diff --git a/Dockerfile b/Dockerfile index a8bb0d8b..234bbabd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,13 @@ # under the terms of the MIT License; see LICENSE file for more details. # Use Ubuntu LTS base image -FROM docker.io/library/ubuntu:20.04 +FROM docker.io/library/ubuntu:24.04 # Use default answers in installation commands ENV DEBIAN_FRONTEND=noninteractive -# Use distutils provided by the standard Python library instead of the vendored one in -# setuptools, so that editable installations are stored in the right directory. -# See https://github.com/pypa/setuptools/issues/3301 -ENV SETUPTOOLS_USE_DISTUTILS=stdlib +# Allow pip to install packages in the system site-packages dir +ENV PIP_BREAK_SYSTEM_PACKAGES=true # Add sources to `/code` and work there WORKDIR /code @@ -24,23 +22,26 @@ COPY . /code RUN apt-get update -y && \ apt-get install --no-install-recommends -y \ gcc \ - libpython3.8 \ + libpython3.12 \ python3-pip \ - python3.8 \ - python3.8-dev && \ - # `pip3 install kubernetes` needed due to an old version of system pip3 - pip3 install --no-cache-dir kubernetes '.[tests]' && \ + python3.12 \ + python3.12-dev && \ + pip3 install --no-cache-dir '.[tests]' && \ apt-get remove -y \ gcc \ - python3.8-dev && \ + python3.12-dev && \ apt-get autoremove -y && \ apt-get clean && \ rm -rf /code /var/lib/apt/lists/* +# Delete default `ubuntu` user, as its UID (1000) clashes with REANA's default one +# See https://bugs.launchpad.net/cloud-images/+bug/2005129 +RUN userdel -r ubuntu + # Run container as `reana` user with UID `1000`, which should match # current host user in most situations # hadolint ignore=DL3059 -RUN adduser --uid 1000 reana --gid 0 && \ +RUN useradd --uid 1000 --gid 0 --create-home reana && \ chown -R reana:root /home/reana WORKDIR /home/reana