xref: /PHP-8.2/.github/workflows/push.yml (revision b7ee484f)
1name: Push
2on:
3  push:
4    paths-ignore:
5      - docs/**
6      - NEWS
7      - UPGRADING
8      - UPGRADING.INTERNALS
9      - '**/README.*'
10      - CONTRIBUTING.md
11      - CODING_STANDARDS.md
12      - .cirrus.yml
13      - .travis.yml
14      - travis/**
15      - .circleci/**
16    branches:
17      - PHP-7.4
18      - PHP-8.0
19      - PHP-8.1
20      - PHP-8.2
21      - master
22  pull_request:
23    paths-ignore:
24      - docs/**
25      - NEWS
26      - UPGRADING
27      - UPGRADING.INTERNALS
28      - '**/README.*'
29      - CONTRIBUTING.md
30      - CODING_STANDARDS.md
31      - .cirrus.yml
32      - .travis.yml
33      - travis/**
34      - .circleci/**
35    branches:
36      - '**'
37concurrency:
38  group: ${{ github.workflow }}-${{ github.event.pull_request.url || github.run_id }}
39  cancel-in-progress: true
40env:
41  CC: ccache gcc
42  CXX: ccache g++
43jobs:
44  LINUX_X64:
45    if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
46    services:
47      mysql:
48        image: mysql:8.3
49        ports:
50          - 3306:3306
51        env:
52          MYSQL_DATABASE: test
53          MYSQL_ROOT_PASSWORD: root
54      postgres:
55        image: postgres
56        ports:
57          - 5432:5432
58        env:
59          POSTGRES_USER: postgres
60          POSTGRES_PASSWORD: postgres
61          POSTGRES_DB: test
62    strategy:
63      fail-fast: false
64      matrix:
65        include:
66          - debug: true
67            zts: false
68          - debug: false
69            zts: true
70    name: "LINUX_X64_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}"
71    runs-on: ubuntu-20.04
72    steps:
73      - name: git checkout
74        uses: actions/checkout@v4
75      - name: Create MSSQL container
76        uses: ./.github/actions/setup-mssql
77      - name: Create Oracle container
78        uses: ./.github/actions/setup-oracle
79      - name: Setup Caddy server
80        uses: ./.github/actions/setup-caddy
81      - name: apt
82        uses: ./.github/actions/apt-x64
83      - name: ccache
84        uses: hendrikmuhs/ccache-action@v1.2
85        with:
86          # This duplicates the "job.name" expression above because
87          # GitHub has no way to query the job name (github.job is the
88          # job id, not the job name)
89          key: "LINUX_X64_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}-${{hashFiles('main/php_version.h')}}"
90          append-timestamp: false
91          save: ${{ github.event_name != 'pull_request' }}
92      - name: ./configure
93        uses: ./.github/actions/configure-x64
94        with:
95          configurationParameters: >-
96            --${{ matrix.debug && 'enable' || 'disable' }}-debug
97            --${{ matrix.zts && 'enable' || 'disable' }}-zts
98      - name: make
99        run: make -j$(/usr/bin/nproc) >/dev/null
100      - name: make install
101        uses: ./.github/actions/install-linux
102      - name: Setup
103        uses: ./.github/actions/setup-x64
104      - name: Test
105        uses: ./.github/actions/test-linux
106      - name: Test Tracing JIT
107        uses: ./.github/actions/test-linux
108        with:
109          jitType: tracing
110          runTestsParameters: >-
111            -d zend_extension=opcache.so
112            -d opcache.enable_cli=1
113      - name: Verify generated files are up to date
114        uses: ./.github/actions/verify-generated-files
115  LINUX_X32:
116    name: LINUX_X32_DEBUG_ZTS
117    runs-on: ubuntu-latest
118    container:
119      image: ubuntu:20.04
120    env:
121      MYSQL_TEST_HOST: mysql
122      PDO_MYSQL_TEST_DSN: mysql:host=mysql;dbname=test
123      PDO_MYSQL_TEST_HOST: mysql
124    services:
125      mysql:
126        image: mysql:8.3
127        ports:
128          - 3306:3306
129        env:
130          MYSQL_DATABASE: test
131          MYSQL_ROOT_PASSWORD: root
132    steps:
133      - name: git checkout
134        uses: actions/checkout@v4
135      - name: apt
136        uses: ./.github/actions/apt-x32
137      - name: ccache
138        uses: hendrikmuhs/ccache-action@v1.2
139        with:
140          key: "${{github.job}}-${{hashFiles('main/php_version.h')}}"
141          append-timestamp: false
142      - name: ./configure
143        uses: ./.github/actions/configure-x32
144        with:
145          configurationParameters: >-
146            --enable-debug
147            --enable-zts
148      - name: make
149        run: make -j$(/usr/bin/nproc) >/dev/null
150      - name: make install
151        uses: ./.github/actions/install-linux-x32
152      - name: Test Tracing JIT
153        uses: ./.github/actions/test-linux
154        with:
155          jitType: tracing
156          runTestsParameters: >-
157            -d zend_extension=opcache.so
158            -d opcache.enable_cli=1
159  MACOS_DEBUG_NTS:
160    if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
161    runs-on: macos-12
162    steps:
163      - name: git checkout
164        uses: actions/checkout@v4
165      - name: brew
166        uses: ./.github/actions/brew
167      - name: ccache
168        uses: hendrikmuhs/ccache-action@v1.2
169        with:
170          key: "${{github.job}}-${{hashFiles('main/php_version.h')}}"
171          append-timestamp: false
172          save: ${{ github.event_name != 'pull_request' }}
173      - name: ./configure
174        uses: ./.github/actions/configure-macos
175        with:
176          configurationParameters: --enable-debug --disable-zts
177      - name: make
178        run: |-
179          export PATH="/usr/local/opt/bison/bin:$PATH"
180          make -j$(sysctl -n hw.logicalcpu) >/dev/null
181      - name: make install
182        run: sudo make install
183      - name: Test Tracing JIT
184        uses: ./.github/actions/test-macos
185        with:
186          jitType: tracing
187          runTestsParameters: >-
188            -d zend_extension=opcache.so
189            -d opcache.enable_cli=1
190            -d opcache.protect_memory=1
191      - name: Verify generated files are up to date
192        uses: ./.github/actions/verify-generated-files
193  WINDOWS:
194    if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
195    name: WINDOWS_X64_ZTS
196    runs-on: windows-2019
197    env:
198      PHP_BUILD_CACHE_BASE_DIR: C:\build-cache
199      PHP_BUILD_OBJ_DIR: C:\obj
200      PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk
201      PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0
202      PHP_BUILD_CRT: vs16
203      PLATFORM: x64
204      THREAD_SAFE: "1"
205      INTRINSICS: AVX2
206      PARALLEL: -j2
207      OPCACHE: "1"
208    steps:
209      - name: git config
210        run: git config --global core.autocrlf false && git config --global core.eol lf
211      - name: git checkout
212        uses: actions/checkout@v4
213      - name: Setup
214        uses: ./.github/actions/setup-windows
215      - name: Build
216        run: .github/scripts/windows/build.bat
217      - name: Test
218        run: .github/scripts/windows/test.bat
219