Skip to content

Commit 4e7f8c5

Browse files
authored
Merge pull request #645 from serversideup/release/webserver-improvements-and-fixes
Release 5.0: Add IP address SSL certificates, Additonal Proxy Support, web server improvements, and other fixes
2 parents e58f3c4 + b0175ad commit 4e7f8c5

145 files changed

Lines changed: 4458 additions & 705 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.dockerignore‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
**/.DS_Store
1+
**/.DS_Store
2+
depot.json

‎.github/ISSUE_TEMPLATE/bug.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ body:
2929
- type: textarea
3030
attributes:
3131
label: Affected Docker Images
32-
description: "Which images does this issue happen in? (for example: `serversideup/php:8.1-cli`, `serversideup/php:8.1-fpm`, etc). You can also run Run `docker inspect --format='{{json .Config.Labels}}' <<image>>` to get additional information."
32+
description: "Which images does this issue happen in? (for example: `serversideup/php:8.4-cli`, `serversideup/php:8.4-fpm`, etc). You can also run Run `docker inspect --format='{{json .Config.Labels}}' <<image>>` to get additional information."
3333
validations:
3434
required: true
3535
- type: textarea

‎.github/actionlint.yaml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Runner labels that are not GitHub-hosted, so actionlint recognizes them.
2+
# https://depot.dev/docs/github-actions/runner-types
3+
self-hosted-runner:
4+
labels:
5+
- depot-ubuntu-24.04
6+
- depot-ubuntu-24.04-4
7+
- depot-ubuntu-24.04-8
8+
- depot-ubuntu-24.04-16
9+
- depot-ubuntu-24.04-arm
10+
- depot-ubuntu-24.04-arm-4
11+
- depot-ubuntu-24.04-arm-8

‎.github/dependabot.yml‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,11 @@ updates:
66
interval: "daily"
77
allow:
88
- dependency-name: "@serversideup/project-switcher-bar"
9+
- package-ecosystem: "github-actions"
10+
directory: "/"
11+
schedule:
12+
interval: "monthly"
13+
groups:
14+
github-actions:
15+
patterns:
16+
- "*"
Lines changed: 90 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
name: Docker Publish (Beta Images)
2+
run-name: >-
3+
Beta images (${{
4+
github.event.release.tag_name ||
5+
(github.event_name == 'schedule' && 'weekly rebuild') ||
6+
'manual rebuild'
7+
}})
28
39
on:
410
workflow_dispatch:
@@ -7,24 +13,97 @@ on:
713
schedule:
814
- cron: '25 8 * * 1'
915

16+
# A release event and the weekly rebuild must not publish the same tags at the same time.
17+
concurrency:
18+
group: beta-images
19+
20+
permissions: {}
21+
1022
jobs:
11-
get-latest-beta-release:
23+
release:
24+
# Forks inherit the cron schedule. Their weekly rebuilds always fail and email whoever last edited the schedule upstream.
25+
if: github.event_name != 'schedule' || github.repository == 'serversideup/docker-php'
26+
name: resolve beta release
1227
runs-on: ubuntu-24.04
28+
timeout-minutes: 5
29+
permissions:
30+
contents: read
1331
outputs:
14-
release_tag: ${{ steps.get_latest_beta.outputs.release_tag }}
32+
tag: ${{ steps.release.outputs.tag }}
1533
steps:
16-
- name: Get Latest Beta Release
17-
id: get_latest_beta
34+
# A prerelease event builds the prerelease that fired it. Scheduled and manual runs rebuild the latest prerelease.
35+
- name: Find the beta release to build
36+
id: release
37+
env:
38+
GH_TOKEN: ${{ github.token }}
39+
GH_REPO: ${{ github.repository }}
40+
RELEASE_TAG: ${{ github.event.release.tag_name }}
1841
run: |
19-
LATEST_BETA=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases | jq -r '[.[] | select(.prerelease == true)][0].tag_name')
20-
echo "release_tag=${LATEST_BETA}" >> $GITHUB_OUTPUT
42+
TAG="${RELEASE_TAG:-$(gh api "repos/${GH_REPO}/releases?per_page=30" --jq '[.[] | select(.prerelease)][0].tag_name')}"
43+
if [ -z "$TAG" ] || [ "$TAG" = "null" ]; then
44+
echo "::error title=No beta release found::Could not find a prerelease to build."
45+
exit 1
46+
fi
47+
echo "Building beta release $TAG"
48+
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
2149
22-
build-beta-images:
23-
needs: get-latest-beta-release
24-
uses: ./.github/workflows/service_docker-build-and-publish.yml
50+
setup:
51+
needs: release
52+
uses: ./.github/workflows/service_setup-matrix.yml
53+
permissions:
54+
contents: read
2555
with:
56+
ref: ${{ needs.release.outputs.tag }}
57+
58+
build:
59+
needs: [release, setup]
60+
name: build ${{ matrix.variation }}
61+
strategy:
62+
fail-fast: false
63+
matrix:
64+
variation: ${{ fromJson(needs.setup.outputs.variations) }}
65+
permissions:
66+
contents: read
67+
id-token: write
68+
uses: ./.github/workflows/service_build-images.yml
69+
with:
70+
variation: ${{ matrix.variation }}
71+
matrix: ${{ needs.setup.outputs.matrix }}
72+
ref: ${{ needs.release.outputs.tag }}
2673
registry-repositories: "docker.io/serversideup/php,ghcr.io/serversideup/php"
2774
tag-prefix: "beta"
2875
release-type: "testing"
29-
ref: ${{ needs.get-latest-beta-release.outputs.release_tag }}
30-
secrets: inherit
76+
secrets: inherit
77+
78+
test:
79+
needs: [release, setup, build]
80+
if: always() && needs.setup.result == 'success'
81+
uses: ./.github/workflows/service_test-images.yml
82+
permissions:
83+
contents: read
84+
id-token: write
85+
with:
86+
ref: ${{ needs.release.outputs.tag }}
87+
88+
# Only images that passed the image tests reach a public registry.
89+
publish:
90+
needs: [release, build, test]
91+
if: needs.build.result == 'success' && needs.test.result == 'success'
92+
uses: ./.github/workflows/service_publish-images.yml
93+
permissions:
94+
contents: read
95+
packages: write
96+
id-token: write
97+
with:
98+
ref: ${{ needs.release.outputs.tag }}
99+
secrets: inherit
100+
101+
report:
102+
needs: [release, setup, build, test, publish]
103+
if: always() && needs.setup.result == 'success'
104+
uses: ./.github/workflows/service_report.yml
105+
permissions:
106+
contents: read
107+
with:
108+
matrix: ${{ needs.setup.outputs.matrix }}
109+
ref: ${{ needs.release.outputs.tag }}

