forked from litespeedtech/ols-dockerfiles
-
Notifications
You must be signed in to change notification settings - Fork 2
123 lines (113 loc) · 4.84 KB
/
test-builds.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
name: test-build
on:
workflow_dispatch:
pull_request:
branches:
- develop
env:
OLS_VERSION: '1.7.19'
PHP_STABLE_VERSION: '8.3.6'
NODE_STABLE_VERSION: '20'
REGISTRY: ghcr.io
jobs:
buildx:
runs-on: self-hosted
strategy:
fail-fast: false
matrix:
PHP_VERSION:
- '8.1.28'
- '8.2.18'
- '8.3.6'
NODE_VERSION:
- '18'
- '20'
include:
- job-name: 'OLS Admin PHP 8.x RC'
PHP_VERSION: '8.1.28'
NODE_VERSION: '20'
OLS_ADMIN_PHP_VERSION: '8.2.18'
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Required due to the way Git works, without it this action won't be able to find any or the correct tags
# https://github.com/marketplace/actions/docker-setup-buildx
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# https://github.com/marketplace/actions/docker-login
- name: Login to GitHub Packages
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
logout: false
# https://github.com/orgs/community/discussions/26625#discussioncomment-3252582
- name: Determine PHP Major/Minor Version
id: php-version
run: |
_0=$(echo ${{ matrix.PHP_VERSION }} | cut -d. -f1)
_1=$(echo ${{ matrix.PHP_VERSION }} | cut -d. -f2)
echo "_0=$_0" >> $GITHUB_OUTPUT
echo "_1=$_1" >> $GITHUB_OUTPUT
# https://github.com/marketplace/actions/build-and-push-docker-images
- name: Build Docker Image
uses: docker/build-push-action@v5
with:
context: template
platforms: linux/arm64
provenance: false
build-args: |
OLS_VERSION=${{ env.OLS_VERSION }}
PHP_VERSION=${{ matrix.PHP_VERSION }}
PHP_MAJOR_VERSION=${{ steps.php-version.outputs._0 }}
PHP_MINOR_VERSION=${{ steps.php-version.outputs._1 }}
OLS_ADMIN_PHP_VERSION=${{ matrix.PHP_VERSION }}
OLS_ADMIN_PHP_MAJOR_VERSION=${{ steps.php-version.outputs._0 }}
OLS_ADMIN_PHP_MINOR_VERSION=${{ steps.php-version.outputs._1 }}
NODE_VERSION=${{ matrix.NODE_VERSION }}
load: true
push: false
tags: openlitespeed:${{ env.OLS_VERSION }}-lsphp${{ steps.php-version.outputs._0 }}${{ steps.php-version.outputs._1 }}-node${{ matrix.NODE_VERSION }}
no-cache: ${{ github.event_name == 'workflow_dispatch' && true || false }}
cache-from: type=registry,ref=${{ env.REGISTRY }}/ndigitals/openlitespeed
cache-to: type=inline
- name: Test Docker Image
run: |
IMAGE=openlitespeed:${{ env.OLS_VERSION }}-lsphp${{ steps.php-version.outputs._0 }}${{ steps.php-version.outputs._1 }}-node${{ matrix.NODE_VERSION }}
echo -e 'Testing PHP Info Site...'
ID=$(docker run -d ${IMAGE})
sleep 5s
docker exec -i ${ID} su -c 'mkdir -p /var/www/vhosts/localhost/html/ && echo "<?php phpinfo();" > /var/www/vhosts/localhost/html/index.php && service lsws restart'
HTTP=$(docker exec -i ${ID} su -c 'curl -s -o /dev/null -IkL -w "%{http_code}" http://localhost')
HTTPS=$(docker exec -i ${ID} su -c 'curl -s -o /dev/null -Ik -w "%{http_code}" https://localhost')
docker kill ${ID} &>/dev/null
docker rm ${ID} &>/dev/null
if [[ "${HTTP}" != "200" || "${HTTPS}" != "200" ]]; then
echo -e '[\u2718] Test failed!'
echo "http://localhost returned ${HTTP}"
echo "https://localhost returned ${HTTPS}"
docker rmi ${IMAGE} &>/dev/null
exit 1
else
echo -e '[\u2714] Tests passed!'
fi
echo -e 'Testing OLS Admin Control Panel...'
ID=$(docker run -d ${IMAGE})
sleep 5s
HTTP=$(docker exec -i ${ID} su -c 'curl -s -o /dev/null -IkL -w "%{http_code}" "http://localhost:7080/login.php?timedout=1#view/confMgr.php?m=tp_docker&p=ext"')
HTTPS=$(docker exec -i ${ID} su -c 'curl -s -o /dev/null -Ik -w "%{http_code}" "https://localhost:7080/login.php?timedout=1#view/confMgr.php?m=tp_docker&p=ext"')
docker kill ${ID} &>/dev/null
docker rm ${ID} &>/dev/null
if [[ "${HTTP}" != "200" || "${HTTPS}" != "200" ]]; then
echo -e '[\u2718] Test failed!'
echo "http://localhost returned ${HTTP}"
echo "https://localhost returned ${HTTPS}"
docker rmi ${IMAGE} &>/dev/null
exit 1
else
echo -e '[\u2714] Tests passed!'
fi
echo -e 'Cleaning Up Test Image...'
docker rmi ${IMAGE} &>/dev/null