diff --git a/.github/workflows/test-edge.yml b/.github/workflows/test-edge.yml new file mode 100644 index 0000000..6a098db --- /dev/null +++ b/.github/workflows/test-edge.yml @@ -0,0 +1,84 @@ +name: test-edge + +concurrency: + group: test-edge-${{ 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 + continue-on-error: true + 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 + set: | + *.args.LIBRENMS_VERSION=master + 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 }}