Backport more tools for work flavour

This commit is contained in:
cytopia
2022-12-08 14:05:14 +01:00
parent 2bb64ccff6
commit a7292fdff9
89 changed files with 5061 additions and 419 deletions

View File

@@ -22,7 +22,14 @@ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
libpython-dev \
&& rm -rf /var/lib/apt/lists/*
###
### Install run_dep
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
unzip \
&& rm -rf /var/lib/apt/lists/*
###
### Devilbox required helper tools from group_vars (work-help.yml)
###
@@ -142,6 +149,14 @@ RUN set -eux \
###
FROM devilbox/php-fpm:7.2-slim as devilbox-work-help
###
### Install run_dep
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
unzip \
&& rm -rf /var/lib/apt/lists/*
###
### Copy nvm
@@ -249,9 +264,14 @@ RUN set -eux \
# ---------- build_deps ----------
ruby-dev \
# ---------- run_deps ----------
dos2unix \
file \
moreutils \
ruby \
# ---------- type: apt ----------
git \
jq \
shellcheck \
&& rm -rf /var/lib/apt/lists/*
###
@@ -273,6 +293,46 @@ RUN set -eux \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[0-9][.0-9]+' || (asgardcms --version; false) \
&& true
# -------------------- (npm) eslint --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force eslint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/eslint /usr/local/bin/ \
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
&& true
# -------------------- (apt) git --------------------
RUN set -eux \
&& git --version 2>&1 | grep -E '[0-9][.0-9]+' || (git --version; false) \
&& true
# -------------------- (npm) jsonlint --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force jsonlint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/jsonlint /usr/local/bin/ \
&& jsonlint --version | grep -E '[0-9][.0-9]+' || (jsonlint --version; false) \
&& true
# -------------------- (rubygem) mdl --------------------
RUN set -eux \
&& gem install chef-utils -v 16.6.14 \
\
&& gem install mdl -v 0.11.0 \
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
&& true
# -------------------- (custom) awesome-ci --------------------
RUN set -eux \
&& git clone https://github.com/cytopia/awesome-ci.git /tmp/awesome-ci \
&& cd /tmp/awesome-ci \
&& git checkout $(git describe --abbrev=0 --tags) \
&& ./configure --prefix=/usr/local \
&& make install \
&& cd / \
&& rm -rf /tmp/awesome-ci \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' || (regex-grep --version; false) \
&& true
# -------------------- (composer) codeception --------------------
RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require --no-interaction --no-cache codeception/codeception \
@@ -288,11 +348,14 @@ RUN set -eux \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' || (dep --version; false) \
&& true
# -------------------- (npm) eslint --------------------
# -------------------- (custom) git-flow --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force eslint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/eslint /usr/local/bin/ \
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
&& git clone https://github.com/petervanderdoes/gitflow-avh /tmp/gitflow \
&& cd /tmp/gitflow \
&& make install \
&& cd / && rm -rf /tmp/gitflow \
\
&& git-flow version 2>&1 | grep -E '[0-9][.0-9]+' || (git-flow version; false) \
&& true
# -------------------- (npm) grunt-cli --------------------
@@ -314,11 +377,19 @@ RUN set -eux \
&& jq --version 2>&1 | grep -E '[0-9][.0-9]+' || (jq --version; false) \
&& true
# -------------------- (npm) jsonlint --------------------
# -------------------- (composer) laravel-installer --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force jsonlint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/jsonlint /usr/local/bin/ \
&& jsonlint --version | grep -E '[0-9][.0-9]+' || (jsonlint --version; false) \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-2 global require --no-interaction --no-cache laravel/installer:4.0.0 \
&& ln -s /usr/local/src/composer/vendor/laravel/installer/bin/laravel /usr/local/bin/ \
&& rm -rf /usr/local/src/composer/cache/* \
&& laravel --version | grep -E '^Laravel Installer\s[0-9][.0-9]+$' || (laravel --version; false) \
&& true
# -------------------- (custom) linkcheck --------------------
RUN set -eux \
&& curl -sS -L --fail -o /usr/local/bin/linkcheck https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \
&& linkcheck --version | grep -E 'v[0-9][.0-9]+' || (linkcheck --version; false) \
&& true
# -------------------- (composer) lumen --------------------
@@ -329,12 +400,42 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' || (lumen --version; false) \
&& true
# -------------------- (rubygem) mdl --------------------
# -------------------- (npm) mdlint --------------------
RUN set -eux \
&& gem install chef-utils -v 16.6.14 \
\
&& gem install mdl -v 0.11.0 \
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force mdlint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/mdlint /usr/local/bin/ \
&& mdlint --version | grep -E '[0-9][.0-9]+' || (mdlint --version; false) \
&& true
# -------------------- (custom) php-cs-fixer --------------------
RUN set -eux \
&& PHP_CS_FIXER_URL="https://cs.symfony.com/download/php-cs-fixer-v2.phar" \
&& curl -sS -k -L --fail -L "${PHP_CS_FIXER_URL}" -o /usr/local/bin/php-cs-fixer \
&& chmod +x /usr/local/bin/php-cs-fixer \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' || (php-cs-fixer --version; false) \
&& true
# -------------------- (custom) phpcbf --------------------
RUN set -eux \
&& PHPCBF_URL="https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar" \
&& curl -sS -k -L --fail -L "${PHPCBF_URL}" -o /usr/local/bin/phpcbf \
&& chmod +x /usr/local/bin/phpcbf \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' || (phpcbf --version; false) \
&& true
# -------------------- (custom) phpcs --------------------
RUN set -eux \
&& PHPCS_URL="https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar" \
&& curl -sS -k -L --fail -L "${PHPCS_URL}" -o /usr/local/bin/phpcs \
&& chmod +x /usr/local/bin/phpcs \
&& phpcs --version | grep -E 'version [0-9][.0-9]+' || (phpcs --version; false) \
&& true
# -------------------- (custom) phpmd --------------------
RUN set -eux \
&& curl -sS -k -L --fail https://phpmd.org/static/latest/phpmd.phar -L -o /usr/local/bin/phpmd \
&& chmod +x /usr/local/bin/phpmd \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' || (phpmd --version; false) \
&& true
# -------------------- (custom) phpunit --------------------
@@ -351,16 +452,61 @@ RUN set -eux \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' || (phpunit --version; false) \
&& true
# -------------------- (npm) pm2 --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force pm2' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/pm2 /usr/local/bin/ \
&& pm2 --no-daemon --version | tail -1 | grep -E '[0-9][.0-9]+' || (pm2 --no-daemon --version; false) \
&& true
# -------------------- (pip) pwncat --------------------
RUN set -eux \
&& pip install --no-cache-dir --no-compile --force-reinstall pwncat \
&& ln -s pwncat /usr/local/bin/netcat \
&& ln -s pwncat /usr/local/bin/nc \
\
&& pwncat --version 2>&1 | grep -E 'Version [0-9][.0-9]+' || (pwncat --version; false) \
&& true
# -------------------- (custom) wpcli --------------------
# -------------------- (npm) sass --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force sass' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/sass /usr/local/bin/ \
&& sass --version | grep -E '[0-9][.0-9]+' || (sass --version; false) \
&& true
# -------------------- (apt) shellcheck --------------------
RUN set -eux \
&& shellcheck --version | grep -E '[0-9][.0-9]+' || (shellcheck --version; false) \
&& true
# -------------------- (npm) stylelint --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force stylelint' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/stylelint /usr/local/bin/ \
&& stylelint --version | grep -E '[0-9][.0-9]+' || (stylelint --version; false) \
&& true
# -------------------- (custom) symfony-cli --------------------
RUN set -eux \
&& curl -sS https://get.symfony.com/cli/installer | bash -s -- --install-dir /usr/local/bin \
&& symfony --no-ansi -V | grep -E 'version [0-9][.0-9]+' || (symfony --no-ansi -V; false) \
&& true
# -------------------- (npm) vue-cli --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force @vue/cli' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/vue /usr/local/bin/ \
&& vue --version | grep -E '[0-9][.0-9]+' || (vue --version; false) \
&& true
# -------------------- (npm) webpack-cli --------------------
RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
&& ln -s /opt/nvm/versions/node/$(su -c '. /opt/nvm/nvm.sh; node --version' devilbox)/bin/webpack-cli /usr/local/bin/ \
&& webpack-cli --version | grep -E '[0-9][.0-9]+' || (webpack-cli --version; false) \
&& true
# -------------------- (custom) wp-cli --------------------
RUN set -eux \
&& WPCLI_URL="https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" \
&& curl -sS -L --fail "${WPCLI_URL}" -L -o /usr/local/bin/wp \
@@ -410,9 +556,14 @@ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
# ---------- run_deps ----------
dos2unix \
file \
moreutils \
ruby \
# ---------- type: apt ----------
git \
jq \
shellcheck \
&& rm -rf /var/lib/apt/lists/*
###
@@ -469,6 +620,31 @@ RUN set -eux \
&& asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[0-9][.0-9]+' || (asgardcms --version; false) \
&& true
# -------------------- (npm) eslint --------------------
RUN set -eux \
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
&& true
# -------------------- (apt) git --------------------
RUN set -eux \
&& git --version 2>&1 | grep -E '[0-9][.0-9]+' || (git --version; false) \
&& true
# -------------------- (npm) jsonlint --------------------
RUN set -eux \
&& jsonlint --version | grep -E '[0-9][.0-9]+' || (jsonlint --version; false) \
&& true
# -------------------- (rubygem) mdl --------------------
RUN set -eux \
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
&& true
# -------------------- (custom) awesome-ci --------------------
RUN set -eux \
&& regex-grep --version | grep -E '[0-9][.0-9]+' || (regex-grep --version; false) \
&& true
# -------------------- (composer) codeception --------------------
RUN set -eux \
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' || (codecept --version; false) \
@@ -479,9 +655,9 @@ RUN set -eux \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' || (dep --version; false) \
&& true
# -------------------- (npm) eslint --------------------
# -------------------- (custom) git-flow --------------------
RUN set -eux \
&& eslint -v | grep -E '[0-9][.0-9]+' || (eslint -v; false) \
&& git-flow version 2>&1 | grep -E '[0-9][.0-9]+' || (git-flow version; false) \
&& true
# -------------------- (npm) grunt-cli --------------------
@@ -499,9 +675,14 @@ RUN set -eux \
&& jq --version 2>&1 | grep -E '[0-9][.0-9]+' || (jq --version; false) \
&& true
# -------------------- (npm) jsonlint --------------------
# -------------------- (composer) laravel-installer --------------------
RUN set -eux \
&& jsonlint --version | grep -E '[0-9][.0-9]+' || (jsonlint --version; false) \
&& laravel --version | grep -E '^Laravel Installer\s[0-9][.0-9]+$' || (laravel --version; false) \
&& true
# -------------------- (custom) linkcheck --------------------
RUN set -eux \
&& linkcheck --version | grep -E 'v[0-9][.0-9]+' || (linkcheck --version; false) \
&& true
# -------------------- (composer) lumen --------------------
@@ -509,9 +690,29 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' || (lumen --version; false) \
&& true
# -------------------- (rubygem) mdl --------------------
# -------------------- (npm) mdlint --------------------
RUN set -eux \
&& mdl --version | grep -E '[.0-9]+' || (mdl --version; false) \
&& mdlint --version | grep -E '[0-9][.0-9]+' || (mdlint --version; false) \
&& true
# -------------------- (custom) php-cs-fixer --------------------
RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' || (php-cs-fixer --version; false) \
&& true
# -------------------- (custom) phpcbf --------------------
RUN set -eux \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' || (phpcbf --version; false) \
&& true
# -------------------- (custom) phpcs --------------------
RUN set -eux \
&& phpcs --version | grep -E 'version [0-9][.0-9]+' || (phpcs --version; false) \
&& true
# -------------------- (custom) phpmd --------------------
RUN set -eux \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' || (phpmd --version; false) \
&& true
# -------------------- (custom) phpunit --------------------
@@ -519,12 +720,47 @@ RUN set -eux \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' || (phpunit --version; false) \
&& true
# -------------------- (npm) pm2 --------------------
RUN set -eux \
&& pm2 --no-daemon --version | tail -1 | grep -E '[0-9][.0-9]+' || (pm2 --no-daemon --version; false) \
&& true
# -------------------- (pip) pwncat --------------------
RUN set -eux \
&& pwncat --version 2>&1 | grep -E 'Version [0-9][.0-9]+' || (pwncat --version; false) \
&& true
# -------------------- (custom) wpcli --------------------
# -------------------- (npm) sass --------------------
RUN set -eux \
&& sass --version | grep -E '[0-9][.0-9]+' || (sass --version; false) \
&& true
# -------------------- (apt) shellcheck --------------------
RUN set -eux \
&& shellcheck --version | grep -E '[0-9][.0-9]+' || (shellcheck --version; false) \
&& true
# -------------------- (npm) stylelint --------------------
RUN set -eux \
&& stylelint --version | grep -E '[0-9][.0-9]+' || (stylelint --version; false) \
&& true
# -------------------- (custom) symfony-cli --------------------
RUN set -eux \
&& symfony --no-ansi -V | grep -E 'version [0-9][.0-9]+' || (symfony --no-ansi -V; false) \
&& true
# -------------------- (npm) vue-cli --------------------
RUN set -eux \
&& vue --version | grep -E '[0-9][.0-9]+' || (vue --version; false) \
&& true
# -------------------- (npm) webpack-cli --------------------
RUN set -eux \
&& webpack-cli --version | grep -E '[0-9][.0-9]+' || (webpack-cli --version; false) \
&& true
# -------------------- (custom) wp-cli --------------------
RUN set -eux \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' || (wp --allow-root --version; false) \
&& true