1+ name : " [Windows] Build Phalcon"
2+ on : [push, pull_request]
3+
4+ jobs :
5+ windows :
6+ runs-on : windows-latest
7+ name : " Build Phalcon (PHP ${{matrix.php}}-${{matrix.ts}}-${{matrix.arch}})"
8+ defaults :
9+ run :
10+ shell : cmd
11+ strategy :
12+ fail-fast : false
13+ matrix :
14+ php : ["8.0","8.1","8.2","8.3"]
15+ arch : [x64,x86]
16+ ts : [nts,ts]
17+ experimental : [false]
18+ steps :
19+ - name : Checkout Phalcon
20+ uses : actions/checkout@v4
21+
22+ - name : Extract Phalcon Version
23+ shell : powershell
24+ run : |
25+ chcp 65001
26+ $r = Select-String -Path build/phalcon/php_phalcon.h -Pattern 'PHP_PHALCON_VERSION\s+"(.*)"'
27+ $s = $r.Matches[0].Groups[1]
28+ echo "$s"
29+ $PhalconVersion = 'PHALCON_VERSION=' + $s
30+ echo $PhalconVersion >> $env:GITHUB_ENV
31+
32+ - name : Setup PHP
33+ id : setup-php
34+ 35+ with :
36+ version : ${{matrix.php}}
37+ arch : ${{matrix.arch}}
38+ ts : ${{matrix.ts}}
39+ deps : zlib
40+
41+ - name : Generate build folder
42+ run : |
43+ cd build/
44+ php gen-build.php
45+
46+ - name : Enable Developer Command Prompt
47+ uses : ilammy/msvc-dev-cmd@v1
48+ with :
49+ arch : ${{matrix.arch}}
50+ toolset : ${{steps.setup-php.outputs.toolset}}
51+
52+ - name : Phpize
53+ run : |
54+ cd build/phalcon/
55+ phpize
56+
57+ - name : Configure
58+ run : |
59+ cd build/phalcon/
60+ ./configure --enable-phalcon --with-prefix=${{steps.setup-php.outputs.prefix}}
61+
62+ - name : Make
63+ run : |
64+ cd build/phalcon/
65+ nmake
66+
67+ - name : Define Phalcon Module Env
68+ shell : powershell
69+ run : |
70+ chcp 65001
71+
72+ $dir = (Get-Location).Path + '\build\phalcon\'
73+ if ('x64' -eq '${{matrix.arch}}') { $dir = $dir + 'x64\' }
74+ $dir = $dir + 'Release'
75+ if ('ts' -eq '${{matrix.ts}}') { $dir = $dir + '_TS' }
76+ $phalconDllOpt = 'TEST_PHP_ARGS=-n -d zend_extension=' + $dir + '\php_phalcon.dll'
77+ echo $phalconDllOpt >> $env:GITHUB_ENV
78+
79+ $artifactName = 'php_phalcon-php${{matrix.php}}'
80+
81+ if ('nts' -ne '${{matrix.ts}}') { $artifactName = $artifactName + '-ts' }
82+ if ('nts' -eq '${{matrix.ts}}') { $artifactName = $artifactName + '-nts' }
83+
84+ $artifactName = $artifactName + '-windows'
85+
86+ if ('8.0' -eq '${{matrix.php}}') { $artifactName = $artifactName + '-vs16' }
87+ if ('8.1' -eq '${{matrix.php}}') { $artifactName = $artifactName + '-vs16' }
88+ if ('8.2' -eq '${{matrix.php}}') { $artifactName = $artifactName + '-vs16' }
89+ if ('8.3' -eq '${{matrix.php}}') { $artifactName = $artifactName + '-vs16' }
90+
91+ if ('x64' -eq '${{matrix.arch}}') { $artifactName = $artifactName + '-x64' }
92+
93+ $phalconArtifactName = "ARTIFACT_NAME=" + $artifactName
94+ echo $phalconArtifactName >> $env:GITHUB_ENV
95+
96+ $from = $dir + '\php_phalcon.dll'
97+ $to = '.\php_phalcon.dll'
98+ Copy-Item $from -Destination $to
99+ $phalconArtifact = "ARTIFACT=" + '.\php_phalcon.dll'
100+ echo $phalconArtifact >> $env:GITHUB_ENV
101+
102+ - name : Upload artifacts
103+ uses : actions/upload-artifact@v4
104+ with :
105+ name : ${{env.ARTIFACT_NAME}}
106+ path : |
107+ ${{env.ARTIFACT}}
108+ LICENSE.txt
0 commit comments