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
+ uses : php/setup-php-sdk@v0.8
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