mirror of
https://github.com/super-linter/super-linter.git
synced 2024-11-21 16:21:00 -05:00
chore: manage php dependencies (#6139)
- Install PHP dependencies using composer - Watch composer dependency updates with Dependabot
This commit is contained in:
parent
058b9239d4
commit
72a4884f7a
12 changed files with 2313 additions and 67 deletions
|
@ -68,6 +68,16 @@
|
||||||
"target": "/package-lock.json",
|
"target": "/package-lock.json",
|
||||||
"type": "bind"
|
"type": "bind"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"source": "${localWorkspaceFolder}/dependencies/composer/composer.json",
|
||||||
|
"target": "/php-composer/composer.json",
|
||||||
|
"type": "bind"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "${localWorkspaceFolder}/dependencies/composer/composer.lock",
|
||||||
|
"target": "/php-composer/composer.lock",
|
||||||
|
"type": "bind"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"source": "${localWorkspaceFolder}/scripts/bash-exec.sh",
|
"source": "${localWorkspaceFolder}/scripts/bash-exec.sh",
|
||||||
"target": "/usr/bin/bash-exec",
|
"target": "/usr/bin/bash-exec",
|
||||||
|
|
12
.github/dependabot.yml
vendored
12
.github/dependabot.yml
vendored
|
@ -1,7 +1,4 @@
|
||||||
---
|
---
|
||||||
#################################
|
|
||||||
# GitHub Dependabot Config info #
|
|
||||||
#################################
|
|
||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
- package-ecosystem: "devcontainers"
|
- package-ecosystem: "devcontainers"
|
||||||
|
@ -91,3 +88,12 @@ updates:
|
||||||
schedule:
|
schedule:
|
||||||
interval: "weekly"
|
interval: "weekly"
|
||||||
open-pull-requests-limit: 100
|
open-pull-requests-limit: 100
|
||||||
|
|
||||||
|
- package-ecosystem: "composer"
|
||||||
|
commit-message:
|
||||||
|
prefix: "deps(php)"
|
||||||
|
directories:
|
||||||
|
- dependencies/composer
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
|
open-pull-requests-limit: 100
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -37,6 +37,7 @@ build/Release
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
node_modules/
|
node_modules/
|
||||||
jspm_packages/
|
jspm_packages/
|
||||||
|
dependencies/composer/vendor
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
# TypeScript v1 declaration files
|
||||||
typings/
|
typings/
|
||||||
|
|
24
Dockerfile
24
Dockerfile
|
@ -30,6 +30,7 @@ FROM ghcr.io/clj-kondo/clj-kondo:2024.08.01-alpine AS clj-kondo
|
||||||
FROM dart:3.5.1-sdk AS dart
|
FROM dart:3.5.1-sdk AS dart
|
||||||
FROM mcr.microsoft.com/dotnet/sdk:8.0.401-alpine3.20 AS dotnet-sdk
|
FROM mcr.microsoft.com/dotnet/sdk:8.0.401-alpine3.20 AS dotnet-sdk
|
||||||
FROM mcr.microsoft.com/powershell:7.4-alpine-3.17 AS powershell
|
FROM mcr.microsoft.com/powershell:7.4-alpine-3.17 AS powershell
|
||||||
|
FROM composer/composer:2.7.6 AS php-composer
|
||||||
|
|
||||||
FROM python:3.12.5-alpine3.20 AS clang-format
|
FROM python:3.12.5-alpine3.20 AS clang-format
|
||||||
|
|
||||||
|
@ -118,6 +119,13 @@ FROM powershell AS powershell-installer
|
||||||
# when copying PowerShell stuff in the main image
|
# when copying PowerShell stuff in the main image
|
||||||
RUN echo "${PS_INSTALL_FOLDER}" > /tmp/PS_INSTALL_FOLDER
|
RUN echo "${PS_INSTALL_FOLDER}" > /tmp/PS_INSTALL_FOLDER
|
||||||
|
|
||||||
|
FROM php-composer AS php-linters
|
||||||
|
|
||||||
|
COPY dependencies/composer/composer.json dependencies/composer/composer.lock /app/
|
||||||
|
|
||||||
|
RUN composer update \
|
||||||
|
&& composer audit
|
||||||
|
|
||||||
FROM python:3.12.5-alpine3.20 AS base_image
|
FROM python:3.12.5-alpine3.20 AS base_image
|
||||||
|
|
||||||
LABEL com.github.actions.name="Super-Linter" \
|
LABEL com.github.actions.name="Super-Linter" \
|
||||||
|
@ -164,6 +172,8 @@ RUN apk add --no-cache \
|
||||||
php83-curl \
|
php83-curl \
|
||||||
php83-dom \
|
php83-dom \
|
||||||
php83-iconv \
|
php83-iconv \
|
||||||
|
php83-pecl-igbinary \
|
||||||
|
php83-intl \
|
||||||
php83-mbstring \
|
php83-mbstring \
|
||||||
php83-openssl \
|
php83-openssl \
|
||||||
php83-phar \
|
php83-phar \
|
||||||
|
@ -230,13 +240,12 @@ WORKDIR /
|
||||||
COPY scripts/install-lua.sh /
|
COPY scripts/install-lua.sh /
|
||||||
RUN --mount=type=secret,id=GITHUB_TOKEN /install-lua.sh && rm -rf /install-lua.sh
|
RUN --mount=type=secret,id=GITHUB_TOKEN /install-lua.sh && rm -rf /install-lua.sh
|
||||||
|
|
||||||
##############################
|
############################
|
||||||
# Install Phive dependencies #
|
# Install PHP dependencies #
|
||||||
##############################
|
############################
|
||||||
COPY dependencies/phive.xml /phive.xml
|
ENV PHP_COMPOSER_PACKAGES_DIR=/php-composer/vendor
|
||||||
COPY scripts/install-phive.sh /
|
COPY --from=php-composer /usr/bin/composer /usr/bin/
|
||||||
RUN /install-phive.sh \
|
COPY --from=php-linters /app/vendor "${PHP_COMPOSER_PACKAGES_DIR}"
|
||||||
&& rm -rfv /install-phive.sh /phive.xml
|
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Install ktlint #
|
# Install ktlint #
|
||||||
|
@ -416,6 +425,7 @@ ENV PATH="${PATH}:/venvs/yq/bin"
|
||||||
ENV PATH="${PATH}:/node_modules/.bin"
|
ENV PATH="${PATH}:/node_modules/.bin"
|
||||||
ENV PATH="${PATH}:/usr/lib/go/bin"
|
ENV PATH="${PATH}:/usr/lib/go/bin"
|
||||||
ENV PATH="${PATH}:${DART_SDK}/bin:/root/.pub-cache/bin"
|
ENV PATH="${PATH}:${DART_SDK}/bin:/root/.pub-cache/bin"
|
||||||
|
ENV PATH="${PATH}:${PHP_COMPOSER_PACKAGES_DIR}/bin"
|
||||||
|
|
||||||
# Renovate optionally requires re2, and will warn if its not present
|
# Renovate optionally requires re2, and will warn if its not present
|
||||||
# Setting this envoronment variable disables this warning.
|
# Setting this envoronment variable disables this warning.
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -151,6 +151,8 @@ open-shell-super-linter-container: ## Open a shell in the Super-linter container
|
||||||
-v "$(CURDIR)/dependencies/Gemfile":/Gemfile \
|
-v "$(CURDIR)/dependencies/Gemfile":/Gemfile \
|
||||||
-v "$(CURDIR)/dependencies/package-lock.json":/package-lock.json \
|
-v "$(CURDIR)/dependencies/package-lock.json":/package-lock.json \
|
||||||
-v "$(CURDIR)/dependencies/package.json":/package.json \
|
-v "$(CURDIR)/dependencies/package.json":/package.json \
|
||||||
|
-v "$(CURDIR)/dependencies/composer/composer.json":/php-composer/composer.json \
|
||||||
|
-v "$(CURDIR)/dependencies/composer/composer.lock":/php-composer/composer.lock \
|
||||||
-v "$(CURDIR)/scripts/bash-exec.sh":/usr/bin/bash-exec \
|
-v "$(CURDIR)/scripts/bash-exec.sh":/usr/bin/bash-exec \
|
||||||
-v "$(CURDIR)/scripts/git-merge-conflict-markers.sh":/usr/bin/git-merge-conflict-markers \
|
-v "$(CURDIR)/scripts/git-merge-conflict-markers.sh":/usr/bin/git-merge-conflict-markers \
|
||||||
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
$(SUPER_LINTER_TEST_CONTAINER_URL)
|
||||||
|
|
8
dependencies/composer/composer.json
vendored
Normal file
8
dependencies/composer/composer.json
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://getcomposer.org/schema.json",
|
||||||
|
"require": {
|
||||||
|
"squizlabs/php_codesniffer": "^3.10.1",
|
||||||
|
"phpstan/phpstan": "^1.11.2",
|
||||||
|
"vimeo/psalm": "^5.24.0"
|
||||||
|
}
|
||||||
|
}
|
2238
dependencies/composer/composer.lock
generated
vendored
Normal file
2238
dependencies/composer/composer.lock
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
8
dependencies/phive.xml
vendored
8
dependencies/phive.xml
vendored
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<phive xmlns="https://phar.io/phive">
|
|
||||||
<!-- When adding new linter, do not forget to add its GPG key ID to Dockerfile -->
|
|
||||||
<phar name="composer" version="^2.7.6" installed="2.7.6" location="./usr/bin/composer" copy="false"/>
|
|
||||||
<phar name="phpcs" version="^3.10.1" installed="3.10.1" location="/usr/local/bin/phpcs" copy="true"/>
|
|
||||||
<phar name="phpstan" version="^1.11.2" installed="1.11.2" location="/usr/local/bin/phpstan" copy="true"/>
|
|
||||||
<phar name="psalm" version="^5.24.0" installed="5.24.0" location="./usr/local/bin/psalm" copy="true"/>
|
|
||||||
</phive>
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
apk add --no-cache --virtual .php-build-deps \
|
|
||||||
gnupg
|
|
||||||
|
|
||||||
# Install phive
|
|
||||||
curl --retry 5 --retry-delay 5 -sLO https://phar.io/releases/phive.phar
|
|
||||||
curl --retry 5 --retry-delay 5 -sLO https://phar.io/releases/phive.phar.asc
|
|
||||||
gpg --keyserver hkps://keys.openpgp.org --recv-keys "0x9D8A98B29B2D5D79"
|
|
||||||
gpg --verify phive.phar.asc phive.phar
|
|
||||||
chmod +x phive.phar
|
|
||||||
mv phive.phar /usr/local/bin/phive
|
|
||||||
rm phive.phar.asc
|
|
||||||
|
|
||||||
# Install the PHARs listed in phive.xml
|
|
||||||
phive --no-progress install \
|
|
||||||
--trust-gpg-keys 31C7E470E2138192,CF1A108D0E7AE720,8A03EA3B385DBAA1,12CE0F1D262429A5,5E6DDE998AB73B8E,51C67305FFC2E5C0,CBB3D576F2A0946F,689DAD778FF08760E046228BA978220305CD5C32 \
|
|
||||||
--target /usr/bin
|
|
||||||
|
|
||||||
apk del --no-network --purge .php-build-deps
|
|
|
@ -63,6 +63,8 @@ control "super-linter-installed-packages" do
|
||||||
"php83-curl",
|
"php83-curl",
|
||||||
"php83-dom",
|
"php83-dom",
|
||||||
"php83-iconv",
|
"php83-iconv",
|
||||||
|
"php83-pecl-igbinary",
|
||||||
|
"php83-intl",
|
||||||
"php83-mbstring",
|
"php83-mbstring",
|
||||||
"php83-openssl",
|
"php83-openssl",
|
||||||
"php83-phar",
|
"php83-phar",
|
||||||
|
|
|
@ -290,7 +290,10 @@ COMMAND_TO_RUN+=("${SUPER_LINTER_TEST_CONTAINER_URL}")
|
||||||
declare -i EXPECTED_EXIT_CODE
|
declare -i EXPECTED_EXIT_CODE
|
||||||
EXPECTED_EXIT_CODE=${EXPECTED_EXIT_CODE:-0}
|
EXPECTED_EXIT_CODE=${EXPECTED_EXIT_CODE:-0}
|
||||||
|
|
||||||
|
# Remove leftovers before instrumenting the test because other tests might have
|
||||||
|
# created temporary files and caches
|
||||||
RemoveTestLeftovers
|
RemoveTestLeftovers
|
||||||
|
RemoveTestLogsAndSuperLinterOutputs
|
||||||
|
|
||||||
if [[ "${ENABLE_GITHUB_ACTIONS_STEP_SUMMARY}" == "true" ]]; then
|
if [[ "${ENABLE_GITHUB_ACTIONS_STEP_SUMMARY}" == "true" ]]; then
|
||||||
debug "Creating GitHub Actions step summary file: ${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}"
|
debug "Creating GitHub Actions step summary file: ${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}"
|
||||||
|
@ -307,6 +310,10 @@ SUPER_LINTER_EXIT_CODE=$?
|
||||||
# Enable the errexit option that we check later
|
# Enable the errexit option that we check later
|
||||||
set -o errexit
|
set -o errexit
|
||||||
|
|
||||||
|
# Remove leftovers after runnint tests because we don't want other tests
|
||||||
|
# to consider them
|
||||||
|
RemoveTestLeftovers
|
||||||
|
|
||||||
debug "Super-linter workspace: ${SUPER_LINTER_WORKSPACE}"
|
debug "Super-linter workspace: ${SUPER_LINTER_WORKSPACE}"
|
||||||
debug "Super-linter exit code: ${SUPER_LINTER_EXIT_CODE}"
|
debug "Super-linter exit code: ${SUPER_LINTER_EXIT_CODE}"
|
||||||
|
|
||||||
|
|
|
@ -192,38 +192,30 @@ RemoveTestLeftovers() {
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/Cargo.lock")
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/Cargo.lock")
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/target")
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/target")
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/Cargo.lock")
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/Cargo.lock")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_WORKSPACE}/dependencies/composer/vendor")
|
||||||
# Delete leftovers in pwd in case the workspace is not pwd
|
# Delete leftovers in pwd in case the workspace is not pwd
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/target")
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/target")
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/Cargo.lock")
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/bad/Cargo.lock")
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/target")
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/target")
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/Cargo.lock")
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/${LINTERS_TEST_CASE_DIRECTORY}/rust_clippy/good/Cargo.lock")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/dependencies/composer/vendor")
|
||||||
# These variables are defined after configuring test cases, so they might not
|
|
||||||
# have been initialized yet
|
|
||||||
if [[ -v LOG_FILE_PATH ]] &&
|
|
||||||
[[ -n "${LOG_FILE_PATH}" ]]; then
|
|
||||||
LEFTOVERS_TO_CLEAN+=("${LOG_FILE_PATH}")
|
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${LOG_FILE_PATH}")")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -v SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH ]] &&
|
|
||||||
[[ -n "${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}" ]]; then
|
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}")
|
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}")")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -v SUPER_LINTER_MAIN_OUTPUT_PATH ]] &&
|
|
||||||
[[ -n "${SUPER_LINTER_MAIN_OUTPUT_PATH}" ]]; then
|
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_MAIN_OUTPUT_PATH}")
|
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_MAIN_OUTPUT_PATH}")")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -v SUPER_LINTER_SUMMARY_FILE_PATH ]] &&
|
|
||||||
[[ -n "${SUPER_LINTER_SUMMARY_FILE_PATH}" ]]; then
|
|
||||||
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_SUMMARY_FILE_PATH}")
|
|
||||||
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_SUMMARY_FILE_PATH}")")
|
|
||||||
fi
|
|
||||||
|
|
||||||
debug "Cleaning eventual test leftovers: ${LEFTOVERS_TO_CLEAN[*]}"
|
debug "Cleaning eventual test leftovers: ${LEFTOVERS_TO_CLEAN[*]}"
|
||||||
sudo rm -rfv "${LEFTOVERS_TO_CLEAN[@]}"
|
sudo rm -rf "${LEFTOVERS_TO_CLEAN[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
RemoveTestLogsAndSuperLinterOutputs() {
|
||||||
|
local LEFTOVERS_TO_CLEAN=()
|
||||||
|
LEFTOVERS_TO_CLEAN+=("${LOG_FILE_PATH}")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_MAIN_OUTPUT_PATH}")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("${SUPER_LINTER_SUMMARY_FILE_PATH}")
|
||||||
|
|
||||||
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${LOG_FILE_PATH}")")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_GITHUB_STEP_SUMMARY_FILE_PATH}")")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_MAIN_OUTPUT_PATH}")")
|
||||||
|
LEFTOVERS_TO_CLEAN+=("$(pwd)/$(basename "${SUPER_LINTER_SUMMARY_FILE_PATH}")")
|
||||||
|
|
||||||
|
debug "Cleaning eventual test logs and Super-linter outputs leftovers: ${LEFTOVERS_TO_CLEAN[*]}"
|
||||||
|
sudo rm -rf "${LEFTOVERS_TO_CLEAN[@]}"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue