Skip to content

Commit

Permalink
test: Add compose-based dev&test environment
Browse files Browse the repository at this point in the history
Add a compose-based environment to build, run, and test the composectl
utility.
The environment includes the foundries specific docker registry
and daemon (vanilla version + required patches).

Signed-off-by: Mike Sul <[email protected]>
  • Loading branch information
mike-sul committed Sep 18, 2024
1 parent a738d03 commit d6df74b
Show file tree
Hide file tree
Showing 10 changed files with 200 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
.idea
bin/
.cache
9 changes: 9 additions & 0 deletions dev-shell.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
down() {
docker compose --env-file=test/compose/.env.test -f test/compose/docker-compose.yml down --remove-orphans
# remove the docker runtime and compose app store volumes
docker volume rm compose_docker-runtime compose_reset-apps
}

trap down EXIT

docker compose --env-file=test/compose/.env.test -f test/compose/docker-compose.yml run composectl $@
10 changes: 10 additions & 0 deletions test/compose/.env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
SRC_DIR=$PWD
BIN_DIR=$SRC_DIR/bin
TEST_DIR=$SRC_DIR/test
CPS_DIR=$TEST_DIR/compose
INIT_SCRIPT=$CPS_DIR/init.sh

REG_DIR=$CPS_DIR/registry
REG_CERT_DIR=$REG_DIR/certs
# This must be relative to SRC_DIR path
REG_CERT=test/compose/registry/certs/registry.crt
13 changes: 13 additions & 0 deletions test/compose/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
FROM golang:1.22-alpine

ARG REG_CERT=test/compose/registry/certs/registry.crt
ARG SRC_DIR=$PWD

RUN apk add make curl docker docker-compose git

COPY $REG_CERT /etc/ssl/certs/registry.crt
RUN cat /etc/ssl/certs/registry.crt >> /etc/ssl/certs/ca-certificates.crt
WORKDIR /build
COPY go.mod go.sum ./
RUN go mod download
RUN git config --global --add safe.directory $SRC_DIR
42 changes: 42 additions & 0 deletions test/compose/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
services:
registry:
image: ghcr.io/foundriesio/docker-distribution:2.8.3-fio
volumes:
- ${REG_CERT_DIR}:/certs
- ${REG_DIR}/config.yml:/etc/docker/registry/config.yml

dockerd:
image: ghcr.io/foundriesio/moby:25.0.3_fio
command: ["dockerd", "-D", "-H", "unix:///var/run/docker/docker.sock"]
privileged: true
volumes:
- docker-runtime:/var/run/docker
- ${REG_DIR}/daemon.json:/etc/docker/daemon.json:ro
- reset-apps:/var/sota/reset-apps

composectl:
build:
context: ${SRC_DIR}
dockerfile: ${CPS_DIR}/Dockerfile
args:
REG_CERT: ${REG_CERT}
SRC_DIR: ${SRC_DIR}
volumes:
- ${SRC_DIR}:${SRC_DIR}
- ${BIN_DIR}:${SRC_DIR}/bin
- docker-runtime:/var/run/docker
- reset-apps:/var/sota/reset-apps
working_dir: ${SRC_DIR}
depends_on:
- registry
- dockerd
environment:
- GOCACHE=${SRC_DIR}/.cache
- DOCKER_HOST=unix:///var/run/docker/docker.sock
- COMPOSECTL_EXE=${BIN_DIR}/composectl
- SRC_DIR=${SRC_DIR}
- STOREROOT=/var/sota/reset-apps

volumes:
docker-runtime:
reset-apps:
25 changes: 25 additions & 0 deletions test/compose/registry/certs/openssl.cnf
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no

[ req_distinguished_name ]
C = US
ST = State
L = City
O = Organization
CN = registry

[ req_ext ]
subjectAltName = @alt_names

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = registry
DNS.2 = localhost
IP.1 = 127.0.0.1

