Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use uv to install into venvs #68

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions .automation/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,11 @@ def build_dockerfile(
)
docker_from += [dockerfile_item]
# ARG
elif dockerfile_item.startswith("ARG"):
elif dockerfile_item.startswith("ARG") or (
len(dockerfile_item.splitlines()) > 1
and dockerfile_item.splitlines()[0].startswith("# renovate: ")
and dockerfile_item.splitlines()[1].startswith("ARG")
):
docker_arg += [dockerfile_item]
# COPY
elif dockerfile_item.startswith("COPY"):
Expand Down Expand Up @@ -423,7 +427,10 @@ def build_dockerfile(
docker_arg_top = []
docker_arg_main = []
for docker_arg_item in docker_arg:
match = re.match(r"ARG\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*=?\s*", docker_arg_item)
match = re.match(
r"(?:# renovate: .*\n)?ARG\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*=?\s*",
docker_arg_item,
)
arg_name = match.group(1)
if arg_name in all_from_instructions:
docker_arg_top += [docker_arg_item]
Expand Down Expand Up @@ -552,21 +559,15 @@ def build_dockerfile(
# Python packages in venv
if len(pipvenv_packages.items()) > 0:
pipenv_install_command = (
"RUN PYTHONDONTWRITEBYTECODE=1 pip3 install"
" --no-cache-dir --upgrade pip virtualenv \\\n"
"RUN PYTHONDONTWRITEBYTECODE=1 pip3 install" " --no-cache-dir uv \\\n"
)
env_path_command = 'ENV PATH="${PATH}"'
for pip_linter, pip_linter_packages in pipvenv_packages.items():
pipenv_install_command += (
f' && mkdir -p "/venvs/{pip_linter}" '
+ f'&& cd "/venvs/{pip_linter}" '
+ "&& virtualenv . "
+ "&& source bin/activate "
+ "&& PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir "
f' && uv venv --seed "/venvs/{pip_linter}" '
+ f'&& PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/{pip_linter}" uv pip install '
+ (" ".join(pip_linter_packages))
+ " "
+ "&& deactivate "
+ "&& cd ./../.. \\\n"
+ " \\\n"
)
env_path_command += f":/venvs/{pip_linter}/bin"
pipenv_install_command = pipenv_install_command[:-2] # remove last \
Expand Down
4 changes: 3 additions & 1 deletion .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,6 @@
"Cres",
"Csrf",
"C\u00e9dric",
"codesniffer",
"DARTANALYZER",
"DEVSKIM",
"DIRC",
Expand Down Expand Up @@ -615,6 +614,7 @@
"codecov",
"codenarcargs",
"codeql",
"codesniffer",
"codestyle",
"codetotal",
"codewithme",
Expand Down Expand Up @@ -656,6 +656,7 @@
"daltonv",
"dans",
"dartanalyzer",
"datasource",
"dateformat",
"davidjeddy",
"dearmor",
Expand Down Expand Up @@ -1094,6 +1095,7 @@
"oldxml",
"onecolumn",
"onstart",
"ontainer",
"opcache",
"openapi",
"openapirc",
Expand Down
57 changes: 32 additions & 25 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
#############################################################################################
#ARGTOP__START
ARG VERSION_EDITORCONFIG_CHECKER=latest
# renovate: datasource=docker depName=ghcr.io/terraform-linters/tflint
ARG TFLINT_VERSION=v0.51.0

#ARGTOP__END

#############################################################################################
Expand Down Expand Up @@ -44,7 +47,7 @@ FROM checkmarx/kics:alpine as kics
FROM trufflesecurity/trufflehog:latest as trufflehog
FROM jdkato/vale:latest as vale
FROM lycheeverse/lychee:latest-alpine as lychee
FROM ghcr.io/terraform-linters/tflint:v0.51.0 as tflint
FROM ghcr.io/terraform-linters/tflint:${TFLINT_VERSION} as tflint
FROM tenable/terrascan:1.18.11 as terrascan
FROM alpine/terragrunt:latest as terragrunt
# Next FROM line commented because already managed by another linter
Expand All @@ -67,9 +70,13 @@ ARG BICEP_EXE='bicep'
ARG BICEP_URI='https://github.com/Azure/bicep/releases/latest/download/bicep-linux-musl-x64'
ARG BICEP_DIR='/usr/local/bin'
ARG DART_VERSION='2.8.4'
# renovate: datasource=github-tags depName=pmd/pmd extractVersion=^pmd_releases/(?<version>.*)$
ARG PMD_VERSION=7.1.0

ARG VERSION_KOTLIN_DETEKT='1.23.6'
ARG PSSA_VERSION='latest'
# renovate: datasource=nuget depName=PSScriptAnalyzer registryUrl=https://www.powershellgallery.com/api/v2/
ARG PSSA_VERSION='1.22.0'

#ARG__END

# Static args
Expand Down Expand Up @@ -178,29 +185,29 @@ ENV PATH="/root/.cargo/bin:${PATH}"
#############################################################################################

#PIPVENV__START
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip virtualenv \
&& mkdir -p "/venvs/ansible-lint" && cd "/venvs/ansible-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir ansible-lint=='24.2.3' && deactivate && cd ./../.. \
&& mkdir -p "/venvs/cpplint" && cd "/venvs/cpplint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir cpplint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/cfn-lint" && cd "/venvs/cfn-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir cfn-lint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/djlint" && cd "/venvs/djlint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir djlint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/pylint" && cd "/venvs/pylint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir pylint typing-extensions && deactivate && cd ./../.. \
&& mkdir -p "/venvs/black" && cd "/venvs/black" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir black && deactivate && cd ./../.. \
&& mkdir -p "/venvs/flake8" && cd "/venvs/flake8" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir flake8 && deactivate && cd ./../.. \
&& mkdir -p "/venvs/isort" && cd "/venvs/isort" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir isort black && deactivate && cd ./../.. \
&& mkdir -p "/venvs/bandit" && cd "/venvs/bandit" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir bandit bandit_sarif_formatter bandit[toml] && deactivate && cd ./../.. \
&& mkdir -p "/venvs/mypy" && cd "/venvs/mypy" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir mypy && deactivate && cd ./../.. \
&& mkdir -p "/venvs/pyright" && cd "/venvs/pyright" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir pyright && deactivate && cd ./../.. \
&& mkdir -p "/venvs/ruff" && cd "/venvs/ruff" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir ruff && deactivate && cd ./../.. \
&& mkdir -p "/venvs/checkov" && cd "/venvs/checkov" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir packaging checkov && deactivate && cd ./../.. \
&& mkdir -p "/venvs/semgrep" && cd "/venvs/semgrep" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir semgrep && deactivate && cd ./../.. \
&& mkdir -p "/venvs/rst-lint" && cd "/venvs/rst-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir restructuredtext_lint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/rstcheck" && cd "/venvs/rstcheck" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir rstcheck[toml,sphinx] && deactivate && cd ./../.. \
&& mkdir -p "/venvs/rstfmt" && cd "/venvs/rstfmt" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir rstfmt && deactivate && cd ./../.. \
&& mkdir -p "/venvs/snakemake" && cd "/venvs/snakemake" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir snakemake && deactivate && cd ./../.. \
&& mkdir -p "/venvs/snakefmt" && cd "/venvs/snakefmt" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir snakefmt && deactivate && cd ./../.. \
&& mkdir -p "/venvs/proselint" && cd "/venvs/proselint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir proselint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/sqlfluff" && cd "/venvs/sqlfluff" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir sqlfluff && deactivate && cd ./../.. \
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir yamllint && deactivate && cd ./../.. \
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir uv \
&& uv venv --seed "/venvs/ansible-lint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/ansible-lint" uv pip install ansible-lint=='24.2.3' \
&& uv venv --seed "/venvs/cpplint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/cpplint" uv pip install cpplint \
&& uv venv --seed "/venvs/cfn-lint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/cfn-lint" uv pip install cfn-lint \
&& uv venv --seed "/venvs/djlint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/djlint" uv pip install djlint \
&& uv venv --seed "/venvs/pylint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/pylint" uv pip install pylint typing-extensions \
&& uv venv --seed "/venvs/black" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/black" uv pip install black \
&& uv venv --seed "/venvs/flake8" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/flake8" uv pip install flake8 \
&& uv venv --seed "/venvs/isort" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/isort" uv pip install isort black \
&& uv venv --seed "/venvs/bandit" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/bandit" uv pip install bandit bandit_sarif_formatter bandit[toml] \
&& uv venv --seed "/venvs/mypy" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/mypy" uv pip install mypy \
&& uv venv --seed "/venvs/pyright" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/pyright" uv pip install pyright \
&& uv venv --seed "/venvs/ruff" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/ruff" uv pip install ruff \
&& uv venv --seed "/venvs/checkov" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/checkov" uv pip install packaging checkov \
&& uv venv --seed "/venvs/semgrep" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/semgrep" uv pip install semgrep \
&& uv venv --seed "/venvs/rst-lint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/rst-lint" uv pip install restructuredtext_lint \
&& uv venv --seed "/venvs/rstcheck" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/rstcheck" uv pip install rstcheck[toml,sphinx] \
&& uv venv --seed "/venvs/rstfmt" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/rstfmt" uv pip install rstfmt \
&& uv venv --seed "/venvs/snakemake" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/snakemake" uv pip install snakemake \
&& uv venv --seed "/venvs/snakefmt" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/snakefmt" uv pip install snakefmt \
&& uv venv --seed "/venvs/proselint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/proselint" uv pip install proselint \
&& uv venv --seed "/venvs/sqlfluff" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/sqlfluff" uv pip install sqlfluff \
&& uv venv --seed "/venvs/yamllint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/yamllint" uv pip install yamllint \
&& find /venvs \( -type f \( -iname \*.pyc -o -iname \*.pyo \) -o -type d -iname __pycache__ \) -delete \
&& rm -rf /root/.cache
ENV PATH="${PATH}":/venvs/ansible-lint/bin:/venvs/cpplint/bin:/venvs/cfn-lint/bin:/venvs/djlint/bin:/venvs/pylint/bin:/venvs/black/bin:/venvs/flake8/bin:/venvs/isort/bin:/venvs/bandit/bin:/venvs/mypy/bin:/venvs/pyright/bin:/venvs/ruff/bin:/venvs/checkov/bin:/venvs/semgrep/bin:/venvs/rst-lint/bin:/venvs/rstcheck/bin:/venvs/rstfmt/bin:/venvs/snakemake/bin:/venvs/snakefmt/bin:/venvs/proselint/bin:/venvs/sqlfluff/bin:/venvs/yamllint/bin
Expand Down
22 changes: 11 additions & 11 deletions flavors/c_cpp/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -126,17 +126,17 @@ ENV PATH="/root/.cargo/bin:${PATH}"
#############################################################################################

#PIPVENV__START
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip virtualenv \
&& mkdir -p "/venvs/ansible-lint" && cd "/venvs/ansible-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir ansible-lint=='24.2.3' && deactivate && cd ./../.. \
&& mkdir -p "/venvs/cpplint" && cd "/venvs/cpplint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir cpplint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/djlint" && cd "/venvs/djlint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir djlint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/checkov" && cd "/venvs/checkov" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir packaging checkov && deactivate && cd ./../.. \
&& mkdir -p "/venvs/semgrep" && cd "/venvs/semgrep" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir semgrep && deactivate && cd ./../.. \
&& mkdir -p "/venvs/snakemake" && cd "/venvs/snakemake" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir snakemake && deactivate && cd ./../.. \
&& mkdir -p "/venvs/snakefmt" && cd "/venvs/snakefmt" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir snakefmt && deactivate && cd ./../.. \
&& mkdir -p "/venvs/proselint" && cd "/venvs/proselint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir proselint && deactivate && cd ./../.. \
&& mkdir -p "/venvs/sqlfluff" && cd "/venvs/sqlfluff" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir sqlfluff && deactivate && cd ./../.. \
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir yamllint && deactivate && cd ./../.. \
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir uv \
&& uv venv --seed "/venvs/ansible-lint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/ansible-lint" uv pip install ansible-lint=='24.2.3' \
&& uv venv --seed "/venvs/cpplint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/cpplint" uv pip install cpplint \
&& uv venv --seed "/venvs/djlint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/djlint" uv pip install djlint \
&& uv venv --seed "/venvs/checkov" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/checkov" uv pip install packaging checkov \
&& uv venv --seed "/venvs/semgrep" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/semgrep" uv pip install semgrep \
&& uv venv --seed "/venvs/snakemake" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/snakemake" uv pip install snakemake \
&& uv venv --seed "/venvs/snakefmt" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/snakefmt" uv pip install snakefmt \
&& uv venv --seed "/venvs/proselint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/proselint" uv pip install proselint \
&& uv venv --seed "/venvs/sqlfluff" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/sqlfluff" uv pip install sqlfluff \
&& uv venv --seed "/venvs/yamllint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/yamllint" uv pip install yamllint \
&& find /venvs \( -type f \( -iname \*.pyc -o -iname \*.pyo \) -o -type d -iname __pycache__ \) -delete \
&& rm -rf /root/.cache
ENV PATH="${PATH}":/venvs/ansible-lint/bin:/venvs/cpplint/bin:/venvs/djlint/bin:/venvs/checkov/bin:/venvs/semgrep/bin:/venvs/snakemake/bin:/venvs/snakefmt/bin:/venvs/proselint/bin:/venvs/sqlfluff/bin:/venvs/yamllint/bin
Expand Down
4 changes: 2 additions & 2 deletions flavors/ci_light/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ ENV PATH="/root/.cargo/bin:${PATH}"
#############################################################################################

#PIPVENV__START
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip virtualenv \
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir yamllint && deactivate && cd ./../.. \
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir uv \
&& uv venv --seed "/venvs/yamllint" && PYTHONDONTWRITEBYTECODE=1 VIRTUAL_ENV="/venvs/yamllint" uv pip install yamllint \
&& find /venvs \( -type f \( -iname \*.pyc -o -iname \*.pyo \) -o -type d -iname __pycache__ \) -delete \
&& rm -rf /root/.cache
ENV PATH="${PATH}":/venvs/yamllint/bin
Expand Down
Loading
Loading