‎.github/workflows/action_publish-images-dev-main.yml‎

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 89 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
name: Docker Publish (Production Images)
2+
run-name: >-
3+
Production images (${{
4+
github.event.release.tag_name ||
5+
(github.event_name == 'schedule' && 'weekly rebuild') ||
6+
'manual rebuild'
7+
}})
28
39
on:
410
workflow_dispatch:
@@ -7,24 +13,97 @@ on:
713
schedule:
814
- cron: '0 8 * * 2'
915

16+
# A release event and the weekly rebuild must not publish the same tags at the same time.
17+
concurrency:
18+
group: production-images
19+
20+
permissions: {}
21+
1022
jobs:
11-
get-latest-release:
23+
release:
24+
# Forks inherit the cron schedule. Their weekly rebuilds always fail and email whoever last edited the schedule upstream.
25+
if: github.event_name != 'schedule' || github.repository == 'serversideup/docker-php'
26+
name: resolve release
1227
runs-on: ubuntu-24.04
28+
timeout-minutes: 5
29+
permissions:
30+
contents: read
1331
outputs:
14-
release_tag: ${{ steps.get_latest_release.outputs.release_tag }}
32+
tag: ${{ steps.release.outputs.tag }}
1533
steps:
16-
- name: Get Latest Release
17-
id: get_latest_release
34+
# A release event builds the release that fired it. Scheduled and manual runs rebuild the latest release.
35+
- name: Find the release to build
36+
id: release
37+
env:
38+
GH_TOKEN: ${{ github.token }}
39+
GH_REPO: ${{ github.repository }}
40+
RELEASE_TAG: ${{ github.event.release.tag_name }}
1841
run: |
19-
LATEST_TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name)
20-
echo "release_tag=${LATEST_TAG}" >> $GITHUB_OUTPUT
42+
TAG="${RELEASE_TAG:-$(gh release view --json tagName --jq .tagName)}"
43+
if [ -z "$TAG" ] || [ "$TAG" = "null" ]; then
44+
echo "::error title=No release found::Could not find a published release to build."
45+
exit 1
46+
fi
47+
echo "Building release $TAG"
48+
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
2149
22-
build-production-images:
23-
needs: get-latest-release
24-
uses: ./.github/workflows/service_docker-build-and-publish.yml
50+
setup:
51+
needs: release
52+
uses: ./.github/workflows/service_setup-matrix.yml
53+
permissions:
54+
contents: read
2555
with:
56+
ref: ${{ needs.release.outputs.tag }}
57+
58+
build:
59+
needs: [release, setup]
60+
name: build ${{ matrix.variation }}
61+
strategy:
62+
fail-fast: false
63+
matrix:
64+
variation: ${{ fromJson(needs.setup.outputs.variations) }}
65+
permissions:
66+
contents: read
67+
id-token: write
68+
uses: ./.github/workflows/service_build-images.yml
69+
with:
70+
variation: ${{ matrix.variation }}
71+
matrix: ${{ needs.setup.outputs.matrix }}
72+
ref: ${{ needs.release.outputs.tag }}
2673
registry-repositories: "docker.io/serversideup/php,ghcr.io/serversideup/php"
2774
tag-prefix: ''
2875
release-type: "latest"
29-
ref: ${{ needs.get-latest-release.outputs.release_tag }}
3076
secrets: inherit
77+
78+
test:
79+
needs: [release, setup, build]
80+
if: always() && needs.setup.result == 'success'
81+
uses: ./.github/workflows/service_test-images.yml
82+
permissions:
83+
contents: read
84+
id-token: write
85+
with:
86+
ref: ${{ needs.release.outputs.tag }}
87+
88+
# Only images that passed the image tests reach a public registry.
89+
publish:
90+
needs: [release, build, test]
91+
if: needs.build.result == 'success' && needs.test.result == 'success'
92+
uses: ./.github/workflows/service_publish-images.yml
93+
permissions:
94+
contents: read
95+
packages: write
96+
id-token: write
97+
with:
98+
ref: ${{ needs.release.outputs.tag }}
99+
secrets: inherit
100+
101+
report:
102+
needs: [release, setup, build, test, publish]
103+
if: always() && needs.setup.result == 'success'
104+
uses: ./.github/workflows/service_report.yml
105+
permissions:
106+
contents: read
107+
with:
108+
matrix: ${{ needs.setup.outputs.matrix }}
109+
ref: ${{ needs.release.outputs.tag }}

0 commit comments

Comments
 (0)