Skip to content

Commit

Permalink
GHA: Add action to build and publish a test container (#413)
Browse files Browse the repository at this point in the history
* GHA: Add action to build and publish a test container

* GHA test image: Add labels and tags

* GHA test image: Add testdirs to the test image

* Smoketest env: Set database name to be used in tests

* Docker test: Middleware does not allow overriding the APP_ENV with an env var. Setting it in the Apache file for now. This will be fixed in the Symfony6 upgrade

* Smoketest and smoketest_event_replay envs: Add correct mysql connection parameters for usage in docker
  • Loading branch information
quartje authored Feb 20, 2024
1 parent 34e089b commit ffc7aa1
Show file tree
Hide file tree
Showing 6 changed files with 138 additions and 17 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/build-push-test-docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: build-push-test-docker-image

on:
push:
branches:
- feature/build-and-publish-test-container
workflow_dispatch:

jobs:
build-push-test-docker-image:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Build the app
uses: openconext/build-and-publish-test-container/php72-node14@main
with:
use_yarn: false

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Set docker labels and tags
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/openconext/stepup-middleware/stepup-middleware
flavor: |
latest=false
suffix=-test
tags: |
type=ref,event=tag
type=semver,pattern={{version}}
type=sha
type=raw,suffix=,value=test
- name: Build and push the TEST image
uses: docker/build-push-action@v4
with:
context: .
file: docker/Dockerfile.test
platforms: linux/amd64,linux/arm64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
1 change: 1 addition & 0 deletions component_info
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ SYMFONY_VERSION=4
ENCORE=no
ASSETIC=no
COMPOSER_VERSION=2
TEST_EXTRA_DIRS="tests/ ci/"
21 changes: 12 additions & 9 deletions config/packages/smoketest/doctrine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ doctrine:
default_connection: middleware
connections:
middleware:
dbname: "%database_middleware_name_test%"
host: localhost
password: password
user: root
dbname: middleware_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
gateway:
dbname: "%database_gateway_name_test%"
host: localhost
password: password
user: root
dbname: gateway_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
deploy:
dbname: "%database_middleware_name_test%"
dbname: middleware_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
21 changes: 13 additions & 8 deletions config/packages/smoketest_event_replay/doctrine.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ doctrine:
default_connection: middleware
connections:
middleware:
dbname: "%database_middleware_name%_test"
host: localhost
password: password
user: root
dbname: middleware_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
gateway:
dbname: "%database_gateway_name%_test"
host: localhost
password: password
user: root
dbname: gateway_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
deploy:
dbname: middleware_test
host: mariadb
password: mw_deploy_secret
user: mw_deploy_user
20 changes: 20 additions & 0 deletions docker/Dockerfile.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM ghcr.io/openconext/openconext-basecontainers/php72-apache2:latest
WORKDIR /var/www/html
ADD output.tar /var/www/html/

# Add the application configuration files
COPY config/legacy/parameters.yaml.dist config/legacy/parameters.yaml
COPY config/packages/prod/monolog.yaml.docker config/packages/prod/monolog.yaml

# Add the config files for Apache2
RUN rm -rf /etc/apache2/sites-enabled/*
COPY ./docker/conf/middleware-test-apache2.conf /etc/apache2/sites-enabled/middleware.conf

# Recreate the cache directory and set the correct permissions
RUN rm -rf /var/www/html/var/cache/prod && \
mkdir -p /var/www/html/var/cache/prod && \
chown -R www-data /var/www/html/var

EXPOSE 80

CMD ["apache2-foreground"]
34 changes: 34 additions & 0 deletions docker/conf/middleware-test-apache2.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<Virtualhost *:80>
ServerName middleware
ServerAdmin [email protected]

DocumentRoot /var/www/html/public
SetEnv HTTPS on
SetEnv APP_ENV smoketest
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

<Directory "/var/www/html/public">
Require all granted

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
<Location />
Require all granted
</Location>

Header always set X-Content-Type-Options "nosniff"

# Set the php application handler so mod_php interpets the files
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

ExpiresActive on
ExpiresByType font/* "access plus 1 year"
ExpiresByType image/* "access plus 6 months"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/js "access plus 1 year"
</VirtualHost>

0 comments on commit ffc7aa1

Please sign in to comment.