mirror of
https://github.com/librenms/docker.git
synced 2026-01-23 10:15:22 +00:00
ci: test workflow (#284)
Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
b1c2fd7423
commit
2c4abe5f34
4 changed files with 270 additions and 0 deletions
81
.github/workflows/test.yml
vendored
Normal file
81
.github/workflows/test.yml
vendored
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
name: test
|
||||
|
||||
concurrency:
|
||||
group: test-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
|
||||
env:
|
||||
BUILD_TAG: librenms-test
|
||||
CONTAINER_NAME: librenms
|
||||
RUNNING_TIMEOUT: 120
|
||||
RUNNING_LOG_CHECK: ready to handle connections
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
-
|
||||
name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
-
|
||||
name: Build
|
||||
uses: docker/bake-action@v2
|
||||
with:
|
||||
targets: image-local
|
||||
env:
|
||||
DEFAULT_TAG: ${{ env.BUILD_TAG }}
|
||||
-
|
||||
name: Start
|
||||
run: |
|
||||
docker compose up -d
|
||||
working-directory: test
|
||||
env:
|
||||
LIBRENMS_IMAGE: ${{ env.BUILD_TAG }}
|
||||
LIBRENMS_CONTAINER: ${{ env.CONTAINER_NAME }}
|
||||
-
|
||||
name: Test run
|
||||
run: |
|
||||
TIMEOUT=$((SECONDS + ${{ env.RUNNING_TIMEOUT }}))
|
||||
while read LOGLINE; do
|
||||
echo ${LOGLINE}
|
||||
if [[ ${LOGLINE} == *"${{ env.RUNNING_LOG_CHECK }}"* ]]; then
|
||||
echo "🎉 Container up!"
|
||||
break
|
||||
fi
|
||||
if [[ $SECONDS -gt ${TIMEOUT} ]]; then
|
||||
>&2 echo "❌ Failed to run ${{ env.CONTAINER_NAME }} container"
|
||||
exit 1
|
||||
fi
|
||||
done < <(docker logs -f ${{ env.CONTAINER_NAME }} 2>&1)
|
||||
|
||||
CONTAINER_STATUS=$(docker container inspect --format "{{.State.Status}}" ${{ env.CONTAINER_NAME }})
|
||||
if [[ ${CONTAINER_STATUS} != "running" ]]; then
|
||||
>&2 echo "❌ Container ${{ env.CONTAINER_NAME }} returned status '$CONTAINER_STATUS'"
|
||||
exit 1
|
||||
fi
|
||||
-
|
||||
name: Logs
|
||||
if: always()
|
||||
run: |
|
||||
docker compose logs
|
||||
docker compose down --volumes > /dev/null 2>&1 || true
|
||||
working-directory: test
|
||||
env:
|
||||
LIBRENMS_IMAGE: ${{ env.BUILD_TAG }}
|
||||
LIBRENMS_CONTAINER: ${{ env.CONTAINER_NAME }}
|
||||
7
test/.env
Normal file
7
test/.env
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
TZ=Europe/Paris
|
||||
PUID=1000
|
||||
PGID=1000
|
||||
|
||||
MYSQL_DATABASE=librenms
|
||||
MYSQL_USER=librenms
|
||||
MYSQL_PASSWORD=asupersecretpassword
|
||||
168
test/docker-compose.yml
Normal file
168
test/docker-compose.yml
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
version: "3.5"
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mariadb:10.5
|
||||
container_name: librenms_db
|
||||
command:
|
||||
- "mysqld"
|
||||
- "--innodb-file-per-table=1"
|
||||
- "--lower-case-table-names=0"
|
||||
- "--character-set-server=utf8mb4"
|
||||
- "--collation-server=utf8mb4_unicode_ci"
|
||||
volumes:
|
||||
- "librenms-db:/var/lib/mysql"
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
- "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
|
||||
- "MYSQL_DATABASE=${MYSQL_DATABASE}"
|
||||
- "MYSQL_USER=${MYSQL_USER}"
|
||||
- "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
|
||||
restart: always
|
||||
|
||||
memcached:
|
||||
image: memcached:alpine
|
||||
container_name: librenms_memcached
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
restart: always
|
||||
|
||||
redis:
|
||||
image: redis:5.0-alpine
|
||||
container_name: librenms_redis
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
restart: always
|
||||
|
||||
librenms:
|
||||
image: ${LIBRENMS_IMAGE:-librenms/librenms:latest}
|
||||
container_name: ${LIBRENMS_CONTAINER:-librenms}
|
||||
hostname: librenms
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
ports:
|
||||
- target: 8000
|
||||
published: 8000
|
||||
protocol: tcp
|
||||
depends_on:
|
||||
- db
|
||||
- memcached
|
||||
volumes:
|
||||
- "librenms-data:/data"
|
||||
env_file:
|
||||
- "./librenms.env"
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
- "PUID=${PUID}"
|
||||
- "PGID=${PGID}"
|
||||
- "DB_HOST=db"
|
||||
- "DB_NAME=${MYSQL_DATABASE}"
|
||||
- "DB_USER=${MYSQL_USER}"
|
||||
- "DB_PASSWORD=${MYSQL_PASSWORD}"
|
||||
- "DB_TIMEOUT=60"
|
||||
- "REDIS_HOST=redis"
|
||||
- "REDIS_PORT=6379"
|
||||
- "REDIS_DB=0"
|
||||
restart: always
|
||||
|
||||
dispatcher:
|
||||
image: ${LIBRENMS_IMAGE:-librenms/librenms:latest}
|
||||
container_name: librenms_dispatcher
|
||||
hostname: librenms-dispatcher
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
depends_on:
|
||||
- librenms
|
||||
- redis
|
||||
volumes:
|
||||
- "librenms-data:/data"
|
||||
env_file:
|
||||
- "./librenms.env"
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
- "PUID=${PUID}"
|
||||
- "PGID=${PGID}"
|
||||
- "DB_HOST=db"
|
||||
- "DB_NAME=${MYSQL_DATABASE}"
|
||||
- "DB_USER=${MYSQL_USER}"
|
||||
- "DB_PASSWORD=${MYSQL_PASSWORD}"
|
||||
- "DB_TIMEOUT=60"
|
||||
- "DISPATCHER_NODE_ID=dispatcher1"
|
||||
- "REDIS_HOST=redis"
|
||||
- "REDIS_PORT=6379"
|
||||
- "REDIS_DB=0"
|
||||
- "SIDECAR_DISPATCHER=1"
|
||||
restart: always
|
||||
|
||||
syslogng:
|
||||
image: ${LIBRENMS_IMAGE:-librenms/librenms:latest}
|
||||
container_name: librenms_syslogng
|
||||
hostname: librenms-syslogng
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
depends_on:
|
||||
- librenms
|
||||
ports:
|
||||
- target: 514
|
||||
published: 514
|
||||
protocol: tcp
|
||||
- target: 514
|
||||
published: 514
|
||||
protocol: udp
|
||||
volumes:
|
||||
- "librenms-data:/data"
|
||||
env_file:
|
||||
- "./librenms.env"
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
- "PUID=${PUID}"
|
||||
- "PGID=${PGID}"
|
||||
- "DB_HOST=db"
|
||||
- "DB_NAME=${MYSQL_DATABASE}"
|
||||
- "DB_USER=${MYSQL_USER}"
|
||||
- "DB_PASSWORD=${MYSQL_PASSWORD}"
|
||||
- "DB_TIMEOUT=60"
|
||||
- "REDIS_HOST=redis"
|
||||
- "REDIS_PORT=6379"
|
||||
- "REDIS_DB=0"
|
||||
- "SIDECAR_SYSLOGNG=1"
|
||||
restart: always
|
||||
|
||||
snmptrapd:
|
||||
image: ${LIBRENMS_IMAGE:-librenms/librenms:latest}
|
||||
container_name: librenms_snmptrapd
|
||||
hostname: librenms-snmptrapd
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- NET_RAW
|
||||
depends_on:
|
||||
- librenms
|
||||
ports:
|
||||
- target: 162
|
||||
published: 162
|
||||
protocol: tcp
|
||||
- target: 162
|
||||
published: 162
|
||||
protocol: udp
|
||||
volumes:
|
||||
- "librenms-data:/data"
|
||||
env_file:
|
||||
- "./librenms.env"
|
||||
environment:
|
||||
- "TZ=${TZ}"
|
||||
- "PUID=${PUID}"
|
||||
- "PGID=${PGID}"
|
||||
- "DB_HOST=db"
|
||||
- "DB_NAME=${MYSQL_DATABASE}"
|
||||
- "DB_USER=${MYSQL_USER}"
|
||||
- "DB_PASSWORD=${MYSQL_PASSWORD}"
|
||||
- "DB_TIMEOUT=60"
|
||||
- "SIDECAR_SNMPTRAPD=1"
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
librenms-db:
|
||||
librenms-data:
|
||||
14
test/librenms.env
Normal file
14
test/librenms.env
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
MEMORY_LIMIT=256M
|
||||
MAX_INPUT_VARS=1000
|
||||
UPLOAD_MAX_SIZE=16M
|
||||
OPCACHE_MEM_SIZE=128
|
||||
REAL_IP_FROM=0.0.0.0/32
|
||||
REAL_IP_HEADER=X-Forwarded-For
|
||||
LOG_IP_VAR=remote_addr
|
||||
|
||||
LIBRENMS_SNMP_COMMUNITY=librenmsdocker
|
||||
MEMCACHED_HOST=memcached
|
||||
MEMCACHED_PORT=11211
|
||||
|
||||
LIBRENMS_WEATHERMAP=false
|
||||
LIBRENMS_WEATHERMAP_SCHEDULE=*/5 * * * *
|
||||
Loading…
Add table
Add a link
Reference in a new issue