Skip to content

feat(dev): add Dockerfile and entrypoint for development image #851

feat(dev): add Dockerfile and entrypoint for development image

feat(dev): add Dockerfile and entrypoint for development image #851

Workflow file for this run

name: Build
on:
workflow_dispatch:
push:
branches:
- main
pull_request:
schedule:
- cron: '10 4 * * *'
concurrency:
group: "${{ github.ref }}"
cancel-in-progress: true
env:
DOCKER_BUILDKIT: 1
COSIGN_EXPERIMENTAL: 1
permissions:
contents: write
id-token: write
packages: write
pull-requests: write
jobs:
frankenphp:
name: FrankenPHP
runs-on: namespace-profile-default
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: frankenphp
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
frankenphp-otel:
name: FrankenPHP with OpenTelemetry
runs-on: namespace-profile-default
needs: [frankenphp]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: frankenphp-otel
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
fpm:
name: Build FPM
runs-on: namespace-profile-default
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: fpm
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
fpm-otel:
name: Build FPM with OpenTelemetry
runs-on: namespace-profile-default
needs: [fpm]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: fpm-otel
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
webserver:
name: Build ${{ matrix.webserver }}
runs-on: namespace-profile-default
needs: [fpm]
strategy:
fail-fast: false
matrix:
webserver: [ caddy, nginx ]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: ${{ matrix.webserver}}
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
webserver-otel:
name: Build ${{ matrix.webserver }} with OpenTelemetry
runs-on: namespace-profile-default
needs: [fpm-otel]
strategy:
fail-fast: false
matrix:
webserver: [ caddy, nginx ]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: ${{ matrix.webserver}}-otel
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
dev:
name: Build Dev Image
runs-on: namespace-profile-default
needs: [webserver-otel]
strategy:
fail-fast: false
matrix:
webserver: [ caddy, nginx ]
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Build
uses: ./.github/action/build-bake-publish
with:
targets: ${{ matrix.webserver }}-dev
docker_hub_username: ${{ secrets.DOCKER_HUB_USERNAME }}
docker_hub_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
github_token: ${{ secrets.GITHUB_TOKEN }}
check:
name: Test Image with Webserver ${{ matrix.webserver }}
runs-on: ubuntu-latest
needs: [webserver]
strategy:
matrix:
webserver:
- caddy
- nginx
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Checkout example repo
uses: actions/checkout@v5
with:
repository: shopwareLabs/example-docker-repository
- name: Build main branch
if: github.ref == 'refs/heads/main'
run: docker compose build --build-arg BASE_IMAGE=ghcr.io/shopware/docker-base:8.3-caddy
env:
DOCKER_BUILDKIT: 0
- name: Build PR
if: github.ref != 'refs/heads/main'
run: docker compose build --build-arg BASE_IMAGE=ghcr.io/shopware/docker-base-ci-test:${{ github.run_id }}-8.3-${{ matrix.webserver}}
env:
DOCKER_BUILDKIT: 0
- name: Run image
env:
DOCKER_BUILDKIT: 0
run: docker compose up -d --wait
- name: Wait for Webserver reachable
run: |
attempt_counter=0
max_attempts=5
until $(curl --output /dev/null --silent --head --fail localhost:8000/admin); do
if [ ${attempt_counter} -eq ${max_attempts} ];then
echo "Max attempts reached"
exit 1
fi
printf '.'
attempt_counter=$(($attempt_counter+1))
sleep 5
done
- name: Check if shopware admin is running
run: curl --fail localhost:8000/admin
- name: Check if shopware is running
run: curl --fail localhost:8000
# output logs if failed
- name: Output logs
run: docker compose logs
if: ${{ always() }}