1#!/usr/bin/env php
2<?php echo "# generated file; do not edit!\n"; ?>
3
4name: ci
5on:
6  workflow_dispatch:
7  push:
8  pull_request:
9
10jobs:
11<?php
12
13$gen = include __DIR__ . "/ci/gen-matrix.php";
14$cur = "7.4";
15$job = $gen->github([
16"old-matrix" => [
17// most useful for all additional versions except current
18	"PHP" => ["7.0", "7.1", "7.2", "7.3"],
19	"enable_debug" => "yes",
20	"enable_maintainer_zts" => "yes",
21	"enable_json" => "yes",
22	"enable_hash" => "yes",
23	"enable_iconv" => "yes",
24],
25"cur-none" => [
26// everything disabled for current
27	"PHP" => $cur,
28	"with_http_libicu_dir" => "no",
29	"with_http_libidn_dir" => "no",
30	"with_http_libidn2_dir" => "no",
31	"with_http_libcurl_dir" => "no",
32	"with_http_libevent_dir" => "no",
33	"with_http_libbrotli_dir" => "no",
34],
35"cur-dbg-zts" => [
36// everything enabled for current, switching debug/zts
37	"PHP" => $cur,
38	"PECLs" => "event",			// for tests/client029.phpt
39	"enable_sockets" => "yes",	// needed by pecl/event
40	"enable_debug",
41	"enable_maintainer_zts",
42	"enable_json" => "yes",
43	"enable_hash" => "yes",
44	"enable_iconv" => "yes",
45],
46"cur-cov" => [
47// once everything enabled for current, with coverage
48	"CFLAGS" => "-O0 -g --coverage",
49	"CXXFLAGS" => "-O0 -g --coverage",
50	"PHP" => $cur,
51	"PECLs" => "event",			// for tests/client029.phpt
52	"enable_sockets" => "yes",	// needed by pecl/event
53	"enable_json" => "yes",
54	"enable_hash" => "yes",
55	"enable_iconv" => "yes",
56	[
57		"with_http_libicu_dir",
58		"with_http_libidn_dir",
59		"with_http_libidn2_dir",
60	],
61]]);
62
63foreach ($job as $id => $env) {
64    printf("  %s:\n", $id);
65    printf("    name: %s\n", $id);
66    if ($env["PHP"] == "master") {
67        printf("    continue-on-error: true\n");
68    }
69    printf("    env:\n");
70    foreach ($env as $key => $val) {
71        printf("      %s: \"%s\"\n", $key, $val);
72    }
73?>
74    runs-on: ubuntu-20.04
75    steps:
76      - uses: actions/checkout@v2
77        with:
78          submodules: true
79      - name: Install
80        run: |
81          sudo apt-get install -y \
82            php-cli \
83            php-pear \
84            libcurl4-openssl-dev \
85            libevent-dev \
86            libidn11-dev \
87            libidn2-0-dev \
88            libicu-dev \
89            libevent-dev \
90            libbrotli-dev \
91            re2c
92      - name: Prepare
93        run: |
94          make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php
95          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master
96          make -f scripts/ci/Makefile pecl PECL=m6w6/ext-propro.git:propro:master
97          if test -n "$PECLs"; then
98            IFS=$','
99            for pecl in $PECLs; do
100              make -f scripts/ci/Makefile pecl PECL=$pecl
101            done
102            unset IFS
103          fi
104
105      - name: Build
106        run: |
107          make -f scripts/ci/Makefile ext PECL=http
108      - name: Test
109        run: |
110          make -f scripts/ci/Makefile test
111<?php if (isset($env["CFLAGS"]) && strpos($env["CFLAGS"], "--coverage") != false) : ?>
112      - name: Coverage
113        if: success()
114        run: |
115          cd src/.libs
116          bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy
117<?php endif; ?>
118
119<?php
120}
121