1
1
name : Benchmark
2
2
on :
3
3
schedule :
4
- - cron : " 0 2 * * *"
4
+ - cron : " 30 0 * * *"
5
5
permissions :
6
6
contents : read
7
7
jobs :
19
19
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
20
20
gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
21
21
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
22
- sudo apt update
23
- sudo apt install terraform=1.5.7-*
22
+ export DEBIAN_FRONTEND=noninteractive
23
+ sudo apt-get update -y
24
+ sudo apt-get install -y terraform=1.5.7-*
24
25
- name : Checkout benchmark suite
25
26
uses : actions/checkout@v4
26
27
with :
@@ -32,52 +33,63 @@ jobs:
32
33
uses : actions/checkout@v4
33
34
with :
34
35
repository : ' php/php-src'
35
- ref : ' master '
36
+ ref : ' ${{ github.sha }} '
36
37
fetch-depth : 100
37
38
path : ' php-version-benchmarks/tmp/php_master'
38
- - name : Copy-paste the same repo content for benchmarking JIT
39
+ - name : Setup benchmark results
39
40
run : |
40
- set -e
41
-
42
- cp -r "php-version-benchmarks/tmp/php_master/" "php-version-benchmarks/tmp/php_master_jit"
43
- - name : Setup benchmark config
41
+ git config --global user.name "Benchmark"
42
+ git config --global user.email "[email protected] "
43
+
44
+ rm -rf ./php-version-benchmarks/docs/results
45
+ - name : Checkout benchmark results
46
+ uses : actions/checkout@v4
47
+ with :
48
+ repository : kocsismate/php-version-benchmark-results
49
+ ssh-key : ${{ secrets.PHP_VERSION_BENCHMARK_RESULTS_DEPLOY_KEY }}
50
+ path : ' php-version-benchmarks/docs/results'
51
+ - name : Set benchmark config
44
52
run : |
45
53
set -e
46
54
55
+ # Set infrastructure config
47
56
cp ./php-version-benchmarks/config/infra/aws/x86_64-metal.ini.dist ./php-version-benchmarks/config/infra/aws/x86_64-metal.ini
48
57
ESCAPED_DOCKER_REGISTRY=$(printf '%s\n' "${{ secrets.PHP_VERSION_BENCHMARK_DOCKER_REGISTRY }}" | sed -e 's/[\/&]/\\&/g')
49
58
sed -i "s/INFRA_DOCKER_REGISTRY=public.ecr.aws\/abcdefgh/INFRA_DOCKER_REGISTRY=$ESCAPED_DOCKER_REGISTRY/g" ./php-version-benchmarks/config/infra/aws/x86_64-metal.ini
50
-
51
59
cp ./php-version-benchmarks/build/infrastructure/config/aws.tfvars.dist ./php-version-benchmarks/build/infrastructure/config/aws.tfvars
52
60
sed -i 's/access_key = ""/access_key = "${{ secrets.PHP_VERSION_BENCHMARK_AWS_ACCESS_KEY }}"/g' ./php-version-benchmarks/build/infrastructure/config/aws.tfvars
53
61
sed -i 's/secret_key = ""/secret_key = "${{ secrets.PHP_VERSION_BENCHMARK_AWS_SECRET_KEY }}"/g' ./php-version-benchmarks/build/infrastructure/config/aws.tfvars
54
62
63
+ YEAR="$(date '+%Y')"
64
+ DATABASE="./php-version-benchmarks/docs/results/$YEAR/database.tsv"
65
+ if [ -f "$DATABASE" ]; then
66
+ LAST_RESULT_SHA="$(tail -n 2 "$DATABASE" | head -n 1 | cut -f 6)"
67
+ else
68
+ YESTERDAY="$(date -d "-2 day 23:59:59" '+%Y-%m-%d %H:%M:%S')"
69
+ LAST_RESULT_SHA="$(cd ./php-version-benchmarks/tmp/php_master/ && git --no-pager log --until="$YESTERDAY" -n 1 --pretty='%H')"
70
+ fi
71
+
72
+ # Set config for the previous PHP version
55
73
cp ./php-version-benchmarks/config/php/master.ini.dist ./php-version-benchmarks/config/php/master1.ini
56
- YESTERDAY="$(date -d "-2 day 13:00" '+%Y-%m-%d')"
57
- YESTERDAY_SHA="$(cd ./php-version-benchmarks/tmp/php_master/ && git --no-pager log --until="$YESTERDAY 23:59:59" -n 1 --pretty='%H')"
58
74
sed -i 's/PHP_NAME="PHP - master"/PHP_NAME="PHP - previous master"/g' ./php-version-benchmarks/config/php/master1.ini
59
75
sed -i "s/PHP_ID=php_master/PHP_ID=php_master_previous/g" ./php-version-benchmarks/config/php/master1.ini
60
- sed -i "s/PHP_COMMIT=/PHP_COMMIT=$YESTERDAY_SHA/g" ./php-version-benchmarks/config/php/master1.ini
76
+ sed -i "s/PHP_COMMIT=/PHP_COMMIT=$LAST_RESULT_SHA/g" ./php-version-benchmarks/config/php/master1.ini
77
+
78
+ # Set config for the current PHP version
61
79
cp ./php-version-benchmarks/config/php/master.ini.dist ./php-version-benchmarks/config/php/master2.ini
80
+ sed -i "s/PHP_COMMIT=/PHP_COMMIT=${{ github.sha }}/g" ./php-version-benchmarks/config/php/master2.ini
81
+
82
+ # Set config for current PHP version with JIT
83
+ git clone ./php-version-benchmarks/tmp/php_master/ ./php-version-benchmarks/tmp/php_master_jit
62
84
cp ./php-version-benchmarks/config/php/master_jit.ini.dist ./php-version-benchmarks/config/php/master2_jit.ini
85
+ sed -i "s/PHP_COMMIT=/PHP_COMMIT=${{ github.sha }}/g" ./php-version-benchmarks/config/php/master2_jit.ini
63
86
87
+ # Set test configs
64
88
cp ./php-version-benchmarks/config/test/1_laravel.ini.dist ./php-version-benchmarks/config/test/1_laravel.ini
65
89
cp ./php-version-benchmarks/config/test/2_symfony_main.ini.dist ./php-version-benchmarks/config/test/2_symfony_main.ini
66
90
cp ./php-version-benchmarks/config/test/4_wordpress.ini.dist ./php-version-benchmarks/config/test/4_wordpress.ini
67
91
cp ./php-version-benchmarks/config/test/5_bench.php.ini.dist ./php-version-benchmarks/config/test/5_bench.php.ini
68
92
cp ./php-version-benchmarks/config/test/6_micro_bench.php.ini.dist ./php-version-benchmarks/config/test/6_micro_bench.php.ini
69
-
70
- rm -rf ./php-version-benchmarks/docs/results
71
- - name : Git setup
72
- run : |
73
- git config --global user.name "Benchmark"
74
- git config --global user.email "[email protected] "
75
- - name : Checkout benchmark results
76
- uses : actions/checkout@v4
77
- with :
78
- repository : kocsismate/php-version-benchmark-results
79
- ssh-key : ${{ secrets.PHP_VERSION_BENCHMARK_RESULTS_DEPLOY_KEY }}
80
- path : ' php-version-benchmarks/docs/results'
81
93
- name : Run benchmark
82
94
run : ./php-version-benchmarks/benchmark.sh run aws
83
95
- name : Store results
92
104
fi
93
105
git add .
94
106
if git diff --cached --quiet; then
95
- exit 0
107
+ exit 1
96
108
fi
97
109
git commit -m "Add result for ${{ github.repository }}@${{ github.sha }}"
98
110
git push
0 commit comments