8
8
push :
9
9
10
10
jobs :
11
+ determine-php-matrix :
12
+ name : Figure out the packages we need to build
13
+ runs-on : ubuntu-latest
14
+
15
+ outputs :
16
+ php : ${{ steps.set-php-matrix.outputs.php }}
17
+
18
+ steps :
19
+ - name : Set up Git repository
20
+ uses : actions/checkout@v2
21
+ with :
22
+ fetch-depth : 1
23
+
24
+ - name : Install Nix
25
+ uses : cachix/install-nix-action@v16
26
+
27
+ - id : set-php-matrix
28
+ run : |
29
+ echo "::set-output name=php::$(
30
+ nix eval --json --impure \
31
+ --expr 'builtins.attrNames (import ./.).packages.x86_64-linux'
32
+ )"
33
+
11
34
build :
12
- name : ' PHP ${{ matrix.php.major }}.${{ matrix.php.minor }}'
13
- runs-on : ubuntu-20.04
35
+ name : " Build #${{ matrix.php }} on ${{ matrix.operating-system }}"
36
+ needs : [determine-php-matrix]
37
+ runs-on : ${{ matrix.operating-system }}
14
38
strategy :
15
- matrix :
16
- php :
17
- - major : 8
18
- minor : 1
19
- - major : 8
20
- minor : 0
21
- - major : 7
22
- minor : 4
23
- - major : 7
24
- minor : 3
25
- - major : 7
26
- minor : 2
27
- - major : 7
28
- minor : 1
29
- - major : 7
30
- minor : 0
31
- - major : 5
32
- minor : 6
33
39
# We want to fix failures individually.
34
40
fail-fast : false
41
+ matrix :
42
+ php : ${{fromJson(needs.determine-php-matrix.outputs.php)}}
43
+ operating-system : [ubuntu-latest, macOS-latest]
44
+ allow-failure : [php72]
45
+
35
46
steps :
36
- - uses : actions/checkout@v2
47
+ - name : Set up Git repository
48
+ uses : actions/checkout@v2
49
+ with :
50
+ fetch-depth : 1
37
51
38
52
- name : Install Nix
39
- uses : cachix/install-nix-action@v14
53
+ uses : cachix/install-nix-action@v16
40
54
41
55
- name : Set up Nix cache
42
56
uses : cachix/cachix-action@v10
43
57
with :
44
58
name : fossar
45
- authToken : ' ${{ secrets.CACHIX_AUTH_TOKEN }}'
59
+ authToken : " ${{ secrets.CACHIX_AUTH_TOKEN }}"
46
60
47
61
- name : Build PHP
48
- run : nix-build -A outputs.packages.x86_64-linux.php${{ matrix.php.major }}${{ matrix.php.minor }}
62
+ continue-on-error : ${{ matrix.php == matrix.allow-failure }}
63
+ run : nix build .#${{ matrix.php }}
49
64
50
65
- name : Build Imagick extension
51
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.imagick
66
+ run : nix build .# ${{ matrix.php }}.extensions.imagick
52
67
53
68
- name : Build Redis extension
54
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.redis
69
+ run : nix build .# ${{ matrix.php }}.extensions.redis
55
70
56
71
- name : Build Redis 3 extension
57
- if : ${{ matrix.php.major < 8 }}
58
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.redis3
72
+ continue-on-error : true
73
+ run : nix build .# ${{ matrix.php }}.extensions.redis3
59
74
60
75
- name : Build MySQL extension
61
- if : ${{ matrix.php.major < 7 }}
62
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.mysql
76
+ continue-on-error : true
77
+ run : nix build .# ${{ matrix.php }}.extensions.mysql
63
78
64
79
- name : Build Xdebug extension
65
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.xdebug
80
+ run : nix build .# ${{ matrix.php }}.extensions.xdebug
66
81
67
82
- name : Build Tidy extension
68
- run : nix- build -A outputs.packages.x86_64-linux.php ${{ matrix.php.major }}${{ matrix.php.minor }}.extensions.tidy
83
+ run : nix build .# ${{ matrix.php }}.extensions.tidy
69
84
70
85
- name : Check that composer PHAR works
86
+ continue-on-error : ${{ matrix.php == matrix.allow-failure }}
71
87
run : |
72
- nix-shell -E '
88
+ nix develop --impure --expr '
73
89
let
74
90
self = import ./.;
75
91
composer =
76
- self.outputs.packages.${builtins.currentSystem}.php ${{ matrix.php.major }}${{ matrix.php.minor }}.packages.composer;
92
+ self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.packages.composer;
77
93
pkgs = import self.inputs.nixpkgs { };
78
94
in
79
95
pkgs.mkShell {
80
96
packages = [
81
97
composer
82
98
];
83
99
}
84
- ' --run " composer --version"
100
+ ' -c composer --version
85
101
86
102
- name : Validate php.extensions.mysqli default unix socket path
87
103
run : |
88
- nix-shell -E '
104
+ nix develop --impure --expr '
89
105
let
90
106
self = import ./.;
91
107
php =
92
- self.outputs.packages.${builtins.currentSystem}.php ${{ matrix.php.major }}${{ matrix.php.minor }}.withExtensions
108
+ self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.withExtensions
93
109
({ all, ... }: [ all.mysqli ]);
94
110
pkgs = import self.inputs.nixpkgs { };
95
111
in
@@ -98,15 +114,15 @@ jobs:
98
114
php
99
115
];
100
116
}
101
- ' --run " php -r \ "echo ini_get('mysqli.default_socket') . PHP_EOL;\ " | grep /run/mysqld/mysqld.sock"
117
+ ' -c php -r "echo ini_get('mysqli.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
102
118
103
119
- name : Validate php.extensions.pdo_mysql default unix socket path
104
120
run : |
105
- nix-shell -E '
121
+ nix develop --impure --expr '
106
122
let
107
123
self = import ./.;
108
124
php =
109
- self.outputs.packages.${builtins.currentSystem}.php ${{ matrix.php.major }}${{ matrix.php.minor }}.withExtensions
125
+ self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.withExtensions
110
126
({ all, ... }: [ all.pdo_mysql ]);
111
127
pkgs = import self.inputs.nixpkgs { };
112
128
in
@@ -115,4 +131,4 @@ jobs:
115
131
php
116
132
];
117
133
}
118
- ' --run " php -r \ "echo ini_get('pdo_mysql.default_socket') . PHP_EOL;\ " | grep /run/mysqld/mysqld.sock"
134
+ ' -c php -r "echo ini_get('pdo_mysql.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
0 commit comments