Skip to content

Bump composer from 2.8.3 to 2.8.4 in /docker #4043

Bump composer from 2.8.3 to 2.8.4 in /docker

Bump composer from 2.8.3 to 2.8.4 in /docker #4043

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ** Build **
#
# Catroweb does not require any build actions such as a compilation process since it is interpreted.
# However, Catroweb has various dependencies on third party software to run. (E.g. web server, database, ..)
# To ease the setup process we use Docker. This workflow checks that all Docker containers build and their basic
# functionality is working.
#
# - This tests must never fail!:
#
# We should never allow those checks to fail before merging a pull request. Having a failing docker container
# prevents developers from effectively working with Docker. At all times developers should have easy access to
# the development
#
#
name: 'Docker Container tests'
# Run-on every creation, update and merge of a pull request.
# However, prevent checks to be initiated twice if the pull request origins from a branch on the official repository.
# For example, this happens with dependabot.
on:
pull_request:
branches:
- '**' # all branches
- '!main' # excludes main to prevent double test runs during release prep.
jobs:
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Developer Container:
#
# - The Docker test container is already thoroughly tested during dynamic software tests.
# However, it is essential to guarantee the functionality of the development container too.
#
# -- the container must build,
# -- the container must be filled with dummy data
# -- the website must be available (check status code of response)
# -- the test system must be working (run a few tests)
# -- the shared volumes must work (invalid modification must crash the application)
#
dev_container_checks:
name: Development Container
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build and start all containers (Docker Compose)
run: |
cd docker
docker compose -f docker-compose.dev.yaml up -d
sleep 30
- name: Check Symfony application (info)
run: |
docker exec app.catroweb bin/console about
- name: Create a livid environment with dummy data
run: |
docker exec app.catroweb bin/console catrobat:reset --hard
- name: Run a few dynamic software tests
run: |
docker exec app.catroweb bin/behat -s web-general tests/BehatFeatures/web/general/homepage.feature
- name: Test shared volumes, by expecting a crash with invalid changes to the test file
id: shared-test-run-must-fail
continue-on-error: true
run: |
echo "INVALID" > tests/BehatFeatures/web/general/homepage.feature
docker exec app.catroweb bin/behat -s web-general tests/BehatFeatures/web/general/homepage.feature
TEST_RUN_EXIT_CODE=$?
echo "test-run-exit-code=$TEST_RUN_EXIT_CODE" > $GITHUB_ENV
( exit $TEST_RUN_EXIT_CODE )
- name: Assert shared volumes are working as expected
if: env.shared-test-run-must-fail.test-run-exit-code != '0'
run: |
exit -1
- name: Test response of the website running in the container
run: |
sudo apt-get update
sudo apt-get install apache2 wget
sudo sh -c "echo '\n127.0.0.1 catroweb' >> /etc/hosts"
wget --spider -S "http://catroweb:8080" 2>&1 | awk '/HTTP\// {print $2}' | grep 200
- name: DEBUG
if: failure()
run: |
docker ps -a
echo "--- App ---"
docker logs app.catroweb
echo "--- DB ---"
docker logs db.catroweb.test
echo "--- Chrome ---"
docker logs chrome.catroweb
- uses: actions/upload-artifact@v4
if: failure()
with:
name: screenshots_dev_container
path: tests/TestReports/TestScreenshots
- uses: actions/upload-artifact@v4
if: failure()
with:
name: dev_logs_dev_container
path: var/log/dev
- uses: actions/upload-artifact@v4
if: failure()
with:
name: test_logs_dev_container
path: var/log/test