Skip to content

Commit e246b23

Browse files
committed
Finished moving pip venvs into cross-compiled layer
1 parent 9759b92 commit e246b23

File tree

130 files changed

+4900
-581
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+4900
-581
lines changed

.automation/build.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -515,35 +515,53 @@ def build_dockerfile(
515515
replace_in_file(dockerfile, "#PIP__START", "#PIP__END", pip_install_command)
516516
# Python packages in venv
517517
if len(pipvenv_packages.items()) > 0:
518-
pipenv_install_command = (
518+
pipenv_download_command = (
519519
"RUN PYTHONDONTWRITEBYTECODE=1 pip3 install"
520-
" --no-cache-dir --upgrade pip virtualenv \\\n"
520+
" --no-cache-dir --upgrade pip crossenv \\\n"
521+
)
522+
pipenv_install_command = (
523+
"RUN echo \\\n"
521524
)
522-
env_path_command = 'ENV PATH="${PATH}"'
525+
pipenv_path_command = 'ENV PATH="${PATH}"'
523526
for pip_linter, pip_linter_packages in pipvenv_packages.items():
527+
pipenv_download_command += (
528+
f' && mkdir -p "/download/{pip_linter}" '
529+
+ f'&& pip download -d "/download/{pip_linter}" '
530+
+ (" ".join(pip_linter_packages))
531+
+ " \\\n"
532+
)
524533
pipenv_install_command += (
525534
f' && mkdir -p "/venvs/{pip_linter}" '
526535
+ f'&& cd "/venvs/{pip_linter}" '
527-
+ "&& virtualenv . "
536+
+ "&& python3 -m crossenv /usr/local/bin/target-python3 . "
528537
+ "&& source bin/activate "
529-
+ "&& PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir "
538+
+ f"&& PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/{pip_linter} --no-cache-dir "
530539
+ (" ".join(pip_linter_packages))
531540
+ " "
532541
+ "&& deactivate "
533542
+ "&& cd ./../.. \\\n"
534543
)
535-
env_path_command += f":/venvs/{pip_linter}/bin"
544+
pipenv_path_command += f":/venvs/{pip_linter}/bin"
536545
pipenv_install_command = pipenv_install_command[:-2] # remove last \
546+
pipenv_download_command = pipenv_download_command[:-2] # remove last \
537547
pipenv_install_command += (
538548
' \\\n && find . | grep -E "(/__pycache__$|\\.pyc$|\\.pyo$)" | xargs rm -rf '
539549
+ "&& rm -rf /root/.cache\n"
540-
+ env_path_command
541550
)
551+
pipenv_download_command += "\n"
542552
else:
543553
pipenv_install_command = ""
554+
pipenv_download_command = ""
555+
pipenv_path_command = ""
544556
replace_in_file(
545557
dockerfile, "#PIPVENV__START", "#PIPVENV__END", pipenv_install_command
546558
)
559+
replace_in_file(
560+
dockerfile, "#PIPVENV_DOWNLOAD__START", "#PIPVENV_DOWNLOAD__END", pipenv_download_command
561+
)
562+
replace_in_file(
563+
dockerfile, "#PIPVENV_PATH__START", "#PIPVENV_PATH__END", pipenv_path_command
564+
)
547565

548566
# Ruby gem packages
549567
gem_install_command = ""

Dockerfile

Lines changed: 47 additions & 46 deletions
Large diffs are not rendered by default.

flavors/ci_light/Dockerfile

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ RUN rustup-init -y --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-u
4343

4444
RUN --mount=type=cache,id=cargo-${TARGETARCH},sharing=locked,target=/cargo/.cargo/registry/,uid=63425 \
4545
. /cargo/.cargo/env \
46-
&& cargo install sarif-fmt shellcheck-sarif --root /tmp --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-unknown-linux-musl" || echo "aarch64-unknown-linux-musl")
46+
&& cargo install shellcheck-sarif sarif-fmt --root /tmp --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-unknown-linux-musl" || echo "aarch64-unknown-linux-musl")
4747

4848
FROM scratch AS cargo
4949
COPY --link --from=cargo-build /tmp/bin/* /bin/
50-
RUN ["/bin/sarif-fmt", "--help"]
5150
RUN ["/bin/shellcheck-sarif", "--help"]
51+
RUN ["/bin/sarif-fmt", "--help"]
5252

5353
#FROM__END
5454

@@ -69,6 +69,41 @@ COPY --link --from=gitleaks /usr/bin/gitleaks /usr/bin/
6969
COPY --link --from=cargo /bin/* /usr/bin/
7070
#COPY__END
7171

72+
FROM --platform=$TARGETPLATFORM python:3.11.2-alpine3.17 AS target-python-arm64
73+
RUN mkdir /export-libs && cp /lib/ld-musl-aarch64.so.1 /export-libs
74+
FROM --platform=$TARGETPLATFORM python:3.11.2-alpine3.17 AS target-python-amd64
75+
RUN mkdir /export-libs && cp /lib/ld-musl-x86_64.so.1 /export-libs
76+
FROM target-python-${TARGETARCH} AS target-python
77+
FROM --platform=$BUILDPLATFORM python:3.11.2-alpine3.17 AS python-venv
78+
79+
80+
#############################################################################################
81+
## @generated by .automation/build.py using descriptor files, please do not update manually ##
82+
#############################################################################################
83+
84+
RUN apk add --update --no-cache gcc musl-dev libffi-dev rust cargo cmake make g++ openssl-dev
85+
86+
#PIPVENV_DOWNLOAD__START
87+
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip crossenv \
88+
&& mkdir -p "/download/yamllint" && pip download -d "/download/yamllint" yamllint
89+
90+
#PIPVENV_DOWNLOAD__END
91+
92+
RUN mkdir /venvs
93+
94+
COPY --link --from=target-python /usr/local/bin/python3 /usr/local/bin/target-python3
95+
#COPY --link --from=target-python /export-libs/* /lib
96+
97+
#############################################################################################
98+
## @generated by .automation/build.py using descriptor files, please do not update manually ##
99+
#############################################################################################
100+
101+
#PIPVENV__START
102+
RUN echo \
103+
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/yamllint --no-cache-dir yamllint && deactivate && cd ./../.. \
104+
&& find . | grep -E "(/__pycache__$|\.pyc$|\.pyo$)" | xargs rm -rf && rm -rf /root/.cache
105+
106+
#PIPVENV__END
72107

73108
##################
74109
# Get base image #
@@ -142,19 +177,18 @@ RUN mkdir -p ${GOPATH}/src ${GOPATH}/bin || true && \
142177
# Ignore npm package issues
143178
yarn config set ignore-engines true || true
144179

180+
COPY --link --from=python-venv /venv /venv
181+
145182
#############################################################################################
146183
## @generated by .automation/build.py using descriptor files, please do not update manually ##
147184
#############################################################################################
148185
#PIP__START
149186

150187
#PIP__END
151188

152-
#PIPVENV__START
153-
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip virtualenv \
154-
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir yamllint && deactivate && cd ./../.. \
155-
&& find . | grep -E "(/__pycache__$|\.pyc$|\.pyo$)" | xargs rm -rf && rm -rf /root/.cache
189+
#PIPVENV_PATH__START
156190
ENV PATH="${PATH}":/venvs/yamllint/bin
157-
#PIPVENV__END
191+
#PIPVENV_PATH__END
158192

159193
############################
160194
# Install NPM dependencies #

flavors/cupcake/Dockerfile

Lines changed: 75 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ RUN rustup-init -y --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-u
6262

6363
RUN --mount=type=cache,id=cargo-${TARGETARCH},sharing=locked,target=/cargo/.cargo/registry/,uid=63425 \
6464
. /cargo/.cargo/env \
65-
&& cargo install sarif-fmt shellcheck-sarif --root /tmp --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-unknown-linux-musl" || echo "aarch64-unknown-linux-musl")
65+
&& cargo install shellcheck-sarif sarif-fmt --root /tmp --target $([[ "${TARGETARCH}" == "amd64" ]] && echo "x86_64-unknown-linux-musl" || echo "aarch64-unknown-linux-musl")
6666

6767
FROM scratch AS cargo
6868
COPY --link --from=cargo-build /tmp/bin/* /bin/
69-
RUN ["/bin/sarif-fmt", "--help"]
7069
RUN ["/bin/shellcheck-sarif", "--help"]
70+
RUN ["/bin/sarif-fmt", "--help"]
7171

7272
#FROM__END
7373

@@ -102,6 +102,75 @@ COPY --from=kics /app/bin/assets /opt/kics/assets/
102102
COPY --link --from=cargo /bin/* /usr/bin/
103103
#COPY__END
104104

105+
FROM --platform=$TARGETPLATFORM python:3.11.2-alpine3.17 AS target-python-arm64
106+
RUN mkdir /export-libs && cp /lib/ld-musl-aarch64.so.1 /export-libs
107+
FROM --platform=$TARGETPLATFORM python:3.11.2-alpine3.17 AS target-python-amd64
108+
RUN mkdir /export-libs && cp /lib/ld-musl-x86_64.so.1 /export-libs
109+
FROM target-python-${TARGETARCH} AS target-python
110+
FROM --platform=$BUILDPLATFORM python:3.11.2-alpine3.17 AS python-venv
111+
112+
113+
#############################################################################################
114+
## @generated by .automation/build.py using descriptor files, please do not update manually ##
115+
#############################################################################################
116+
117+
RUN apk add --update --no-cache gcc musl-dev libffi-dev rust cargo cmake make g++ openssl-dev
118+
119+
#PIPVENV_DOWNLOAD__START
120+
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip crossenv \
121+
&& mkdir -p "/download/ansible-lint" && pip download -d "/download/ansible-lint" ansible-lint \
122+
&& mkdir -p "/download/cpplint" && pip download -d "/download/cpplint" cpplint \
123+
&& mkdir -p "/download/cfn-lint" && pip download -d "/download/cfn-lint" cfn-lint \
124+
&& mkdir -p "/download/djlint" && pip download -d "/download/djlint" djlint \
125+
&& mkdir -p "/download/pylint" && pip download -d "/download/pylint" pylint typing-extensions \
126+
&& mkdir -p "/download/black" && pip download -d "/download/black" black \
127+
&& mkdir -p "/download/flake8" && pip download -d "/download/flake8" flake8 \
128+
&& mkdir -p "/download/isort" && pip download -d "/download/isort" isort black \
129+
&& mkdir -p "/download/mypy" && pip download -d "/download/mypy" mypy \
130+
&& mkdir -p "/download/pyright" && pip download -d "/download/pyright" pyright \
131+
&& mkdir -p "/download/checkov" && pip download -d "/download/checkov" packaging checkov \
132+
&& mkdir -p "/download/semgrep" && pip download -d "/download/semgrep" semgrep \
133+
&& mkdir -p "/download/rst-lint" && pip download -d "/download/rst-lint" restructuredtext_lint \
134+
&& mkdir -p "/download/rstcheck" && pip download -d "/download/rstcheck" rstcheck \
135+
&& mkdir -p "/download/rstfmt" && pip download -d "/download/rstfmt" rstfmt \
136+
&& mkdir -p "/download/proselint" && pip download -d "/download/proselint" proselint \
137+
&& mkdir -p "/download/sqlfluff" && pip download -d "/download/sqlfluff" sqlfluff \
138+
&& mkdir -p "/download/yamllint" && pip download -d "/download/yamllint" yamllint
139+
140+
#PIPVENV_DOWNLOAD__END
141+
142+
RUN mkdir /venvs
143+
144+
COPY --link --from=target-python /usr/local/bin/python3 /usr/local/bin/target-python3
145+
#COPY --link --from=target-python /export-libs/* /lib
146+
147+
#############################################################################################
148+
## @generated by .automation/build.py using descriptor files, please do not update manually ##
149+
#############################################################################################
150+
151+
#PIPVENV__START
152+
RUN echo \
153+
&& mkdir -p "/venvs/ansible-lint" && cd "/venvs/ansible-lint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/ansible-lint --no-cache-dir ansible-lint && deactivate && cd ./../.. \
154+
&& mkdir -p "/venvs/cpplint" && cd "/venvs/cpplint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/cpplint --no-cache-dir cpplint && deactivate && cd ./../.. \
155+
&& mkdir -p "/venvs/cfn-lint" && cd "/venvs/cfn-lint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/cfn-lint --no-cache-dir cfn-lint && deactivate && cd ./../.. \
156+
&& mkdir -p "/venvs/djlint" && cd "/venvs/djlint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/djlint --no-cache-dir djlint && deactivate && cd ./../.. \
157+
&& mkdir -p "/venvs/pylint" && cd "/venvs/pylint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/pylint --no-cache-dir pylint typing-extensions && deactivate && cd ./../.. \
158+
&& mkdir -p "/venvs/black" && cd "/venvs/black" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/black --no-cache-dir black && deactivate && cd ./../.. \
159+
&& mkdir -p "/venvs/flake8" && cd "/venvs/flake8" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/flake8 --no-cache-dir flake8 && deactivate && cd ./../.. \
160+
&& mkdir -p "/venvs/isort" && cd "/venvs/isort" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/isort --no-cache-dir isort black && deactivate && cd ./../.. \
161+
&& mkdir -p "/venvs/mypy" && cd "/venvs/mypy" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/mypy --no-cache-dir mypy && deactivate && cd ./../.. \
162+
&& mkdir -p "/venvs/pyright" && cd "/venvs/pyright" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/pyright --no-cache-dir pyright && deactivate && cd ./../.. \
163+
&& mkdir -p "/venvs/checkov" && cd "/venvs/checkov" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/checkov --no-cache-dir packaging checkov && deactivate && cd ./../.. \
164+
&& mkdir -p "/venvs/semgrep" && cd "/venvs/semgrep" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/semgrep --no-cache-dir semgrep && deactivate && cd ./../.. \
165+
&& mkdir -p "/venvs/rst-lint" && cd "/venvs/rst-lint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/rst-lint --no-cache-dir restructuredtext_lint && deactivate && cd ./../.. \
166+
&& mkdir -p "/venvs/rstcheck" && cd "/venvs/rstcheck" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/rstcheck --no-cache-dir rstcheck && deactivate && cd ./../.. \
167+
&& mkdir -p "/venvs/rstfmt" && cd "/venvs/rstfmt" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/rstfmt --no-cache-dir rstfmt && deactivate && cd ./../.. \
168+
&& mkdir -p "/venvs/proselint" && cd "/venvs/proselint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/proselint --no-cache-dir proselint && deactivate && cd ./../.. \
169+
&& mkdir -p "/venvs/sqlfluff" && cd "/venvs/sqlfluff" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/sqlfluff --no-cache-dir sqlfluff && deactivate && cd ./../.. \
170+
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && python3 -m crossenv /usr/local/bin/target-python3 . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --find-links /download/yamllint --no-cache-dir yamllint && deactivate && cd ./../.. \
171+
&& find . | grep -E "(/__pycache__$|\.pyc$|\.pyo$)" | xargs rm -rf && rm -rf /root/.cache
172+
173+
#PIPVENV__END
105174

106175
##################
107176
# Get base image #
@@ -193,36 +262,18 @@ RUN mkdir -p ${GOPATH}/src ${GOPATH}/bin || true && \
193262
# Ignore npm package issues
194263
yarn config set ignore-engines true || true
195264

265+
COPY --link --from=python-venv /venv /venv
266+
196267
#############################################################################################
197268
## @generated by .automation/build.py using descriptor files, please do not update manually ##
198269
#############################################################################################
199270
#PIP__START
200271

201272
#PIP__END
202273

203-
#PIPVENV__START
204-
RUN PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir --upgrade pip virtualenv \
205-
&& mkdir -p "/venvs/ansible-lint" && cd "/venvs/ansible-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir ansible-lint && deactivate && cd ./../.. \
206-
&& mkdir -p "/venvs/cpplint" && cd "/venvs/cpplint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir cpplint && deactivate && cd ./../.. \
207-
&& mkdir -p "/venvs/cfn-lint" && cd "/venvs/cfn-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir cfn-lint && deactivate && cd ./../.. \
208-
&& mkdir -p "/venvs/djlint" && cd "/venvs/djlint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir djlint && deactivate && cd ./../.. \
209-
&& mkdir -p "/venvs/pylint" && cd "/venvs/pylint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir pylint typing-extensions && deactivate && cd ./../.. \
210-
&& mkdir -p "/venvs/black" && cd "/venvs/black" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir black && deactivate && cd ./../.. \
211-
&& mkdir -p "/venvs/flake8" && cd "/venvs/flake8" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir flake8 && deactivate && cd ./../.. \
212-
&& mkdir -p "/venvs/isort" && cd "/venvs/isort" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir isort black && deactivate && cd ./../.. \
213-
&& mkdir -p "/venvs/mypy" && cd "/venvs/mypy" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir mypy && deactivate && cd ./../.. \
214-
&& mkdir -p "/venvs/pyright" && cd "/venvs/pyright" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir pyright && deactivate && cd ./../.. \
215-
&& mkdir -p "/venvs/checkov" && cd "/venvs/checkov" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir packaging checkov && deactivate && cd ./../.. \
216-
&& mkdir -p "/venvs/semgrep" && cd "/venvs/semgrep" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir semgrep && deactivate && cd ./../.. \
217-
&& mkdir -p "/venvs/rst-lint" && cd "/venvs/rst-lint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir restructuredtext_lint && deactivate && cd ./../.. \
218-
&& mkdir -p "/venvs/rstcheck" && cd "/venvs/rstcheck" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir rstcheck && deactivate && cd ./../.. \
219-
&& mkdir -p "/venvs/rstfmt" && cd "/venvs/rstfmt" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir rstfmt && deactivate && cd ./../.. \
220-
&& mkdir -p "/venvs/proselint" && cd "/venvs/proselint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir proselint && deactivate && cd ./../.. \
221-
&& mkdir -p "/venvs/sqlfluff" && cd "/venvs/sqlfluff" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir sqlfluff && deactivate && cd ./../.. \
222-
&& mkdir -p "/venvs/yamllint" && cd "/venvs/yamllint" && virtualenv . && source bin/activate && PYTHONDONTWRITEBYTECODE=1 pip3 install --no-cache-dir yamllint && deactivate && cd ./../.. \
223-
&& find . | grep -E "(/__pycache__$|\.pyc$|\.pyo$)" | xargs rm -rf && rm -rf /root/.cache
274+
#PIPVENV_PATH__START
224275
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/mypy/bin:/venvs/pyright/bin:/venvs/checkov/bin:/venvs/semgrep/bin:/venvs/rst-lint/bin:/venvs/rstcheck/bin:/venvs/rstfmt/bin:/venvs/proselint/bin:/venvs/sqlfluff/bin:/venvs/yamllint/bin
225-
#PIPVENV__END
276+
#PIPVENV_PATH__END
226277

227278
############################
228279
# Install NPM dependencies #

0 commit comments

Comments
 (0)