Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
176 changes: 176 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
name: CI

on:
push:
pull_request:
workflow_dispatch:
release:
types: [created]

jobs:
linux:
strategy:
fail-fast: false
matrix:
include:
- version: 8.3
branch: PHP-8.3
- version: 8.4
branch: PHP-8.4
- version: 8.5
branch: master
services:
oracle-11:
image: wnameless/oracle-xe-11g-r2
ports:
- 1511:1521
env:
ORACLE_ALLOW_REMOTE: true
oracle-18:
image: gvenzl/oracle-xe:18-slim-faststart
ports:
- 1518:1521
env:
ORACLE_PASSWORD: my_pass_18
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10
oracle-21:
image: gvenzl/oracle-xe:21-slim-faststart
ports:
- 1521:1521
env:
ORACLE_PASSWORD: my_pass_21
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10
oracle-23:
image: gvenzl/oracle-free:23-slim
ports:
- 1523:1521
env:
ORACLE_PASSWORD: my_pass_23
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10
runs-on: ubuntu-latest
steps:
- name: Setup dependencies
run: |
mkdir -p /opt/oracle
for pkg in sdk basiclite; do
curl --no-progress-meter -O https://download.oracle.com/otn_software/linux/instantclient/instantclient-$pkg-linuxx64.zip
unzip -q -o instantclient-$pkg-linuxx64.zip -d /opt/oracle
done
mv /opt/oracle/instantclient_* /opt/oracle/instantclient
sudo ln -sf /opt/oracle/instantclient/*.so* /usr/lib
sudo apt-get -q update && sudo apt-get install libaio-dev -y
sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 >/dev/null 2>&1 || true
# fix debug build warning: zend_signal: handler was replaced for signal (2) after startup
echo DISABLE_INTERRUPT=on > /opt/oracle/instantclient/network/admin/sqlnet.ora
- name: Checkout
uses: actions/checkout@v4
- name: Checkout php-src
uses: actions/checkout@v4
with:
repository: php/php-src
ref: ${{ matrix.branch }}
path: php-src
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{matrix.version}}
- name: Build
run: |
phpize
./configure --with-php-config=$(command -v php-config) --with-pdo-oci=instantclient,/opt/oracle/instantclient
make -j$(nproc)
sudo make install
echo 'extension=pdo_oci.so' | sudo tee /etc/php/${{ matrix.version }}/mods-available/pdo_oci.ini
sudo phpenmod -v ${{ matrix.version }} pdo_oci
php --ri pdo_oci
- name: Run tests /w Oracle 11 (for PHP 8.3 only)
# https://github.com/php/php-src/pull/18734
# https://github.com/php/pecl-database-pdo_oci/pull/16#discussion_r2119810891
if: matrix.version == '8.3'
run: php php-src/run-tests.php --show-diff --show-slow 1000 --set-timeout 120 tests
env:
PDO_TEST_DIR: ${{ github.workspace }}/php-src/ext/pdo/tests
PDO_OCI_TEST_DIR: ${{ github.workspace }}/tests
PDO_OCI_TEST_USER: system
PDO_OCI_TEST_PASS: oracle
PDO_OCI_TEST_DSN: oci:dbname=0.0.0.0:1511/XE;charset=AL32UTF8
- name: Run tests /w Oracle 18
if: success() || failure()
run: php php-src/run-tests.php --show-diff --show-slow 1000 --set-timeout 120 tests
env:
PDO_TEST_DIR: ${{ github.workspace }}/php-src/ext/pdo/tests
PDO_OCI_TEST_DIR: ${{ github.workspace }}/tests
PDO_OCI_TEST_USER: system
PDO_OCI_TEST_PASS: my_pass_18
PDO_OCI_TEST_DSN: oci:dbname=0.0.0.0:1518/XE;charset=AL32UTF8
- name: Run tests /w Oracle 21
if: success() || failure()
run: php php-src/run-tests.php --show-diff --show-slow 1000 --set-timeout 120 tests
env:
PDO_TEST_DIR: ${{ github.workspace }}/php-src/ext/pdo/tests
PDO_OCI_TEST_DIR: ${{ github.workspace }}/tests
PDO_OCI_TEST_USER: system
PDO_OCI_TEST_PASS: my_pass_21
PDO_OCI_TEST_DSN: oci:dbname=0.0.0.0:1521/XE;charset=AL32UTF8
- name: Run tests /w Oracle 23
if: success() || failure()
run: php php-src/run-tests.php --show-diff --show-slow 1000 --set-timeout 120 tests
env:
PDO_TEST_DIR: ${{ github.workspace }}/php-src/ext/pdo/tests
PDO_OCI_TEST_DIR: ${{ github.workspace }}/tests
PDO_OCI_TEST_USER: system
PDO_OCI_TEST_PASS: my_pass_23
PDO_OCI_TEST_DSN: oci:dbname=0.0.0.0:1523/FREEPDB1;charset=AL32UTF8

windows-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.extension-matrix.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create matrix
id: extension-matrix
uses: php/php-windows-builder/extension-matrix@v1
with:
php-version-list: '8.3, 8.4, master'

windows:
needs: windows-matrix
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{fromJson(needs.windows-matrix.outputs.matrix)}}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build
uses: php/php-windows-builder/extension@v1
with:
php-version: ${{ matrix.php-version }}
arch: ${{ matrix.arch }}
ts: ${{ matrix.ts }}
libs: instantclient

windows-release:
runs-on: ubuntu-latest
needs: windows
if: ${{ github.event_name == 'release' }}
steps:
- name: Upload release artifact
uses: php/php-windows-builder/release@v1
with:
release: ${{ github.event.release.tag_name }}
token: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions tests/bug44301.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ try {
$db = null;
?>
--EXPECTF--
SQLSTATE[HY000]: General error: 942 OCIStmtExecute: ORA-00942: table or view %sdoes not exist
(%s%epdo_oci%eoci_statement.c:%d)
SQLSTATE[HY000]: General error: 942 OCIStmtExecute: ORA-00942: table or view %Sdoes not exist
(%soci_statement.c:%d)
2 changes: 1 addition & 1 deletion tests/bug_33707.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ array(3) {
[1]=>
int(942)
[2]=>
string(%d) "OCIStmtExecute: ORA-00942: table or view %sdoes not exist
string(%d) "OCIStmtExecute: ORA-00942: table or view %Sdoes not exist
(%s:%d)"
}
2 changes: 2 additions & 0 deletions tests/pdo_oci_stmt_getcolumnmeta.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ pdo_oci
<?php
require(getenv('PDO_TEST_DIR').'/pdo_test.inc');
PDOTest::skip();
$db = PDOTest::factory();
if (version_compare($db->getAttribute(PDO::ATTR_SERVER_VERSION), 12) < 0) die('xfail CI is failing with Oracle XE 11g');
?>
--FILE--
<?php
Expand Down