Skip to content

Commit 3254bcb

Browse files
authored
feat: Docker image override with env, update tests, constraint v1.24.3 (#24)
1 parent 36acf13 commit 3254bcb

5 files changed

Lines changed: 148 additions & 98 deletions

File tree

.github/workflows/tests.yml

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
branches: [ main ]
66

77
schedule:
8-
- cron: '25 09 * * *'
8+
- cron: '01 07 * * *'
99

1010
workflow_dispatch:
1111
inputs:
@@ -15,35 +15,28 @@ on:
1515
required: false
1616
default: false
1717

18-
defaults:
19-
run:
20-
shell: bash
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: true
2121

22-
# This is required for "gautamkrishnar/keepalive-workflow"
22+
# This is required for "gautamkrishnar/keepalive-workflow", see "ddev/github-action-add-on-test"
2323
permissions:
2424
actions: write
2525

26-
env:
27-
# Allow ddev get to use a GitHub token to prevent rate limiting by tests
28-
DDEV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
29-
3026
jobs:
3127
tests:
32-
defaults:
33-
run:
34-
shell: bash
35-
3628
strategy:
3729
matrix:
3830
ddev_version: [stable, HEAD]
3931
fail-fast: false
4032

41-
runs-on: ubuntu-22.04
33+
runs-on: ubuntu-latest
4234

4335
steps:
44-
- uses: ddev/github-action-add-on-test@v2
45-
with:
46-
ddev_version: "stable"
47-
token: ${{ secrets.GITHUB_TOKEN }}
48-
addon_repository: ${{ env.GITHUB_REPOSITORY }}
49-
addon_ref: ${{ env.GITHUB_REF }}
36+
- uses: ddev/github-action-add-on-test@v2
37+
with:
38+
ddev_version: ${{ matrix.ddev_version }}
39+
token: ${{ secrets.GITHUB_TOKEN }}
40+
debug_enabled: ${{ github.event.inputs.debug_enabled }}
41+
addon_repository: ${{ env.GITHUB_REPOSITORY }}
42+
addon_ref: ${{ env.GITHUB_REF }}

README.md

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,53 @@
1-
[![tests](https://github.com/ddev/ddev-phpmyadmin/actions/workflows/tests.yml/badge.svg)](https://github.com/ddev/ddev-phpmyadmin/actions/workflows/tests.yml) ![project is maintained](https://img.shields.io/maintenance/yes/2024.svg)
1+
[![add-on registry](https://img.shields.io/badge/DDEV-Add--on_Registry-blue)](https://addons.ddev.com)
2+
[![tests](https://github.com/ddev/ddev-phpmyadmin/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/ddev/ddev-phpmyadmin/actions/workflows/tests.yml?query=branch%3Amain)
3+
[![last commit](https://img.shields.io/github/last-commit/ddev/ddev-phpmyadmin)](https://github.com/ddev/ddev-phpmyadmin/commits)
4+
[![release](https://img.shields.io/github/v/release/ddev/ddev-phpmyadmin)](https://github.com/ddev/ddev-phpmyadmin/releases/latest)
25

3-
# ddev-phpmyadmin <!-- omit in toc -->
6+
# DDEV phpMyAdmin
47

5-
* [What is ddev-phpmyadmin?](#what-is-ddev-phpmyadmin)
8+
## Overview
69

7-
## What is ddev-phpmyadmin?
10+
[phpMyAdmin](https://www.phpmyadmin.net/) is a free and open source administration tool for MySQL and MariaDB.
811

9-
This add-on provides a phpMyAdmin service for [DDEV](https://github.com/ddev/ddev/).
12+
This add-on integrates phpMyAdmin into your [DDEV](https://ddev.com/) project.
1013

11-
In DDEV v1.22+ phpMyAdmin is not provided by default, but it can be added with this add-on.
14+
## Installation
1215

13-
For DDEV v1.23.5 or above run
14-
15-
```sh
16+
```bash
1617
ddev add-on get ddev/ddev-phpmyadmin
18+
ddev restart
1719
```
1820

19-
For earlier versions of DDEV run
21+
After installation, make sure to commit the `.ddev` directory to version control.
2022

21-
```sh
22-
ddev get ddev/ddev-phpmyadmin
23-
```
23+
## Usage
24+
25+
| Command | Description |
26+
| ------- | ----------- |
27+
| `ddev phpmyadmin` | Open phpMyAdmin in your browser (`https://<project>.ddev.site:8037`) |
28+
| `ddev describe` | View service status and used ports for phpMyAdmin |
29+
| `ddev logs -s phpmyadmin` | Check phpMyAdmin logs |
30+
31+
## Advanced Customization
2432

25-
Then restart your project
33+
To change the Docker image:
2634

2735
```sh
36+
ddev dotenv set .ddev/.env.phpmyadmin --phpmyadmin-docker-image=phpmyadmin:5
37+
ddev add-on get ddev/ddev-phpmyadmin
2838
ddev restart
2939
```
3040

31-
You can run phpMyAdmin easily with the command after installing this add-on:
41+
Make sure to commit the `.ddev/.env.phpmyadmin` file to version control.
3242

33-
```sh
34-
ddev phpmyadmin
35-
```
43+
All customization options (use with caution):
44+
45+
| Variable | Flag | Default |
46+
| -------- | ---- | ------- |
47+
| `PHPMYADMIN_DOCKER_IMAGE` | `--phpmyadmin-docker-image` | `phpmyadmin:5` |
48+
49+
## Credits
50+
51+
**Contributed by [@rfay](https://github.com/rfay)**
3652

37-
**Contributed and maintained by [@rfay](https://github.com/rfay)**
53+
**Maintained by the [DDEV team](https://ddev.com/support-ddev/)**

docker-compose.phpmyadmin.yaml

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,26 @@
22
services:
33
phpmyadmin:
44
container_name: ddev-${DDEV_SITENAME}-phpmyadmin
5-
image: phpmyadmin:5.2.0
5+
image: ${PHPMYADMIN_DOCKER_IMAGE:-phpmyadmin:5}
66
working_dir: "/root"
77
restart: "no"
88
labels:
99
com.ddev.site-name: ${DDEV_SITENAME}
10-
com.ddev.approot: $DDEV_APPROOT
10+
com.ddev.approot: ${DDEV_APPROOT}
1111
volumes:
12-
- ".:/mnt/ddev_config"
13-
- "ddev-global-cache:/mnt/ddev-global-cache"
12+
- ".:/mnt/ddev_config"
13+
- "ddev-global-cache:/mnt/ddev-global-cache"
1414
expose:
1515
- "80"
1616
environment:
17-
- PMA_USER=root
18-
- PMA_PASSWORD=root
19-
- PMA_HOST=db
20-
- PMA_PORT=3306
21-
- VIRTUAL_HOST=$DDEV_HOSTNAME
22-
- UPLOAD_LIMIT=4000M
23-
- HTTP_EXPOSE=8036:80
24-
- HTTPS_EXPOSE=8037:80
17+
- PMA_USER=root
18+
- PMA_PASSWORD=root
19+
- PMA_HOST=db
20+
- PMA_PORT=3306
21+
- VIRTUAL_HOST=$DDEV_HOSTNAME
22+
- UPLOAD_LIMIT=4000M
23+
- HTTP_EXPOSE=8036:80
24+
- HTTPS_EXPOSE=8037:80
2525
healthcheck:
2626
interval: 120s
2727
timeout: 2s

install.yaml

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
#ddev-generated
2-
31
name: phpmyadmin
42

53
project_files:
6-
- docker-compose.phpmyadmin.yaml
7-
- docker-compose.phpmyadmin_norouter.yaml
8-
- commands/host/phpmyadmin
4+
- docker-compose.phpmyadmin.yaml
5+
- docker-compose.phpmyadmin_norouter.yaml
6+
- commands/host/phpmyadmin
97

108
pre_install_actions:
11-
# Ensure we're on DDEV 1.23+. It's need for the `phpmyadmin` command (launch by port).
129
- |
13-
#ddev-nodisplay
14-
#ddev-description:Checking DDEV version
15-
(ddev debug capabilities | grep corepack >/dev/null) || (echo "Please upgrade DDEV to v1.23+ to use this add-on." && false)
10+
#ddev-description:Check for db service
11+
if ddev debug configyaml 2>/dev/null | grep omit_containers | grep -q db; then
12+
echo "Unable to install the add-on because no db service was found"
13+
exit 1
14+
fi
15+
16+
ddev_version_constraint: '>= v1.24.3'
1617

1718
post_install_actions:
1819
- |
1920
#ddev-description:If router disabled, directly expose port
20-
#
2121
if ( {{ contains "ddev-router" (list .DdevGlobalConfig.omit_containers | toString) }} ); then
2222
printf "#ddev-generated\nservices:\n phpmyadmin:\n ports:\n - 8036:80\n" > docker-compose.phpmyadmin_norouter.yaml
2323
fi
2424
- |
2525
echo "You can now use 'ddev phpmyadmin' to launch PhpMyAdmin"
26-

tests/test.bats

Lines changed: 78 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,55 @@
1+
#!/usr/bin/env bats
2+
3+
# Bats is a testing framework for Bash
4+
# Documentation https://bats-core.readthedocs.io/en/stable/
5+
# Bats libraries documentation https://github.com/ztombol/bats-docs
6+
7+
# For local tests, install bats-core, bats-assert, bats-file, bats-support
8+
# And run this in the add-on root directory:
9+
# bats ./tests/test.bats
10+
# To exclude release tests:
11+
# bats ./tests/test.bats --filter-tags '!release'
12+
# For debugging:
13+
# bats ./tests/test.bats --show-output-of-passing-tests --verbose-run --print-output-on-failure
14+
115
setup() {
216
set -eu -o pipefail
3-
brew_prefix=$(brew --prefix)
4-
load "${brew_prefix}/lib/bats-support/load.bash"
5-
load "${brew_prefix}/lib/bats-assert/load.bash"
6-
7-
export DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )/.."
8-
export TESTDIR=~/tmp/test-phpmyadmin
9-
mkdir -p $TESTDIR
10-
export PROJNAME=test-phpmyadmin
11-
export DDEV_NON_INTERACTIVE=true
12-
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1 || true
17+
18+
# Override this variable for your add-on:
19+
export GITHUB_REPO=ddev/ddev-phpmyadmin
20+
21+
TEST_BREW_PREFIX="$(brew --prefix 2>/dev/null || true)"
22+
export BATS_LIB_PATH="${BATS_LIB_PATH}:${TEST_BREW_PREFIX}/lib:/usr/lib/bats"
23+
bats_load_library bats-assert
24+
bats_load_library bats-file
25+
bats_load_library bats-support
26+
27+
export DIR="$(cd "$(dirname "${BATS_TEST_FILENAME}")/.." >/dev/null 2>&1 && pwd)"
28+
export PROJNAME="test-$(basename "${GITHUB_REPO}")"
29+
mkdir -p ~/tmp
30+
export TESTDIR=$(mktemp -d ~/tmp/${PROJNAME}.XXXXXX)
31+
export DDEV_NONINTERACTIVE=true
32+
export DDEV_NO_INSTRUMENTATION=true
33+
ddev delete -Oy "${PROJNAME}" >/dev/null 2>&1 || true
1334
cd "${TESTDIR}"
14-
ddev config --project-name=${PROJNAME}
15-
ddev config --omit-containers=dba >/dev/null 2>&1 || true
16-
ddev start -y >/dev/null 2>&1
35+
run ddev config --project-name="${PROJNAME}" --project-tld=ddev.site
36+
assert_success
37+
run ddev start -y
38+
assert_success
1739
}
1840

1941
health_checks() {
20-
set +u # bats-assert has unset variables so turn off unset check
21-
# ddev restart is required because we have done `ddev get` on a new service
22-
run ddev restart
23-
assert_success
2442
# Make sure we can hit the 8037 port successfully
25-
curl -s -I -f https://${PROJNAME}.ddev.site:8037 >/tmp/curlout.txt
43+
run curl -sfI https://${PROJNAME}.ddev.site:8037
44+
assert_success
45+
assert_output --partial "HTTP/2 200"
46+
assert_output --partial "server: Apache"
47+
assert_output --partial "x-powered-by: PHP"
48+
49+
run curl -sf https://${PROJNAME}.ddev.site:8037
50+
assert_success
51+
assert_output --partial "phpMyAdmin"
52+
2653
# Make sure `ddev phpmyadmin` works
2754
DDEV_DEBUG=true run ddev phpmyadmin
2855
assert_success
@@ -31,38 +58,53 @@ health_checks() {
3158

3259
teardown() {
3360
set -eu -o pipefail
34-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
3561
ddev delete -Oy ${PROJNAME} >/dev/null 2>&1
3662
[ "${TESTDIR}" != "" ] && rm -rf ${TESTDIR}
3763
}
3864

3965
@test "install from directory" {
4066
set -eu -o pipefail
41-
cd ${TESTDIR}
42-
echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
43-
ddev get ${DIR} >/dev/null 2>&1
44-
ddev mutagen sync >/dev/null 2>&1
67+
68+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
69+
run ddev add-on get "${DIR}"
70+
assert_success
71+
72+
run ddev restart -y
73+
assert_success
74+
4575
health_checks
4676
}
4777

48-
78+
# bats test_tags=release
4979
@test "install from release" {
5080
set -eu -o pipefail
51-
cd ${TESTDIR} || ( printf "unable to cd to ${TESTDIR}\n" && exit 1 )
52-
echo "# ddev get ddev/ddev-phpmyadmin with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
53-
ddev get ddev/ddev-phpmyadmin >/dev/null 2>&1
54-
ddev restart >/dev/null 2>&1
81+
82+
echo "# ddev add-on get ${GITHUB_REPO} with project ${PROJNAME} in $(pwd)" >&3
83+
run ddev add-on get "${GITHUB_REPO}"
84+
assert_success
85+
86+
run ddev restart -y
87+
assert_success
88+
5589
health_checks
5690
}
5791

58-
@test "install from directory with nonstandard port" {
92+
@test "install from directory with nonstandard port and .env.phpmyadmin" {
5993
set -eu -o pipefail
60-
cd ${TESTDIR}
61-
ddev config --router-http-port=8080 --router-https-port=8443
62-
echo "# ddev get ${DIR} with project ${PROJNAME} in ${TESTDIR} ($(pwd))" >&3
63-
ddev get ${DIR} >/dev/null 2>&1
64-
ddev mutagen sync >/dev/null 2>&1
65-
health_checks
66-
}
6794

95+
run ddev config --router-http-port=8080 --router-https-port=8443
96+
assert_success
6897

98+
run ddev dotenv set .ddev/.env.phpmyadmin --phpmyadmin-docker-image=phpmyadmin:5.2.2
99+
assert_success
100+
assert_file_exist .ddev/.env.phpmyadmin
101+
102+
echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3
103+
run ddev add-on get "${DIR}"
104+
assert_success
105+
106+
run ddev restart -y
107+
assert_success
108+
109+
health_checks
110+
}

0 commit comments

Comments
 (0)