Skip to content

Commit f69a96e

Browse files
authored
Merge pull request #104 from devilbox/release-0.80
Rewrite gem, npm and pip install management
2 parents 6baf6ac + e3ddad4 commit f69a96e

18 files changed

Lines changed: 3486 additions & 2331 deletions

.yamllint

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
# Use 'default' rules
3+
extends: default
4+
5+
# Overwrite above default rules
6+
rules:
7+
colons:
8+
max-spaces-before: 0
9+
max-spaces-after: 60
10+
comments:
11+
require-starting-space: false
12+
min-spaces-from-content: 1
13+
line-length: disable

Dockerfiles/work/Dockerfile-5.2

Lines changed: 140 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ RUN set -x \
3737
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
3838
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \
3939
&& echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \
40-
&& curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
41-
&& echo "deb http://deb.nodesource.com/node_8.x jessie main" > /etc/apt/sources.list.d/node.list \
4240
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
4341
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
4442
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
@@ -82,15 +80,10 @@ RUN set -x \
8280
nano \
8381
net-tools \
8482
netcat \
85-
nodejs \
8683
openssh-client \
8784
patch \
8885
patchelf \
8986
postgresql-client \
90-
python-cffi \
91-
python-dev \
92-
python-pip \
93-
python-wheel \
9487
redis-tools \
9588
rsync \
9689
rubygems \
@@ -113,20 +106,40 @@ RUN set -x \
113106
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
114107
&& rm -rf /var/lib/apt/lists/* \
115108
\
116-
# Get newer pip version
117-
&& pip install --upgrade pip \
118-
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \
119-
&& rm -rf /var/lib/apt/lists/* \
120-
\
121109
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
122110
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
123111
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true)
124112

125113

114+
###
115+
### Install custom software
116+
###
126117
RUN set -x \
127-
# ansible
128-
&& /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \
129-
&& /usr/local/bin/pip install --no-cache-dir ansible \
118+
# pip
119+
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
120+
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
121+
libpython-dev \
122+
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
123+
&& rm -rf /var/lib/apt/lists/* \
124+
\
125+
&& curl -sS https://bootstrap.pypa.io/get-pip.py | python \
126+
\
127+
# nvm
128+
&& git clone https://github.com/creationix/nvm /opt/nvm \
129+
&& cd /opt/nvm \
130+
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \
131+
\
132+
&& { \
133+
echo 'export NVM_DIR="/opt/nvm"'; \
134+
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \
135+
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
136+
} >> /home/devilbox/.bashrc \
137+
\
138+
&& chown -R devilbox:devilbox /opt/nvm \
139+
\
140+
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \
141+
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \
142+
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \
130143
\
131144
# awesomeci
132145
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
@@ -136,28 +149,13 @@ RUN set -x \
136149
&& make install \
137150
&& cd / \
138151
&& rm -rf /usr/local/src/awesome-ci \
139-
\
140-
&& gem install mixlib-config -v 2.2.4 \
141-
&& gem install rb-inotify -v 0.9.10 \
142-
&& gem install mdl \
143-
&& gem install scss_lint \
144-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \
145-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \
146-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \
147-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \
148-
&& rm -rf /tmp/y \
149152
\
150153
# gitflow
151154
&& git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \
152155
&& cd /tmp/gitflow \
153156
&& make install \
154157
&& cd / && rm -rf /tmp/gitflow \
155158
\
156-
# grunt
157-
&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \
158-
&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \
159-
&& rm -rf /tmp/y \
160-
\
161159
# linkcheck
162160
&& curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
163161
&& chmod +x /usr/local/bin/linkcheck \
@@ -208,15 +206,6 @@ RUN set -x \
208206
&& curl -sS -L https://github.com/squizlabs/PHP_CodeSniffer/releases/download/2.9.0/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \
209207
&& chmod +x /usr/local/bin/phpcbf \
210208
\
211-
# pm2
212-
&& until npm install pm2 -g; do sleep 1; done \
213-
# sass
214-
&& gem install sass \
215-
# webpack
216-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \
217-
&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \
218-
&& rm -rf /tmp/y \
219-
\
220209
# wkhtmltopdf
221210
&& VERSION="$( curl -sSL https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \
222211
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
@@ -229,22 +218,12 @@ RUN set -x \
229218
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
230219
&& rm -rf /var/lib/apt/lists/* \
231220
\
232-
# yamllint
233-
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \
234-
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \
235-
\
236-
&& /usr/local/bin/pip install --no-cache-dir yamllint \
237-
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \
238-
&& rm -rf /var/lib/apt/lists/* \
239-
\
240221
# cleanup
241222
&& rm -rf /home/${MY_USER}/.*json \
242223
&& rm -rf /home/${MY_USER}/.cache \
243224
&& rm -rf /home/${MY_USER}/.composer \
244225
&& rm -rf /home/${MY_USER}/.config \
245226
&& rm -rf /home/${MY_USER}/.drush \
246-
&& rm -rf /home/${MY_USER}/.gem \
247-
&& rm -rf /home/${MY_USER}/.npm \
248227
&& rm -rf /home/${MY_USER}/.subversion \
249228
&& rm -rf /home/${MY_USER}/.v8* \
250229
\
@@ -253,15 +232,101 @@ RUN set -x \
253232
&& rm -rf /root/.composer \
254233
&& rm -rf /root/.config \
255234
&& rm -rf /root/.drush \
256-
&& rm -rf /root/.gem \
257-
&& rm -rf /root/.npm \
258235
&& rm -rf /root/.subversion \
259236
&& rm -rf /root/.v8* \
260237
\
261238
&& rm -rf /tmp/* \
239+
&& (rm -rf /tmp/.* || true) \
262240
\
241+
\
242+
&& (rm -rf /root/.gem || true ) \
243+
&& (rm -rf /root/.cache || true) \
244+
&& (rm -rf /root/.composer || true) \
245+
&& (rm -rf /root/.config || true) \
246+
&& (rm -rf /root/.npm || true) \
247+
\
248+
&& (rm -rf /home/devilbox/.cache || true) \
249+
&& (rm -rf /home/devilbox/.composer || true) \
250+
&& (rm -rf /home/devilbox/.config || true) \
251+
&& (rm -rf /home/devilbox/.npm || true) \
263252
\
264253
&& (rm -rf /usr/local/src/composer/cache/* || true) \
254+
&& rm -rf /tmp/* \
255+
&& (rm -rf /tmp/.* || true)
256+
257+
258+
###
259+
### Install Node npm packages (globally)
260+
###
261+
RUN set -x \
262+
# eslint
263+
&& su -c '. /opt/nvm/nvm.sh; npm install -g eslint' devilbox \
264+
# grunt
265+
&& su -c '. /opt/nvm/nvm.sh; npm install -g grunt' devilbox \
266+
# grunt_cli
267+
&& su -c '. /opt/nvm/nvm.sh; npm install -g grunt-cli' devilbox \
268+
# gulp
269+
&& su -c '. /opt/nvm/nvm.sh; npm install -g gulp' devilbox \
270+
# jsonlint
271+
&& su -c '. /opt/nvm/nvm.sh; npm install -g jsonlint' devilbox \
272+
# pm2
273+
&& su -c '. /opt/nvm/nvm.sh; npm install -g pm2' devilbox \
274+
# mdlint
275+
&& su -c '. /opt/nvm/nvm.sh; npm install -g mdlint' devilbox \
276+
# webpack
277+
&& su -c '. /opt/nvm/nvm.sh; npm install -g webpack' devilbox \
278+
# webpack_cli
279+
&& su -c '. /opt/nvm/nvm.sh; npm install -g webpack-cli' devilbox \
280+
\
281+
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
282+
\
283+
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
284+
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \
285+
&& rm -rf /home/devilbox/.npm \
286+
&& rm -rf /home/devilbox/.config \
287+
&& rm -rf /tmp/* \
288+
&& (rm -rf /tmp/.* || true) \
289+
\
290+
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true)
291+
292+
293+
294+
###
295+
### Install Python pip packages
296+
###
297+
RUN set -x \
298+
# ansible
299+
&& pip install --no-cache-dir --force-reinstall ansible \
300+
# yamllint
301+
&& pip install --no-cache-dir --force-reinstall yamllint \
302+
\
303+
&& rm -rf /root/.cache/pip \
304+
&& rm -rf /tmp/* \
305+
&& (rm -rf /tmp/.* || true) \
306+
\
307+
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
308+
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
309+
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true)
310+
311+
312+
###
313+
### Install Ruby gems
314+
###
315+
RUN set -x \
316+
# mixlib_config
317+
&& gem install mixlib-config -v 2.2.4 \
318+
# rb_inotify
319+
&& gem install rb-inotify -v 0.9.10 \
320+
# mdl
321+
&& gem install mdl \
322+
# scss_lint
323+
&& gem install scss_lint \
324+
# sass
325+
&& gem install sass \
326+
\
327+
&& rm -rf /root/.gem \
328+
&& rm -rf /tmp/* \
329+
&& (rm -rf /tmp/.* || true) \
265330
\
266331
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
267332
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \
@@ -273,7 +338,7 @@ RUN set -x \
273338
###
274339
RUN \
275340
{ \
276-
echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \
341+
echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:\${HOME}/.yarn/bin"; \
277342
echo "export PATH"; \
278343
echo ". /etc/bash-devilbox"; \
279344
echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \
@@ -308,7 +373,7 @@ RUN set -x \
308373
&& rm -f /usr/local/etc/php/php.ini
309374

310375
RUN set -x \
311-
&& ansible --version | grep -E '^ansible [.0-9]+$' \
376+
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[.0-9]+' \
312377
&& mdl --version | grep -E '[.0-9]+' \
313378
&& scss-lint --version | grep -E '[.0-9]+' \
314379
&& eslint -v | grep -E '[.0-9]+' \
@@ -317,18 +382,35 @@ RUN set -x \
317382
&& gulp --version | grep -E '[.0-9]+' \
318383
\
319384
&& git-flow version | grep -E '[.0-9]+' \
320-
&& grunt --version | grep -E '[.0-9]+' \
321385
&& linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \
322386
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \
323387
&& mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \
324388
&& phpcs --version | grep -E 'version [.0-9]+' \
325389
&& phpcbf --version | grep -E 'version [.0-9]+' \
326-
&& pm2 --no-daemon --version | grep -E '[.0-9]+' \
327-
&& sass --version | grep -E '[.0-9]+' \
328-
&& webpack --version | grep -E '[.0-9]+' \
329390
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [.0-9]+\s+\(.+patched.+\)" \
391+
\
392+
&& ansible --version | grep -E '^ansible [.0-9]+$' \
330393
&& yamllint --version 2>&1 | grep -E '[.0-9]+' \
331-
&& true
394+
\
395+
&& eslint -v | grep -E '[.0-9]+' \
396+
&& grunt --version | grep -E '[.0-9]+' \
397+
&& gulp --version | grep -E '[.0-9]+' \
398+
&& jsonlint --version | grep -E '[.0-9]+' \
399+
&& pm2 --no-daemon --version | grep -E '[.0-9]+' \
400+
&& mdlint --version | grep -E '[.0-9]+' \
401+
&& webpack --version | grep -E '[.0-9]+' \
402+
\
403+
&& mdl --version | grep -E '[.0-9]+' \
404+
&& sass --version | grep -E '[.0-9]+' \
405+
\
406+
&& rm -rf /home/devilbox/.config/ \
407+
&& rm -rf /root/.ansible \
408+
&& rm -rf /root/.console \
409+
&& rm -rf /root/.composer \
410+
&& rm -rf /root/.drush \
411+
&& rm -rf /root/.pm2 \
412+
&& rm -rf /tmp/* \
413+
&& (rm -rf /tmp/.* || true)
332414

333415

334416
###

0 commit comments

Comments
 (0)