Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
198 changes: 108 additions & 90 deletions .github/workflows/image.yml
Original file line number Diff line number Diff line change
@@ -1,101 +1,119 @@
name: Build Docker Image

on:
- push
- pull_request
- push
- pull_request

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
variant:
- "4"
- "4/fastcgi"
- "5"
- "5/fastcgi"
- "4"
- "4/fastcgi"
- "5"
- "5/fastcgi"
steps:
- uses: actions/checkout@v4
- name: Build the image.
id: build
run: |
printf "::group::Sending context\n"
IMAGE=adminer:${VARIANT/\//-}-$(date +%s)
docker build "$VARIANT" --tag "$IMAGE" |sed 's/^Step/::endgroup::\n::group::Step/'
printf "::endgroup::\n"
printf "image=%s\n" "$IMAGE" >> $GITHUB_OUTPUT
printf "version=%s\n" "$(awk '/^ENV\s+ADMINER_VERSION/{print $3}' "$VARIANT/Dockerfile")" >> $GITHUB_OUTPUT
env:
VARIANT: ${{ matrix.variant }}
- name: Smoketest
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
env:
container_name: adminer_smoke
- name: Verify a restart works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/
docker restart $container_name
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/
env:
container_name: adminer_restart
- name: Verify version.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep '<span class=.version.>${{ steps.build.outputs.version }}'
env:
container_name: adminer_version
- name: Verify that no warnings appear.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
! docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep '<b>Warning</b>:'
env:
container_name: adminer_warnings
- name: Verify that the design works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DESIGN=nette ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'adminer.css'
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/adminer.css \
|grep 'Nette'
env:
container_name: adminer_design
- name: Verify that the default server works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DEFAULT_SERVER=ADMINER_DEFAULT_SERVER_WORKS ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'ADMINER_DEFAULT_SERVER_WORKS'
env:
container_name: adminer_defaultserver
- name: Verify that loading plugins work.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_PLUGINS="tables-filter version-noverify" ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'verifyVersion ='
env:
container_name: adminer_plugins
- name: Show Containers and Images
run: |
printf "::group::docker ps -a\n"
docker ps -a
printf "::endgroup::\n"
printf "::group::docker images\n"
docker images
printf "::endgroup::\n"
- uses: actions/checkout@v4
- name: Build the image.
id: build
run: |
printf "::group::Sending context\n"
IMAGE=adminer:${VARIANT/\//-}-$(date +%s)
docker build "$VARIANT" --tag "$IMAGE" |sed 's/^Step/::endgroup::\n::group::Step/'
printf "::endgroup::\n"
printf "image=%s\n" "$IMAGE" >> $GITHUB_OUTPUT
printf "version=%s\n" "$(awk '/^ENV\s+ADMINER_VERSION/{print $3}' "$VARIANT/Dockerfile")" >> $GITHUB_OUTPUT
env:
VARIANT: ${{ matrix.variant }}
- name: Smoketest
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
env:
container_name: adminer_smoke
- name: Verify a restart works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/
docker restart $container_name
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/
env:
container_name: adminer_restart
- name: Verify version.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep '<span class=.version.>${{ steps.build.outputs.version }}'
env:
container_name: adminer_version
- name: Verify that no warnings appear.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d ${{ steps.build.outputs.image }}
! docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep '<b>Warning</b>:'
env:
container_name: adminer_warnings
- name: Verify that the design works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DESIGN=nette ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'adminer.css'
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/adminer.css \
|grep 'Nette'
env:
container_name: adminer_design
- name: Verify that the default dbname works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DEFAULT_SERVER=ADMINER_DEFAULT_SERVER_WORKS ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'ADMINER_DEFAULT_SERVER_WORKS'
env:
container_name: adminer_defaultserver
- name: Verify that the default driver works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DEFAULT_DRIVER=pgsql ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'pgsql'
env:
container_name: adminer_defaultdriver
- name: Verify that the default dbname works.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_DEFAULT_DBNAME=ADMINER_DEFAULT_DBNAME_WORKS ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'ADMINER_DEFAULT_DBNAME_WORKS'
env:
container_name: adminer_defaultdbname
- name: Verify that loading plugins work.
if: ${{ ! contains(steps.build.outputs.image, 'fastcgi') }}
run: |
docker run --name $container_name -d -e ADMINER_PLUGINS="tables-filter version-noverify" ${{ steps.build.outputs.image }}
docker run -i --rm --link $container_name:$container_name buildpack-deps:curl \
curl -fsSL http://$container_name:8080/ \
|grep 'verifyVersion ='
env:
container_name: adminer_plugins
- name: Show Containers and Images
run: |
printf "::group::docker ps -a\n"
docker ps -a
printf "::endgroup::\n"
printf "::group::docker images\n"
docker images
printf "::endgroup::\n"
79 changes: 50 additions & 29 deletions 4/fastcgi/index.php
Original file line number Diff line number Diff line change
@@ -1,43 +1,64 @@
<?php
namespace docker {
function adminer_object() {
require_once('plugins/plugin.php');
function adminer_object() {
require_once('plugins/plugin.php');

class Adminer extends \AdminerPlugin {
function _callParent($function, $args) {
if ($function === 'loginForm') {
ob_start();
$return = \Adminer::loginForm();
$form = ob_get_clean();
class Adminer extends \AdminerPlugin {
function _callParent($function, $args) {
if ($function === 'loginForm') {
ob_start();
$return = \Adminer::loginForm();
$form = ob_get_clean();

echo str_replace('name="auth[server]" value="" title="hostname[:port]"', 'name="auth[server]" value="'.($_ENV['ADMINER_DEFAULT_SERVER'] ?: 'db').'" title="hostname[:port]"', $form);
// Set default values via env vars.
$defaultDbDriver = getenv('ADMINER_DEFAULT_DRIVER') ?: 'server';
$defaultDbHost = getenv('ADMINER_DEFAULT_SERVER') ?: '';
$defaultDb = getenv('ADMINER_DEFAULT_DBNAME') ?: '';

return $return;
}
$defaultDbDriver = $defaultDbDriver == 'mysql' ? 'server' : $defaultDbDriver;

return parent::_callParent($function, $args);
}
}
echo str_replace(
[
'name="auth[server]" value="" title="hostname[:port]"',
'value="' . $defaultDbDriver . '"',
'selected="">MySQL',
'name="auth[db]" value=""'
],
[
'name="auth[server]" value="' . $defaultDbHost . '" title="hostname[:port]"',
'value="' . $defaultDbDriver . '" selected="selected"',
'>MySQL',
'name="auth[db]" value="' . $defaultDb . '"'
],
$form
);

$plugins = [];
foreach (glob('plugins-enabled/*.php') as $plugin) {
$plugins[] = require($plugin);
}
return $return;
}

return new Adminer($plugins);
}
return parent::_callParent($function, $args);
}
}

$plugins = [];
foreach (glob('plugins-enabled/*.php') as $plugin) {
$plugins[] = require($plugin);
}

return new Adminer($plugins);
}
}

namespace {
if (basename($_SERVER['DOCUMENT_URI'] ?? $_SERVER['REQUEST_URI']) === 'adminer.css' && is_readable('adminer.css')) {
header('Content-Type: text/css');
readfile('adminer.css');
exit;
}
if (basename($_SERVER['DOCUMENT_URI'] ?? $_SERVER['REQUEST_URI']) === 'adminer.css' && is_readable('adminer.css')) {
header('Content-Type: text/css');
readfile('adminer.css');
exit;
}

function adminer_object() {
return \docker\adminer_object();
}
function adminer_object() {
return \docker\adminer_object();
}

require('adminer.php');
require('adminer.php');
}
79 changes: 50 additions & 29 deletions 4/index.php
Original file line number Diff line number Diff line change
@@ -1,43 +1,64 @@
<?php
namespace docker {
function adminer_object() {
require_once('plugins/plugin.php');
function adminer_object() {
require_once('plugins/plugin.php');

class Adminer extends \AdminerPlugin {
function _callParent($function, $args) {
if ($function === 'loginForm') {
ob_start();
$return = \Adminer::loginForm();
$form = ob_get_clean();
class Adminer extends \AdminerPlugin {
function _callParent($function, $args) {
if ($function === 'loginForm') {
ob_start();
$return = \Adminer::loginForm();
$form = ob_get_clean();

echo str_replace('name="auth[server]" value="" title="hostname[:port]"', 'name="auth[server]" value="'.($_ENV['ADMINER_DEFAULT_SERVER'] ?: 'db').'" title="hostname[:port]"', $form);
// Set default values via env vars.
$defaultDbDriver = getenv('ADMINER_DEFAULT_DRIVER') ?: 'server';
$defaultDbHost = getenv('ADMINER_DEFAULT_SERVER') ?: '';
$defaultDb = getenv('ADMINER_DEFAULT_DBNAME') ?: '';

return $return;
}
$defaultDbDriver = $defaultDbDriver == 'mysql' ? 'server' : $defaultDbDriver;

return parent::_callParent($function, $args);
}
}
echo str_replace(
[
'name="auth[server]" value="" title="hostname[:port]"',
'value="' . $defaultDbDriver . '"',
'selected="">MySQL',
'name="auth[db]" value=""'
],
[
'name="auth[server]" value="' . $defaultDbHost . '" title="hostname[:port]"',
'value="' . $defaultDbDriver . '" selected="selected"',
'>MySQL',
'name="auth[db]" value="' . $defaultDb . '"'
],
$form
);

$plugins = [];
foreach (glob('plugins-enabled/*.php') as $plugin) {
$plugins[] = require($plugin);
}
return $return;
}

return new Adminer($plugins);
}
return parent::_callParent($function, $args);
}
}

$plugins = [];
foreach (glob('plugins-enabled/*.php') as $plugin) {
$plugins[] = require($plugin);
}

return new Adminer($plugins);
}
}

namespace {
if (basename($_SERVER['DOCUMENT_URI'] ?? $_SERVER['REQUEST_URI']) === 'adminer.css' && is_readable('adminer.css')) {
header('Content-Type: text/css');
readfile('adminer.css');
exit;
}
if (basename($_SERVER['DOCUMENT_URI'] ?? $_SERVER['REQUEST_URI']) === 'adminer.css' && is_readable('adminer.css')) {
header('Content-Type: text/css');
readfile('adminer.css');
exit;
}

function adminer_object() {
return \docker\adminer_object();
}
function adminer_object() {
return \docker\adminer_object();
}

require('adminer.php');
require('adminer.php');
}
Loading