From 65c4d34bccd2383138ab7169189709676f0d3db3 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 17:51:01 +0200 Subject: [PATCH 01/17] Composer, update zephir to 0.16.0 and zephir-parser to 1.5.0 --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d87b68d7..16c64f85 100644 --- a/composer.json +++ b/composer.json @@ -15,8 +15,8 @@ }, "require-dev": { "phpunit/phpunit": ">=8.0.0", - "iceframework/zephir-parser": "1.3.5", - "phalcon/zephir": "0.13.0", + "iceframework/zephir-parser": "1.5.0", + "phalcon/zephir": "0.16.0", "mongodb/mongodb": "^1.2.0" }, "scripts": { From bc8bac976fbcb1f5bac2e41a3eeacc34c5ed5a77 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 19:03:02 +0200 Subject: [PATCH 02/17] Add github actions workflow --- .github/workflows/main.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..d0896e7a --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,28 @@ +on: + push: + pull_request: + +jobs: + build: + name: Build PHP ${{ matrix.php }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + php: ['7.4', '8.0', '8.1'] + include: + - name: focal + os: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: gettext, gd, intl, json, mbstring + tools: pecl, phpize, php-config + env: + COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + From 9fb18282414e77a0827b92e75da2cdf85a3d5254 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 19:08:00 +0200 Subject: [PATCH 03/17] Add name --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d0896e7a..005b297f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,3 +1,5 @@ +name: Ice Framework CI + on: push: pull_request: From 2c2d9a94d3e23f63673f65d1f0517a59b3d8bad0 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 19:18:05 +0200 Subject: [PATCH 04/17] Add compile step --- .github/workflows/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 005b297f..fa822610 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,3 +28,12 @@ jobs: env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: composer install --prefer-source --no-scripts + + - name: Compile + shell: bash + run: | + (cd vendor/iceframework/zephir-parser; ./install; phpenv config-add tests/ci/zephir_parser.ini) + php -d memory_limit=512M ./vendor/bin/zephir generate + (mkdir generated; cp -a ext/. generated) + (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && make install && phpenv config-add ../tests/ci/ice.ini) From 6c2915092bb4a7efc4dc9aa1ef015c8e92a5a34d Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 19:26:14 +0200 Subject: [PATCH 05/17] Install re2c --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fa822610..8ca024df 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,6 +29,7 @@ jobs: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: composer install --prefer-source --no-scripts + - run: sudo apt-get install -y gdb re2c - name: Compile shell: bash From 202e1809f9c1057a8dd33f2699f29a5cf4e622a4 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 22:00:59 +0200 Subject: [PATCH 06/17] Copy parser --- .github/workflows/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8ca024df..2f60e092 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,8 @@ jobs: strategy: fail-fast: false matrix: - php: ['7.4', '8.0', '8.1'] + # php: ['7.4', '8.0', '8.1'] + php: ['8.0'] include: - name: focal os: ubuntu-20.04 @@ -34,7 +35,7 @@ jobs: - name: Compile shell: bash run: | - (cd vendor/iceframework/zephir-parser; ./install; phpenv config-add tests/ci/zephir_parser.ini) + (cd vendor/iceframework/zephir-parser; ./install; cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/) php -d memory_limit=512M ./vendor/bin/zephir generate (mkdir generated; cp -a ext/. generated) (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && make install && phpenv config-add ../tests/ci/ice.ini) From 02731561362b8daef9d44512fc35549ddbb8410d Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 22:05:26 +0200 Subject: [PATCH 07/17] Sudo --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2f60e092..93c94185 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,7 +35,7 @@ jobs: - name: Compile shell: bash run: | - (cd vendor/iceframework/zephir-parser; ./install; cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/) + (cd vendor/iceframework/zephir-parser; ./install; sudo cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/) php -d memory_limit=512M ./vendor/bin/zephir generate (mkdir generated; cp -a ext/. generated) - (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && make install && phpenv config-add ../tests/ci/ice.ini) + (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/) From 307cb178229601581e2dfd9d7e10870ca9c6b320 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 22:13:38 +0200 Subject: [PATCH 08/17] Run tests --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 93c94185..15bf0021 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,4 +38,5 @@ jobs: (cd vendor/iceframework/zephir-parser; ./install; sudo cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/) php -d memory_limit=512M ./vendor/bin/zephir generate (mkdir generated; cp -a ext/. generated) - (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/) + (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && sudo make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/) + ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all From fdefeb044cd6daf62ed5cb3cd3f168d329161e0d Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 22:25:12 +0200 Subject: [PATCH 09/17] Update step names --- .github/workflows/main.yml | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 15bf0021..43cf4451 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,14 +29,24 @@ jobs: env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: composer install --prefer-source --no-scripts - - run: sudo apt-get install -y gdb re2c + - name: Apt install + run: sudo apt-get install -y gdb re2c - - name: Compile + - name: Composer install + run: composer install --prefer-source --no-scripts + + - name: Compile Zephir Parser + shell: bash + run: cd vendor/iceframework/zephir-parser; ./install; sudo cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/ + + - name: Generate Ice + shell: bash + run: php -d memory_limit=512M ./vendor/bin/zephir generate; mkdir generated; cp -a ext/. generated + + - name: Compile Ice + shell: bash + run: cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && sudo make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/ + + - name: Test Ice shell: bash - run: | - (cd vendor/iceframework/zephir-parser; ./install; sudo cp tests/ci/zephir_parser.ini /etc/php/${{ matrix.php }}/cli/conf.d/) - php -d memory_limit=512M ./vendor/bin/zephir generate - (mkdir generated; cp -a ext/. generated) - (cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && sudo make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/) - ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all + run: ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all From de1d1ca28641e196a820313f7faf696b12e962e6 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 29 May 2022 22:35:43 +0200 Subject: [PATCH 10/17] Add mysql service --- .github/workflows/main.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 43cf4451..113a25a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,6 +16,14 @@ jobs: include: - name: focal os: ubuntu-20.04 + services: + mysql: + image: mysql:5.7 + ports: + - 3306 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: ice_test steps: - uses: actions/checkout@v2 @@ -49,4 +57,6 @@ jobs: - name: Test Ice shell: bash - run: ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all + run: | + echo "source tests/ci/ice_test.sql;" | mysql -u root ice_test + ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all From 4eaec029128e8e89e9664300d836059583b7ace9 Mon Sep 17 00:00:00 2001 From: mruz Date: Mon, 30 May 2022 18:01:42 +0200 Subject: [PATCH 11/17] Use local ip --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 113a25a6..bec8286d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,7 +20,7 @@ jobs: mysql: image: mysql:5.7 ports: - - 3306 + - 3306:3306 env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ice_test @@ -58,5 +58,5 @@ jobs: - name: Test Ice shell: bash run: | - echo "source tests/ci/ice_test.sql;" | mysql -u root ice_test + echo "source tests/ci/ice_test.sql;" | mysql -h 127.0.0.1 -u root ice_test ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all From 3824d4a4cf9a46f277937e88ac060382a718cbe6 Mon Sep 17 00:00:00 2001 From: mruz Date: Mon, 30 May 2022 18:15:49 +0200 Subject: [PATCH 12/17] Add mongodb service --- .github/workflows/main.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bec8286d..bcb38208 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,6 +24,14 @@ jobs: env: MYSQL_ALLOW_EMPTY_PASSWORD: yes MYSQL_DATABASE: ice_test + mongodb: + image: mongo + env: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: password + MONGO_INITDB_DATABASE: ice_test + ports: + - 27017:27017 steps: - uses: actions/checkout@v2 @@ -32,7 +40,7 @@ jobs: uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: gettext, gd, intl, json, mbstring + extensions: gettext, gd, intl, json, mbstring, pdo, mysql, mongodb tools: pecl, phpize, php-config env: COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -55,8 +63,12 @@ jobs: shell: bash run: cd ext; export CFLAGS="-g3 -O1 -fno-delete-null-pointer-checks -Wall -fvisibility=hidden -DZEPHIR_RELEASE=1"; phpize && ./configure --enable-ice && make -j2 && sudo make install && sudo cp ../tests/ci/ice.ini /etc/php/${{ matrix.php }}/cli/conf.d/ - - name: Test Ice + - name: Create test databases shell: bash run: | echo "source tests/ci/ice_test.sql;" | mysql -h 127.0.0.1 -u root ice_test - ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all + mongo ice_test --eval 'db.createUser({user:"root",pwd:"password",roles:["readWrite"]});' + + - name: Test Ice + shell: bash + run: ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all From 22b6dd341851d8a8cf0b5ef1c0625a721ffd123f Mon Sep 17 00:00:00 2001 From: mruz Date: Tue, 31 May 2022 06:59:14 +0200 Subject: [PATCH 13/17] Db is already created --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bcb38208..329d190e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -67,7 +67,6 @@ jobs: shell: bash run: | echo "source tests/ci/ice_test.sql;" | mysql -h 127.0.0.1 -u root ice_test - mongo ice_test --eval 'db.createUser({user:"root",pwd:"password",roles:["readWrite"]});' - name: Test Ice shell: bash From 50d011ee6469f2006a623b4a6197795d986c9d9b Mon Sep 17 00:00:00 2001 From: mruz Date: Tue, 31 May 2022 18:13:24 +0200 Subject: [PATCH 14/17] Use local IP --- tests/ci/ice_test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ci/ice_test.php b/tests/ci/ice_test.php index 4ba205a4..6c35c984 100644 --- a/tests/ci/ice_test.php +++ b/tests/ci/ice_test.php @@ -1,7 +1,7 @@ [ 'type' => 'mysql', - 'host' => 'localhost', + 'host' => '127.0.0.1', 'port' => 3306, 'user' => 'root', 'password' => '', @@ -12,7 +12,7 @@ ], 'mongodb' => [ 'type' => 'mongodb', - 'host' => 'localhost', + 'host' => '127.0.0.1', 'port' => 27017, 'user' => 'root', 'password' => 'password', From c57e05bd8fe7ef46aa7575ba63fde599582c8703 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 12 Jun 2022 15:43:23 +0200 Subject: [PATCH 15/17] Add auth source --- tests/ci/ice_test.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ci/ice_test.php b/tests/ci/ice_test.php index 6c35c984..eaf03a2a 100644 --- a/tests/ci/ice_test.php +++ b/tests/ci/ice_test.php @@ -18,7 +18,8 @@ 'password' => 'password', 'name' => 'ice_test', 'options' => [ - 'authMechanism' => 'SCRAM-SHA-1', + 'authMechanism' => 'SCRAM-SHA-256', + 'authSource' => 'admin' ], ], 'auth' => [ From c09c8302b47f61ecdcbfc9929d686efbc1d89631 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 12 Jun 2022 15:49:40 +0200 Subject: [PATCH 16/17] Try php 8.1 --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 329d190e..30732bfd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,8 +11,7 @@ jobs: strategy: fail-fast: false matrix: - # php: ['7.4', '8.0', '8.1'] - php: ['8.0'] + php: ['7.4', '8.0', '8.1'] include: - name: focal os: ubuntu-20.04 From 10b353193a5b3d46c59e230fff767e05fcff7bd7 Mon Sep 17 00:00:00 2001 From: mruz Date: Sun, 12 Jun 2022 16:58:52 +0200 Subject: [PATCH 17/17] Create artifacts --- .github/workflows/main.yml | 22 ++++++++++++++++++++++ id_pgp.enc | Bin 6736 -> 6736 bytes id_rsa.enc | Bin 3264 -> 3264 bytes 3 files changed, 22 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 30732bfd..5a119b0a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -70,3 +70,25 @@ jobs: - name: Test Ice shell: bash run: ./vendor/bin/phpunit --configuration tests/phpunit.xml --testsuite=all + + - name: Create artifacts + if: steps.build.outcome == 'success' && github.repository_owner == 'ice' && github.ref == 'refs/heads/dev' + run: | + if [[ "${{ matrix.php }}" = "8.1" ]]; then + openssl enc -d -aes-256-cbc -in id_rsa.enc -out ~/.ssh/id_rsa -pbkdf2 -k "$SECRET_KEY"; chmod 600 ~/.ssh/id_rsa + openssl enc -d -aes-256-cbc -in id_pgp.enc -out ~/.gnupg/id_pgp -pbkdf2 -k "$SECRET_KEY"; chmod 600 ~/.gnupg/id_pgp; gpg --allow-secret-key-import --import ~/.gnupg/id_pgp + + git config push.default simple + git config commit.gpgsign true + git config --global user.email "info@iceframework.org" + git config --global user.name "Ice Framework" + git config --global user.signingkey 781C2FB7 + git remote set-url origin git@github.com:ice/framework.git + + export ZEPHIR_TARGET="php8" + export SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-7` + git checkout dev + rm -rf build/$ZEPHIR_TARGET/; mkdir -p build/$ZEPHIR_TARGET; cp -a generated/. build/$ZEPHIR_TARGET + git add -A build/$ZEPHIR_TARGET; git commit -m "$ZEPHIR_TARGET, $SHORT_SHA: regenerate ice sources [ci skip]" build/$ZEPHIR_TARGET' + git fetch && git rebase --autostash FETCH_HEAD && git push + fi \ No newline at end of file diff --git a/id_pgp.enc b/id_pgp.enc index 0965473ad372f14880b92aa8475e1329304bc58b..ba982893f84abc5a616a69139f72bed7c07c64a2 100644 GIT binary patch literal 6736 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 literal 6736 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 diff --git a/id_rsa.enc b/id_rsa.enc index 666e88214c5819773a2c364386a423a34cd7f65e..1394fe152d9d5dbd8bd00d562f5d495c6a44529a 100644 GIT binary patch literal 3264 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 literal 3264 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