Skip to content
Merged
Show file tree
Hide file tree
Changes from 19 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
153 changes: 153 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
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
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
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
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
PDO_OCI_TEST_DSN: oci:dbname=0.0.0.0:1518/FREEPDB1;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
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
Loading