Initial version
This commit is contained in:
commit
fc99ec5f7d
12 changed files with 182 additions and 0 deletions
6
.codespellrc
Normal file
6
.codespellrc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
[codespell]
|
||||||
|
ignore-words-list = equipments
|
||||||
|
skip = ./.*,*.csv,*.json,*.ini,*.subject,*.txt,*.html,*.log,*.conf
|
||||||
|
quiet-level = 2
|
||||||
|
ignore-regex = .*codespell-ignore$
|
||||||
|
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
*~
|
31
.pre-commit-config.yaml
Normal file
31
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# Pre-commit hooks to run tests and ensure code is cleaned.
|
||||||
|
# See https://pre-commit.com for more information
|
||||||
|
---
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.2.2
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
args:
|
||||||
|
- --config .codespellrc
|
||||||
|
#- --write-changes # Uncomment to write changes
|
||||||
|
exclude_types: [csv, json]
|
||||||
|
|
||||||
|
- repo: https://github.com/digitalpulp/pre-commit-php.git
|
||||||
|
rev: 1.4.0
|
||||||
|
hooks:
|
||||||
|
- id: php-stan
|
||||||
|
files: \.(php)$
|
||||||
|
args: ["--configuration=phpstan.neon"]
|
||||||
|
|
||||||
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
|
rev: v1.32.0
|
||||||
|
hooks:
|
||||||
|
- id: yamllint
|
||||||
|
args: ["-c", ".yamllint.yml"]
|
||||||
|
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||||
|
rev: v2.7.1
|
||||||
|
hooks:
|
||||||
|
- id: prettier
|
||||||
|
args: ["--print-width", "100"]
|
6
.yamllint.yml
Normal file
6
.yamllint.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
line-length:
|
||||||
|
max: 100
|
8
Dockerfile.common
Normal file
8
Dockerfile.common
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
RUN mkdir /src && \
|
||||||
|
git config --global --add safe.directory /src
|
||||||
|
COPY .pre-commit-config.yaml .yamllint.yml .codespellrc fake_php_project /src/
|
||||||
|
RUN cd /src && \
|
||||||
|
git init && \
|
||||||
|
git add * && \
|
||||||
|
pre-commit run --all-files && \
|
||||||
|
rm -fr /src
|
16
Dockerfile.common.init
Normal file
16
Dockerfile.common.init
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
ENV PYTHON_APT_PACKAGES="python3-all python3-dev python3-pip python3-venv"
|
||||||
|
ENV PHP_APT_PACKAGES="composer php-apcu php-cli php-curl php-deepcopy php-gd php-gnupg php-imagick php-intl php-json php-ldap php-mbstring php-memcache php-mysql php-pgsql php-rrd php-xdebug php-xml php-xmlrpc php-yaml php-zip php-gmp"
|
||||||
|
ENV DEB_APT_PACKAGES="apt-file dpkg-dev fakeroot build-essential devscripts debhelper dh-python equivs"
|
||||||
|
ENV TOOLS_APT_PACKAGES="sed lsb-release gnupg2 curl jq git rsync gitdch wget ca-certificates"
|
||||||
|
ENV APT_PACKAGES="$PYTHON_APT_PACKAGES $PHP_APT_PACKAGES $DEB_APT_PACKAGES $TOOLS_APT_PACKAGES"
|
||||||
|
|
||||||
|
ENV PIP_PACKAGES="pre-commit"
|
||||||
|
|
||||||
|
RUN echo "deb http://debian.zionetrix.net stable main" > /etc/apt/sources.list.d/zionetrix.list && \
|
||||||
|
apt-get -o Acquire::AllowInsecureRepositories=true -o Acquire::AllowDowngradeToInsecureRepositories=true update && \
|
||||||
|
apt-get -o APT::Get::AllowUnauthenticated=true install --yes zionetrix-archive-keyring && \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get install --no-install-recommends -y $APT_PACKAGES && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/* && \
|
||||||
|
apt-file update
|
10
Dockerfile.debian10
Normal file
10
Dockerfile.debian10
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# syntax = edrevo/dockerfile-plus
|
||||||
|
|
||||||
|
FROM debian:10-slim
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common.init
|
||||||
|
|
||||||
|
RUN python3 -m pip install -U pip && \
|
||||||
|
python3 -m pip install $PIP_PACKAGES
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common
|
9
Dockerfile.debian11
Normal file
9
Dockerfile.debian11
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# syntax = edrevo/dockerfile-plus
|
||||||
|
|
||||||
|
FROM debian:11-slim
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common.init
|
||||||
|
|
||||||
|
RUN python3 -m pip install $PIP_PACKAGES
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common
|
9
Dockerfile.debian12
Normal file
9
Dockerfile.debian12
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# syntax = edrevo/dockerfile-plus
|
||||||
|
|
||||||
|
FROM debian:12-slim
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common.init
|
||||||
|
|
||||||
|
RUN python3 -m pip install --break-system-packages $PIP_PACKAGES
|
||||||
|
|
||||||
|
INCLUDE+ Dockerfile.common
|
67
README.md
Normal file
67
README.md
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# Docker image to run pre-commit on PHP apps/libraries
|
||||||
|
|
||||||
|
Debian slim based images with common dependencies to run `pre-commit` on PHP apps/libraries:
|
||||||
|
|
||||||
|
- common PHP packages: `php-apcu php-cli php-curl php-deepcopy php-gd php-gnupg php-imagick php-intl php-json php-ldap php-mbstring php-memcache php-mysql php-pgsql php-rrd php-xdebug php-xml php-xmlrpc php-yaml php-zip php-gmp`
|
||||||
|
- common PHP tools: `composer`
|
||||||
|
- common python packages: `python3-all python3-dev python3-pip python3-venv`
|
||||||
|
- `build-essential` to allow local python package using `pip`
|
||||||
|
- `pre-commit` and `git` commands
|
||||||
|
- initialized `pre-commit` environments in `/src` according to provided `.pre-commit-config.yaml`
|
||||||
|
example file.
|
||||||
|
|
||||||
|
**Note:** Multiple tagged images are provided to allow test on the right Debian version you are
|
||||||
|
using in your production environment. Tags are named `debianX` with `XX` corresponding to the Debian
|
||||||
|
version. Currently supported Debian version:
|
||||||
|
|
||||||
|
- `debian10` (Debian Buster)
|
||||||
|
- `debian11` (Debian Bullseye)
|
||||||
|
- `debian12` (Debian Bookworm)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
To use it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
-it --rm \
|
||||||
|
-v "$(pwd)":/src -w /src \
|
||||||
|
brenard/php-pre-commit \
|
||||||
|
pre-commit run --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note:** To test your project with the provided `.pre-commit-config.yaml` file, use to following
|
||||||
|
command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
-it --rm \
|
||||||
|
-v "$(pwd)":/src -w /src \
|
||||||
|
-v "$(pwd)/.pre-commit-config.yaml":/src/.pre-commit-config.yaml \
|
||||||
|
brenard/php-pre-commit \
|
||||||
|
pre-commit run --all-files
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Need to use Dockerfile+ (https://github.com/edrevo/dockerfile-plus)
|
||||||
|
export DOCKER_BUILDKIT=1
|
||||||
|
export COMPOSE_DOCKER_CLI_BUILD=1
|
||||||
|
|
||||||
|
for deb_version in 10 11 12
|
||||||
|
do
|
||||||
|
docker build -t docker.io/brenard/php-pre-commit:debian${deb_version} -f Dockerfile.debian${deb_version} .
|
||||||
|
done
|
||||||
|
docker build -t docker.io/brenard/php-pre-commit:latest -f Dockerfile.debian${deb_version} .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Publish
|
||||||
|
|
||||||
|
```bash
|
||||||
|
for deb_version in 10 11 12
|
||||||
|
do
|
||||||
|
docker push docker.io/brenard/php-pre-commit:debian${deb_version}
|
||||||
|
done
|
||||||
|
docker push docker.io/brenard/php-pre-commit:latest
|
||||||
|
```
|
2
fake_php_project/.gitignore
vendored
Normal file
2
fake_php_project/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
vendor
|
||||||
|
composer.lock
|
17
fake_php_project/composer.json
Normal file
17
fake_php_project/composer.json
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"name": "brenard/fake_php_project",
|
||||||
|
"description": "Fake project",
|
||||||
|
"type": "project",
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Brenard\\FakePhpProject\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Benjamin Renard",
|
||||||
|
"email": "brenard@easter-eggs.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"require": {}
|
||||||
|
}
|
Loading…
Reference in a new issue