From 7a0dee8cc0dc7fc165d9c4f39a070bf3c32ce756 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Tue, 12 Jan 2021 17:49:25 +0100 Subject: [PATCH] gh-actions: workflows/ci --- .github/workflows/ci.yml | 316 +++++++++++++++++++++++++++++ .gitmodules | 4 +- .travis.yml | 73 ------- README.md | 13 +- scripts/ci | 1 + scripts/gen_github_workflow_ci.php | 96 +++++++++ travis/brotli.sh | 19 -- travis/pecl | 1 - 8 files changed, 425 insertions(+), 98 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml create mode 160000 scripts/ci create mode 100755 scripts/gen_github_workflow_ci.php delete mode 100755 travis/brotli.sh delete mode 160000 travis/pecl diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..9eee78c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,316 @@ +# generated file; do not edit! + +name: ci +on: + workflow_dispatch: + push: + pull_request: + +jobs: + master-0: + name: master-0 + continue-on-error: true + env: + PHP: master + enable_debug: yes + enable_zts: yes + enable_iconv: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-none-0: + name: cur-none-0 + env: + PHP: 8.0 + with_http_libicu_dir: no + with_http_libidn_dir: no + with_http_libidn2_dir: no + with_http_libcurl_dir: no + with_http_libevent_dir: no + with_http_libbrotli_dir: no + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-dbg-zts-0: + name: cur-dbg-zts-0 + env: + PHP: 8.0 + enable_debug: yes + enable_zts: yes + enable_iconv: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-dbg-zts-1: + name: cur-dbg-zts-1 + env: + PHP: 8.0 + enable_debug: no + enable_zts: yes + enable_iconv: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-dbg-zts-2: + name: cur-dbg-zts-2 + env: + PHP: 8.0 + enable_debug: yes + enable_zts: no + enable_iconv: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-dbg-zts-3: + name: cur-dbg-zts-3 + env: + PHP: 8.0 + enable_debug: no + enable_zts: no + enable_iconv: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + cur-cov-0: + name: cur-cov-0 + env: + CFLAGS: '-O0 -g --coverage' + CXXFLAGS: '-O0 -g --coverage' + PHP: 8.0 + enable_iconv: yes + with_http_libicu_dir: yes + with_http_libidn_dir: no + with_http_libidn2_dir: no + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + - name: Coverage + if: success() + run: | + cd src/.libs + bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy + + cur-cov-1: + name: cur-cov-1 + env: + CFLAGS: '-O0 -g --coverage' + CXXFLAGS: '-O0 -g --coverage' + PHP: 8.0 + enable_iconv: yes + with_http_libicu_dir: no + with_http_libidn_dir: yes + with_http_libidn2_dir: no + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + - name: Coverage + if: success() + run: | + cd src/.libs + bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy + + cur-cov-2: + name: cur-cov-2 + env: + CFLAGS: '-O0 -g --coverage' + CXXFLAGS: '-O0 -g --coverage' + PHP: 8.0 + enable_iconv: yes + with_http_libicu_dir: no + with_http_libidn_dir: no + with_http_libidn2_dir: yes + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + - name: Coverage + if: success() + run: | + cd src/.libs + bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy + diff --git a/.gitmodules b/.gitmodules index e53f88c..95347fa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,6 @@ [submodule "travis-pecl"] - path = travis/pecl + path = scripts/ci url = https://github.com/m6w6/travis-pecl.git branch = master +[submodule "scripts/ci"] + url = https://github.com/m6w6/pecl-ci.git diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3772dc6..0000000 --- a/.travis.yml +++ /dev/null @@ -1,73 +0,0 @@ -# autogenerated file; do not edit -language: c - -addons: - apt: - packages: - - php-cli - - php-pear - - libcurl4-openssl-dev - - libidn11-dev - - libidn2-0-dev - - libicu-dev - - libevent-dev - - libbrotli-dev - -cache: - apt: true - directories: - - $HOME/cache -before_cache: - - find $HOME/cache -name '*.gcda' -o -name '*.gcno' -delete - -env: - - PHP=master enable_debug=yes enable_zts=yes enable_iconv=yes - - PHP=8.0 with_http_libicu_dir=no with_http_libidn_dir=no with_http_libidn2_dir=no with_http_libcurl_dir=no with_http_libevent_dir=no with_http_libbrotli_dir=no - - PHP=8.0 enable_debug=no enable_zts=no enable_iconv=yes - - PHP=8.0 enable_debug=yes enable_zts=no enable_iconv=yes - - PHP=8.0 enable_debug=no enable_zts=yes enable_iconv=yes - - PHP=8.0 enable_debug=yes enable_zts=yes enable_iconv=yes - - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libicu_dir=yes with_http_libidn_dir=no with_http_libidn2_dir=no - - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libidn_dir=yes with_http_libicu_dir=no with_http_libidn2_dir=no - - CFLAGS='-O0 -g --coverage' CXXFLAGS='-O0 -g --coverage' PHP=8.0 enable_iconv=yes with_http_libidn2_dir=yes with_http_libicu_dir=no with_http_libidn_dir=no - -matrix: - fast_finish: true - allow_failures: - - env: PHP=master enable_debug=yes enable_zts=yes enable_iconv=yes - -install: - - | - if test "$PHP" = master; then \ - make -f travis/pecl/Makefile reconf; \ - make -f travis/pecl/Makefile pecl-rm pecl-clean PECL=m6w6/ext-raphf.git:raphf:master; \ - fi - - make -f travis/pecl/Makefile php || make -f travis/pecl/Makefile clean php - - make -f travis/pecl/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master - - | - if test -n "$PECLs"; then \ - IFS=$','; \ - for pecl in $PECLs; do \ - make -f travis/pecl/Makefile pecl PECL=$pecl; \ - done; \ - unset IFS; \ - fi - -script: - - make -f travis/pecl/Makefile ext PECL=http - - make -f travis/pecl/Makefile test - -after_script: - - make -f travis/pecl/Makefile cppcheck -after_failure: - - test -e tests/helper/server.log && cat tests/helper/server.log -after_success: - - test -n "$CFLAGS" && cd src/.libs && bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy - -notifications: - webhooks: - urls: - - https://webhooks.gitter.im/e/28d35158ac7e385bd14d - on_success: change - on_failure: always - on_start: never diff --git a/README.md b/README.md index 68bbe94..8be4afa 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,16 @@ # ext-http -[![Build Status](https://travis-ci.com/m6w6/ext-http.svg?branch=master)](https://travis-ci.com/m6w6/ext-http) +[![Build Status](https://github.com/m6w6/ext-http/workflows/ci/badge.svg)](https://github.com/m6w6/ext-http/actions?query=workflow%3Aci) [![Coverity Scan Build Status](https://scan.coverity.com/projects/8711/badge.svg)](https://scan.coverity.com/projects/m6w6-ext-http) [![codecov](https://codecov.io/gh/m6w6/ext-http/branch/master/graph/badge.svg)](https://codecov.io/gh/m6w6/ext-http) -[![Join the chat at https://gitter.im/m6w6/ext-http](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/m6w6/ext-http) -Extended HTTP support. Again. +Extended HTTP support for PHP. + +## Branches and Versions: + +> **NOTE:** + Use `v3.x` branch, and resp. v3 releases, for PHP-7. `master` and v4 releases are only for PHP-8. + ## Documentation @@ -13,7 +18,7 @@ See the [online markdown reference](https://mdref.m6w6.name/http). Known issues are listed in [BUGS](./BUGS) and future ideas can be found in [TODO](./TODO). -## Installing +## Install ### PECL diff --git a/scripts/ci b/scripts/ci new file mode 160000 index 0000000..5592d53 --- /dev/null +++ b/scripts/ci @@ -0,0 +1 @@ +Subproject commit 5592d53e5c8cebf7ea9cb65744c37669209b00fc diff --git a/scripts/gen_github_workflow_ci.php b/scripts/gen_github_workflow_ci.php new file mode 100755 index 0000000..098da48 --- /dev/null +++ b/scripts/gen_github_workflow_ci.php @@ -0,0 +1,96 @@ +#!/usr/bin/env php + + +name: ci +on: + workflow_dispatch: + push: + pull_request: + +jobs: +github([ +"master" => [ +// most useful for all additional versions except current + "PHP" => ["master"], + "enable_debug" => "yes", + "enable_zts" => "yes", + "enable_iconv" => "yes", +], +"cur-none" => [ +// everything disabled for current + "PHP" => $cur, + "with_http_libicu_dir" => "no", + "with_http_libidn_dir" => "no", + "with_http_libidn2_dir" => "no", + "with_http_libcurl_dir" => "no", + "with_http_libevent_dir" => "no", + "with_http_libbrotli_dir" => "no", +], +"cur-dbg-zts" => [ +// everything enabled for current, switching debug/zts + "PHP" => $cur, + "enable_debug", + "enable_zts", + "enable_iconv" => "yes", +], +"cur-cov" => [ +// once everything enabled for current, with coverage + "CFLAGS" => "'-O0 -g --coverage'", + "CXXFLAGS" => "'-O0 -g --coverage'", + "PHP" => $cur, + "enable_iconv" => "yes", + [ + // mutually exclusive + "with_http_libicu_dir", + "with_http_libidn_dir", + "with_http_libidn2_dir", + ], +]]); +foreach ($job as $id => $env) { + printf(" %s:\n", $id); + printf(" name: %s\n", $id); + if ($env["PHP"] == "master") { + printf(" continue-on-error: true\n"); + } + printf(" env:\n"); + foreach ($env as $key => $val) { + printf(" %s: %s\n", $key, $val); + } +?> + steps: + - uses: actions/checkout@v2 + - name: Install + run: | + sudo apt-get install -y \ + php-cli \ + php-pear \ + libcurl4-openssl-dev \ + libidn11-dev \ + libidn2-0-dev \ + libicu-dev \ + libevent-dev \ + libbrotli-dev + - name: Prepare + run: | + make -f scripts/ci/Makefile php || make -f scripts/ci/Makefile clean php + make -f scripts/ci/Makefile pecl PECL=m6w6/ext-raphf.git:raphf:master + - name: Build + run: | + make -f travis/pecl/Makefile ext PECL=http + - name: Test + run: | + make -f travis/pecl/Makefile test + + - name: Coverage + if: success() + run: | + cd src/.libs + bash <(curl -s https://codecov.io/bash) -X xcode -X coveragepy + + +