Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GHA: Add action to build and publish a test container #413

Merged
merged 6 commits into from
Feb 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>