Compare commits
26 Commits
Author | SHA1 | Date |
---|---|---|
Adam Štrauch | 07c9d923bb | |
Adam Štrauch | 047f922fae | |
Adam Štrauch | ebfc74b9e3 | |
Adam Štrauch | 9bd5aefd76 | |
Adam Štrauch | c397e365dc | |
Adam Štrauch | 73b5ce09e3 | |
Adam Štrauch | 940d2b7f01 | |
Adam Štrauch | bef7e0a2c7 | |
Adam Štrauch | 488cea48af | |
Adam Štrauch | 27c6165dd0 | |
Adam Štrauch | 3583913038 | |
Adam Štrauch | 83d43a4121 | |
Adam Štrauch | fe72c1a797 | |
Adam Štrauch | c5801364d1 | |
Adam Štrauch | 82c648b7cd | |
Adam Štrauch | 2c9ee0c3a7 | |
Adam Štrauch | 7808e5062c | |
Adam Štrauch | 4d804760cd | |
Adam Štrauch | 7e09a0b778 | |
Adam Štrauch | d2333b2b3a | |
Adam Štrauch | 631ad0c859 | |
Adam Štrauch | cd028c9e32 | |
Adam Štrauch | 4cb5bc17c9 | |
Adam Štrauch | 9aef3650a9 | |
Adam Štrauch | 9a4cf65c49 | |
Adam Štrauch | 69f856c3e0 |
|
@ -4,7 +4,7 @@ name: image building
|
|||
|
||||
steps:
|
||||
- name: build&push squashed image
|
||||
image: harbor.hq.rosti.cz/library/builder:35
|
||||
image: harbor.hq.rosti.cz/library/builder:39
|
||||
environment:
|
||||
username: robot$rosti+rosti
|
||||
password:
|
||||
|
@ -13,7 +13,7 @@ steps:
|
|||
privileged: true
|
||||
commands:
|
||||
- echo "$password" | podman login -u $username --password-stdin $repo
|
||||
- make DOCKER=podman push
|
||||
- task push
|
||||
|
||||
trigger:
|
||||
event:
|
||||
|
@ -29,7 +29,7 @@ name: test image
|
|||
|
||||
steps:
|
||||
- name: test build
|
||||
image: harbor.hq.rosti.cz/library/builder:35
|
||||
image: harbor.hq.rosti.cz/library/builder:39
|
||||
environment:
|
||||
username: robot$rosti+rosti
|
||||
password:
|
||||
|
@ -38,8 +38,8 @@ steps:
|
|||
privileged: true
|
||||
commands:
|
||||
- echo "$password" | podman login -u $username --password-stdin $repo
|
||||
- make VERSION=test DOCKER=podman build
|
||||
- make DOCKER=podman VERSION=test test
|
||||
- task build VERSION=test
|
||||
- task test VERSION=test
|
||||
|
||||
trigger:
|
||||
event:
|
|
@ -0,0 +1,29 @@
|
|||
name: Test build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [moon, amd64]
|
||||
container:
|
||||
image: harbor.hq.rosti.cz/library/builder:38
|
||||
env:
|
||||
REPO: harbor.hq.rosti.cz
|
||||
USERNAME: robot$rosti+rosti
|
||||
# ports:
|
||||
# - 80
|
||||
# volumes:
|
||||
# - my_docker_volume:/volume_mount
|
||||
# options: --cpus 1
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Test build
|
||||
run: |
|
||||
echo "${{ secrets.repo_password }}" | podman login -u $USERNAME --password-stdin $REPO
|
||||
# task build
|
||||
# task test
|
||||
|
||||
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
name: Image testing
|
||||
|
||||
on:
|
||||
- push
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: testing
|
||||
run: |
|
||||
make build
|
||||
make test
|
65
Dockerfile
65
Dockerfile
|
@ -1,4 +1,4 @@
|
|||
FROM debian:11
|
||||
FROM debian:bookworm
|
||||
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
|
||||
|
@ -14,14 +14,14 @@ libpng-dev libpng-dev build-essential git mercurial build-essential \
|
|||
libbz2-dev libsqlite3-dev libreadline-dev zlib1g-dev libncurses5-dev \
|
||||
libgdbm-dev libgd-dev cron git subversion vim nano mc htop procps \
|
||||
dropbear gettext wget redis-server memcached supervisor curl ssh \
|
||||
mariadb-client postgresql-client-13 postgresql-13-postgis-3-scripts bind9-host dnsutils nginx \
|
||||
mariadb-client postgresql-client-13 postgresql-13-postgis-3-scripts bind9-host dnsutils nginx nginx-extras libnginx-mod-http-image-filter \
|
||||
libxml2-dev libxslt1-dev openssh-sftp-server links2 lynx \
|
||||
imagemagick libmagick++-6.q16-dev libmagick++-6.q16hdri-dev libmagickwand-dev ncdu libsodium-dev \
|
||||
python3 python3-pip python3-virtualenv \
|
||||
libcurl4-openssl-dev python-dev libproj-dev gdal-bin libmemcached-dev swig mutt \
|
||||
ffmpeg libyaml-dev libc-client2007e-dev libonig-dev libkrb5-dev dialog \
|
||||
whiptail tmux rsync nmap libzip-dev libfreetype6-dev \
|
||||
jpegoptim optipng pngquant gifsicle webp libvpx-dev libwebp-dev # User requirement (svgo not available)
|
||||
jpegoptim optipng pngquant gifsicle webp libvpx-dev libwebp-dev jq inotify-tools ripgrep
|
||||
|
||||
WORKDIR /srv
|
||||
|
||||
|
@ -44,56 +44,43 @@ ENV TERM xterm
|
|||
## Node.js
|
||||
WORKDIR /usr/src
|
||||
ADD build_node.sh /usr/local/bin/build_node.sh
|
||||
# 2021/11
|
||||
RUN build_node.sh 14.18.1
|
||||
RUN build_node.sh 15.14.0
|
||||
RUN build_node.sh 16.13.0
|
||||
RUN build_node.sh 17.1.0
|
||||
# 2022/04
|
||||
RUN build_node.sh 16.14.2
|
||||
RUN build_node.sh 18.0.0
|
||||
# 2023/08
|
||||
RUN build_node.sh 19.9.0
|
||||
RUN build_node.sh 18.17.1
|
||||
RUN build_node.sh 20.5.1
|
||||
RUN build_node.sh 20.9.0
|
||||
RUN build_node.sh 21.2.0
|
||||
|
||||
## Python
|
||||
WORKDIR /usr/src
|
||||
ADD build_python.sh /usr/local/bin/build_python.sh
|
||||
# 2020/09
|
||||
RUN build_python.sh 3.9.7
|
||||
# 2021/11
|
||||
RUN build_python.sh 3.10.0
|
||||
# 2022/04
|
||||
RUN build_python.sh 3.10.4
|
||||
|
||||
## PHP
|
||||
WORKDIR /usr/src
|
||||
ADD build_php.sh /usr/local/bin/build_php.sh
|
||||
# 2021/09
|
||||
RUN build_php.sh 7.4.23
|
||||
# 2021/11
|
||||
RUN build_php.sh 7.4.26
|
||||
# 2023/08
|
||||
RUN build_python.sh 3.10.12
|
||||
RUN build_python.sh 3.10.13
|
||||
RUN build_python.sh 3.11.4
|
||||
RUN build_python.sh 3.11.6
|
||||
RUN build_python.sh 3.12.0
|
||||
|
||||
## PHP 8
|
||||
ADD build_php8.sh /usr/local/bin/build_php8.sh
|
||||
# 2021/11
|
||||
RUN build_php8.sh 8.0.13
|
||||
# 2022/04
|
||||
RUN build_php8.sh 8.0.18
|
||||
RUN build_php8.sh 8.1.5
|
||||
# 2023/08
|
||||
RUN build_php8.sh 8.1.21
|
||||
RUN build_php8.sh 8.1.25
|
||||
RUN build_php8.sh 8.2.7
|
||||
RUN build_php8.sh 8.2.12
|
||||
|
||||
## Ruby
|
||||
WORKDIR /usr/src
|
||||
ADD build_ruby.sh /usr/local/bin/build_ruby.sh
|
||||
# 2020/09
|
||||
RUN build_ruby.sh 2.7.4
|
||||
RUN build_ruby.sh 3.0.2
|
||||
# 2022/04
|
||||
RUN build_ruby.sh 3.1.2
|
||||
# 2023/08
|
||||
RUN build_ruby.sh 3.1.4
|
||||
RUN build_ruby.sh 3.2.2
|
||||
|
||||
## Deno
|
||||
ADD build_deno.sh /usr/local/bin/build_deno.sh
|
||||
# 2021/11
|
||||
RUN build_deno.sh 1.16.2
|
||||
# 2022/04
|
||||
RUN build_deno.sh 1.21.0
|
||||
# 2023/08
|
||||
RUN build_deno.sh 1.36.1
|
||||
RUN build_deno.sh 1.38.2
|
||||
|
||||
#############
|
||||
|
||||
|
|
12
Makefile
12
Makefile
|
@ -1,21 +1,27 @@
|
|||
# TODO: Unnecessary, remo this file
|
||||
REPO=harbor.hq.rosti.cz/rosti/runtime
|
||||
DOCKER=docker
|
||||
VERSION=2022.05-1
|
||||
VERSION=2023.12-1
|
||||
BASEIMAGE=debian:12
|
||||
|
||||
all: build
|
||||
|
||||
build:
|
||||
$(DOCKER) pull debian:11
|
||||
$(DOCKER) pull ${BASEIMAGE}
|
||||
$(DOCKER) build -t ${REPO}:dev .
|
||||
$(DOCKER) tag ${REPO}:dev ${REPO}:$(VERSION)
|
||||
@echo "JSON for admin:"
|
||||
python generate_versions.py
|
||||
|
||||
test:
|
||||
DOCKER=$(DOCKER) bash ./tests2.sh ${REPO}:$(VERSION)
|
||||
|
||||
squashed:
|
||||
$(DOCKER) pull debian:11
|
||||
$(DOCKER) pull ${BASEIMAGE}
|
||||
$(DOCKER) build --squash -t ${REPO}:dev-squashed .
|
||||
$(DOCKER) tag ${REPO}:dev-squashed ${REPO}:$(VERSION)
|
||||
@echo "JSON for admin:"
|
||||
python generate_versions.py
|
||||
|
||||
push: squashed
|
||||
$(DOCKER) push ${REPO}:$(VERSION)
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
# https://taskfile.dev
|
||||
|
||||
version: '3'
|
||||
|
||||
vars:
|
||||
REPO: harbor.hq.rosti.cz/rosti/runtime
|
||||
VERSION: 2023.12-1
|
||||
BASEIMAGE: debian:bookworm
|
||||
|
||||
tasks:
|
||||
default:
|
||||
deps:
|
||||
- build
|
||||
|
||||
build:
|
||||
cmds:
|
||||
- docker pull {{ .BASEIMAGE }}
|
||||
- docker build -t {{ .REPO }}:dev .
|
||||
- docker tag {{ .REPO }}:dev {{ .REPO }}:{{ .VERSION }}
|
||||
- echo "JSON for admin:"
|
||||
- python3 generate_versions.py
|
||||
|
||||
test:
|
||||
cmds:
|
||||
- bash ./tests2.sh {{ .REPO }}:{{ .VERSION }}
|
||||
|
||||
squashed:
|
||||
cmds:
|
||||
- docker pull {{ .BASEIMAGE }}
|
||||
- docker build --squash -t {{ .REPO }}:dev-squashed .
|
||||
- docker tag {{ .REPO }}:dev-squashed {{ .REPO }}:{{ .VERSION }}
|
||||
- echo "JSON for admin:"
|
||||
- python3 generate_versions.py
|
||||
|
||||
push:
|
||||
cmds:
|
||||
- docker push {{ .REPO }}:{{ .VERSION }}
|
||||
deps:
|
||||
- squashed
|
|
@ -12,7 +12,7 @@ wget https://www.php.net/distributions/php-$VERSION.tar.bz2
|
|||
tar xf php-$VERSION.tar.bz2
|
||||
rm php-$VERSION.tar.bz2
|
||||
|
||||
# test -e /usr/lib/x86_64-linux-gnu/libc-client.a || ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
|
||||
test -e /usr/lib/x86_64-linux-gnu/libc-client.a || ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
|
||||
|
||||
cd php-$VERSION
|
||||
./configure --enable-fpm --with-mysqli --prefix=/opt/techs/php-$VERSION \
|
||||
|
@ -69,12 +69,14 @@ curl -s https://getcomposer.org/installer | ./php -d allow_url_fopen=On
|
|||
cd -
|
||||
|
||||
echo "no" | /opt/techs/php-$VERSION/bin/pecl install redis
|
||||
echo "no" | /opt/techs/php-$VERSION/bin/pecl install mongodb
|
||||
|
||||
echo "zend_extension=opcache.so" > /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
|
||||
echo "extension=redis.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
|
||||
echo "extension=mongodb.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
|
||||
# Not supported yet
|
||||
# https://github.com/Imagick/imagick/issues/358
|
||||
# echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick
|
||||
# echo "extension=imagick.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
|
||||
echo "no" | /opt/techs/php-$VERSION/bin/pecl install imagick
|
||||
echo "extension=imagick.so" >> /opt/techs/php-$VERSION/etc/conf.d/extensions.ini
|
||||
|
||||
ln -s /srv/conf/php-fpm/php.ini /opt/techs/php-$VERSION/etc/conf.d/99-app.ini
|
||||
|
|
|
@ -18,3 +18,6 @@ cd ruby-$VERSION
|
|||
./configure --prefix=/opt/techs/ruby-$VERSION
|
||||
make -j
|
||||
make install
|
||||
|
||||
/opt/techs/ruby-${VERSION}/bin/gem update --system
|
||||
/opt/techs/ruby-${VERSION}/bin/gem install passenger
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
[program:app]
|
||||
command=/srv/bin/primary_tech/ruby app.rb
|
||||
command=passenger start --port 8000 --log-file /dev/stdout --pid-file /srv/run/passenger.pid
|
||||
environment=PATH="/srv/bin/primary_tech:/usr/local/bin:/usr/bin:/bin:/srv/.npm-packages/bin"
|
||||
stopasgroup=true
|
||||
directory=/srv/app
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
output = {
|
||||
"techs": {},
|
||||
"system": {
|
||||
"distro": "debian",
|
||||
"version": "11.6",
|
||||
}
|
||||
}
|
||||
|
||||
image = ""
|
||||
with open("Dockerfile") as f:
|
||||
lines = f.readlines()
|
||||
for line in lines:
|
||||
if line.startswith("FROM debian:"):
|
||||
image = line.split(" ")[1].strip()
|
||||
continue
|
||||
if line.startswith("RUN build_"):
|
||||
parts = line.split(" ")
|
||||
name = parts[1].replace("build_", "").replace(".sh", "")
|
||||
if name.startswith("php"):
|
||||
name = "php"
|
||||
version = line.split(" ")[2].strip()
|
||||
if name not in output["techs"]:
|
||||
output["techs"][name] = {
|
||||
"versions": [],
|
||||
}
|
||||
output["techs"][name]["versions"].append(version)
|
||||
|
||||
# os.system(f"docker pull {image}")
|
||||
system_version = subprocess.check_output(f"podman run --rm {image} cat /etc/debian_version", shell=True)
|
||||
output["system"]["version"] = system_version.strip().decode()
|
||||
|
||||
print(json.dumps(output, indent=4))
|
|
@ -2,6 +2,13 @@
|
|||
|
||||
. ~/.bashrc
|
||||
|
||||
# DEFAULT VERSIONS
|
||||
VERSION_PYTHON="3.12.0"
|
||||
VERSION_PHP="8.2.12"
|
||||
VERSION_NODE="20.9.0"
|
||||
VERSION_RUBY="3.2.2"
|
||||
VERSION_DENO="1.38.2"
|
||||
|
||||
WIDTH=180
|
||||
HEIGHT=25
|
||||
|
||||
|
@ -41,7 +48,9 @@ function setTech() {
|
|||
echo "NOTE: /srv/app doesn't exists, creating it from $tech example application"
|
||||
mkdir -p /srv/app
|
||||
cp -a /opt/examples/$name/* /srv/app/
|
||||
test $name -eq "default" || mv /srv/app/supervisor.conf /srv/conf/supervisor.d/$name.conf
|
||||
if [ -e /srv/app/supervisor.conf ]; then
|
||||
mv /srv/app/supervisor.conf /srv/conf/supervisor.d/$name.conf
|
||||
fi
|
||||
else
|
||||
echo "IMPORTANT: /srv/app found so no configuration or files are copied, make sure the application is ok after this process"
|
||||
fi
|
||||
|
@ -76,7 +85,7 @@ function setTech() {
|
|||
|
||||
# And remove unneeded ones
|
||||
# TODO: not sure how good idea this is
|
||||
rm -f /srv/app/php-fpm.conf /srv/app/pool_app.conf /srv/app/php.ini /srv/app/nginx.conf
|
||||
rm -f /srv/app/php-fpm.conf /srv/app/pool_app.conf /srv/app/php.ini
|
||||
fi
|
||||
|
||||
# Node specific stuff
|
||||
|
@ -89,15 +98,24 @@ function setTech() {
|
|||
test -e /srv/conf/nginx.d/default.conf && rm -f /srv/conf/nginx.d/default.conf
|
||||
|
||||
# Same thing we do for nginx but if the file exist it's not rewritten.
|
||||
if [ ! -e /srv/conf/nginx.d/app.conf ]; then
|
||||
# Except if the file is in /srv/app, then it's moved to /srv/conf/nginx.d
|
||||
if [ ! -e /srv/conf/nginx.d/app.conf -o -e /srv/app/nginx.conf ]; then
|
||||
mkdir -p /srv/conf/nginx.d
|
||||
if [ "$name" = "php" ]; then
|
||||
cp /opt/examples/php/nginx.conf /srv/conf/nginx.d/app.conf
|
||||
if [ -e /srv/app/nginx.conf ]; then
|
||||
mv /srv/app/nginx.conf /srv/conf/nginx.d/app.conf
|
||||
else
|
||||
cp /opt/examples/nginx/nginx.conf /srv/conf/nginx.d/app.conf
|
||||
fi
|
||||
|
||||
echo ".. app configuration for nginx not found, adding it - please check /srv/conf/nginx.d/app.conf and make sure it fits your code"
|
||||
|
||||
fi
|
||||
|
||||
if [ "$name" = "ruby" ]; then
|
||||
mkdir -p /srv/app/public
|
||||
rm /srv/conf/nginx.d/app.conf
|
||||
mv /srv/app/index.html /srv/app/public/index.html
|
||||
rm -rf /srv/conf/nginx.d
|
||||
rm -f /srv/conf/supervisor.d/nginx.conf
|
||||
fi
|
||||
|
||||
# We load new configuration into supervisor and it's automatically started or restarted if needed
|
||||
|
@ -164,31 +182,31 @@ function quickTech() {
|
|||
case $TECH in
|
||||
"python")
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=3.10.4
|
||||
VERSION=$VERSION_PYTHON
|
||||
fi
|
||||
setTech $TECH-$VERSION
|
||||
;;
|
||||
"php")
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=8.1.5
|
||||
VERSION=$VERSION_PHP
|
||||
fi
|
||||
setTech $TECH-$VERSION
|
||||
;;
|
||||
"node")
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=16.14.2
|
||||
VERSION=$VERSION_NODE
|
||||
fi
|
||||
setTech $TECH-$VERSION
|
||||
;;
|
||||
"ruby")
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=3.0.2
|
||||
VERSION=$VERSION_RUBY
|
||||
fi
|
||||
setTech $TECH-$VERSION
|
||||
;;
|
||||
"deno")
|
||||
if [ -z "$VERSION" ]; then
|
||||
VERSION=1.21.0
|
||||
VERSION=$VERSION_DENO
|
||||
fi
|
||||
setTech $TECH-$VERSION
|
||||
;;
|
||||
|
@ -201,6 +219,9 @@ function quickTech() {
|
|||
"default")
|
||||
setTech $TECH
|
||||
;;
|
||||
"static")
|
||||
setTech default
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
@ -227,6 +248,10 @@ while /bin/true; do
|
|||
menuitem=$MENUITEM
|
||||
fi
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
case $menuitem in
|
||||
# Activation of one of the available tech
|
||||
# Only one tech can be enabled same time but it's possible to use any of them from /opt/techs
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
mkdir -p /srv/var/redis
|
||||
mkdir -p /srv/run
|
||||
cp /opt/conf/redis.conf /srv/conf/
|
||||
cp /opt/examples/redis/redis.conf /srv/conf/
|
||||
|
||||
cat << EOF > /srv/conf/supervisor.d/redis.conf
|
||||
[program:redis]
|
||||
|
|
6
start.sh
6
start.sh
|
@ -125,6 +125,12 @@ if [ -e /srv/app/init.sh ]; then
|
|||
su app -c /srv/app/init.sh
|
||||
fi
|
||||
|
||||
if [ -e /srv/init.sh ]; then
|
||||
echo "Starting /srv/init.sh .."
|
||||
chmod 755 /srv/init.sh
|
||||
su app -c /srv/init.sh
|
||||
fi
|
||||
|
||||
# Custom /etc/ssl/openssl.cnf
|
||||
if [ -e /srv/conf/openssl.cnf ]; then
|
||||
rm /etc/ssl/openssl.cnf
|
||||
|
|
176
tests.sh
176
tests.sh
|
@ -1,176 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ -z "$DOCKER" ]; then
|
||||
DOCKER=docker
|
||||
fi
|
||||
|
||||
CONTAINER_NAME=runtime-test
|
||||
I=1
|
||||
COUNT=9
|
||||
PROBLEM=0
|
||||
|
||||
function run() {
|
||||
$DOCKER run -d --rm --name $CONTAINER_NAME rosti/runtime:dev > /dev/null
|
||||
sleep 5
|
||||
}
|
||||
function stop() {
|
||||
$DOCKER stop $CONTAINER_NAME > /dev/null
|
||||
sleep 5
|
||||
}
|
||||
|
||||
# Default page
|
||||
run
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep "<title>Roští.cz</title>" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT default response correct"
|
||||
else
|
||||
echo "$I/$COUNT default response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
###############
|
||||
|
||||
# Node.js 12.16.1
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=node-12.16.1 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 3
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep package.json > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Node.js 12.16.1 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Node.js 12.16.1 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
|
||||
# Node.js 12.18.3
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=node-12.18.3 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 3
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep package.json > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Node.js 12.18.3 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Node.js 12.18.3 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
###############
|
||||
|
||||
# Node.js 13.7.0
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=node-13.7.0 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 3
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep package.json > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Node.js 13.7.0 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Node.js 13.7.0 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
|
||||
# Node.js 14.8.0
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=node-14.8.0 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 3
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep package.json > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Node.js 14.8.0 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Node.js 14.8.0 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
###############
|
||||
|
||||
# Python 3.8.2
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=python-3.8.2 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 5
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep "app.py" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Python 3.8.2 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Python 3.8.2 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
|
||||
# Python 3.8.5
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=python-3.8.5 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 5
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep "app.py" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT Python 3.8.5 response correct"
|
||||
else
|
||||
echo "$I/$COUNT Python 3.8.5 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
###############
|
||||
|
||||
# PHP 7.4.4
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=php-7.4.4 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 5
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep "PHP aplikaci" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT PHP 7.4.4 response correct"
|
||||
else
|
||||
echo "$I/$COUNT PHP 7.4.4 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
|
||||
# PHP 7.4.9
|
||||
run
|
||||
|
||||
$DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=php-7.4.9 $CONTAINER_NAME su app -c rosti > /dev/null
|
||||
sleep 5
|
||||
$DOCKER exec $CONTAINER_NAME curl http://localhost:8000 | grep "PHP aplikaci" > /dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "$I/$COUNT PHP 7.4.9 response correct"
|
||||
else
|
||||
echo "$I/$COUNT PHP 7.4.9 response incorrect"
|
||||
PROBLEM=1
|
||||
fi
|
||||
|
||||
I=$((I+1))
|
||||
stop
|
||||
|
||||
###############
|
||||
|
||||
if [ "$PROBLEM" = "0" ]; then
|
||||
echo
|
||||
echo "All OK"
|
||||
exit 0
|
||||
else
|
||||
echo
|
||||
echo "Problem found"
|
||||
exit 1
|
||||
fi
|
Loading…
Reference in New Issue