31 changes: 31 additions & 0 deletions test/compose/registry/certs/registry.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFYjCCA0qgAwIBAgIUM75BXTHDQOio38zfJu9yYDSYY1EwDQYJKoZIhvcNAQEL
BQAwVjELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
MRUwEwYDVQQKDAxPcmdhbml6YXRpb24xETAPBgNVBAMMCHJlZ2lzdHJ5MB4XDTI0
MDkwOTEyMjU0NFoXDTI1MDkwOTEyMjU0NFowVjELMAkGA1UEBhMCVVMxDjAMBgNV
BAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5MRUwEwYDVQQKDAxPcmdhbml6YXRpb24x
ETAPBgNVBAMMCHJlZ2lzdHJ5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEAw4K/VHwGJRIbOWuq7S7377DD4zUbbSNqV7s3Lsf1I33V952SRl4cBIqEHbFj
8kVzV0A90dXTbGlyqbU8cEf+7CNwoSyigCR3SvkqQErHF2szCMT7wG54dh6Lt/Ha
UpLNEn6duw5Kg492gsSBNnTZ464GB6RUAiubmEnnEc3uzTRHQpaR4+cDn8tP1/81
vveCI8aax/wvbZyBlJ+bXp6mvgVXxktQBb4PWcKFx1NcusHoWHVf7mbEXItiv5iD
6Nuy5I6eLKedlCQtGkyEjvuW5Js4Q4Gg1+rWhSZIXFl9kfl3IxxG4P1pFkvIkeVJ
unjf4ZOsGMdAXrHS8N8t3tmCZmKqpzBzYbEs1dL4GMDU1Q2P6xgV8jVswNFtVkfS
vGbEQixnK33jpdndr35K45sBqmuDHSI4FIBzile/i3efA/x0VAouaTbd8sTqgr1T
vaxZ+/xkfBh35orNWdr0e/bzYE6qPm2iz8y+3ovC0zwHX25O23oQ7LWXXovkbGjC
XyR0PcqUfodrCtfCgZH7Gbm2lAnGanlr9JCETcxQ7HHUiEZ0Gzj6xcHppM3ZSyBO
ETd//idOu6AQEJ1B9Ahn/rFC7b4xfBxhIWlYyc7tf9dEdC2DWPgz7sUl2R31+3sw
zbqIpUkRl8Ewj/MlL8GFP2NXhFmQmV11G/Xs1fOuRZWjeVcCAwEAAaMoMCYwJAYD
VR0RBB0wG4IIcmVnaXN0cnmCCWxvY2FsaG9zdIcEfwAAATANBgkqhkiG9w0BAQsF
AAOCAgEAaTsiNJW8DXu+6EM4bXwd/Z6ry9Vf1eVntB+K1cO/Rf7/gMZn9bnDbjUT
oiONzDY4P58s/tU7Im0853d0omsT7Iwos7M5Hiqvv+/bZRCFUD1yUbQiwJW8+qOo
5t5OXrgluJOVyjmik9KTPPB4rM5wNbxWiWZdrCgC0MIMcRZ3Z+JGSCo9+Hj9Ozju
VJyWo1sQd0BerXTAuK/53tLr0t9Tv7Ji69GfGea4TTLuzkCkJ6saHRIU1i9ZHKlu
Bk8lLnnUrPURAjGTQHTAe0vmM7fOuI3f6iBHqoT3/uH2Eq0LbR70Akn1Y75a8GaC
HeXih6Fh19FGD+VzGZod9leY7tEtmKduqyO4xSi3aMHDyjxRyVEE8U1e5KryfeKz
gFuyJdQfnxalENL4vh78V7K+uHXifKaGMvlwBWDHFM3fvLFCsIaiOY4xWir1vNMb
VrfV0k3wHt66Hhs2iDWzwix84aiOEM+k0PytLBNUchRG4dutS6JHgb/8cFjU+Td9
OS9Rd2vpF4Dk06YcFCw9J0IAjjruejsE1AzmQMDfEdO1J38UDYURiazNMhd01AIE
+m6QbC6xgtHmBVFUSfnWL8VGDzOr4Zkyb+ZRzb4AZYSJlO/fAiP9UO+hcEDEjoC2
ugjs6ZackH00Hs8Ps6xzYaJQNYS2bM4fYF0jbaf5YiO8U/Nnp8o=
-----END CERTIFICATE-----
52 changes: 52 additions & 0 deletions test/compose/registry/certs/registry.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
U7cB1TFXInU+FMJXq4Gh9cYnKBgh
-----END PRIVATE KEY-----
14 changes: 14 additions & 0 deletions test/compose/registry/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 0.1
log:
level: debug
fields:
service: registry
environment: development
storage:
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
tls:
certificate: /certs/registry.crt
key: /certs/registry.key
3 changes: 3 additions & 0 deletions test/compose/registry/daemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"insecure-registries": ["registry:5000"]
}

0 comments on commit d6df74b

Please sign in to comment.