Skip to content

Commit

Permalink
ci: trigger builds on macOS
Browse files Browse the repository at this point in the history
  • Loading branch information
drupol committed Jan 21, 2023
1 parent d66a484 commit 2ca5c87
Showing 1 changed file with 88 additions and 39 deletions.
127 changes: 88 additions & 39 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,73 +7,122 @@ on:
pull_request:

jobs:
build:
name: 'PHP ${{ matrix.php.branch }}'
determine-php-matrix:
name: Figure out the packages we need to build
runs-on: ubuntu-latest

outputs:
php: ${{ steps.set-php-matrix.outputs.php }}

steps:
- name: Set up Git repository
uses: actions/checkout@v3

- name: Install Nix
uses: cachix/install-nix-action@v18

- id: set-php-matrix
run: |
echo "::set-output name=php::$(
nix eval --json --impure \
--expr 'builtins.attrNames (import ./.).packages.x86_64-linux'
)"
build:
name: "Build #${{ matrix.php }} on ${{ matrix.operating-system }}"
needs: [determine-php-matrix]
runs-on: ${{ matrix.operating-system }}
strategy:
matrix:
php:
- branch: '8.2'
- branch: '8.1'
- branch: '8.0'
- branch: '7.4'
- branch: '7.3'
- branch: '7.2'
- branch: '7.1'
- branch: '7.0'
- branch: '5.6'
# We want to fix failures individually.
fail-fast: false
matrix:
php: ${{fromJson(needs.determine-php-matrix.outputs.php)}}
operating-system: [ubuntu-latest, macOS-latest]

steps:
- uses: actions/checkout@v3
- name: Set up Git repository
uses: actions/checkout@v2
with:
fetch-depth: 1

- name: Install Nix
uses: cachix/install-nix-action@v18
uses: cachix/install-nix-action@v16

- name: Set up Nix cache
uses: cachix/cachix-action@v12
uses: cachix/cachix-action@v10
with:
name: fossar
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

- name: Set job parameters
id: params
run: |
branch=${{ matrix.php.branch }}
major=${branch%%.*}
minor=${branch#*.}
attr=php$major$minor
echo "major=$major" >> $GITHUB_OUTPUT
echo "attr=$attr" >> $GITHUB_OUTPUT
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"

- name: Build PHP
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-php
run: nix build .#${{ matrix.php }}

- name: Build Imagick extension
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-imagick
run: nix build .#${{ matrix.php }}.extensions.imagick

- name: Build Redis extension
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-redis
run: nix build .#${{ matrix.php }}.extensions.redis

- name: Build Redis 3 extension
if: ${{ steps.params.outputs.major < 8 }}
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-redis3
continue-on-error: true
run: nix build .#${{ matrix.php }}.extensions.redis3

- name: Build MySQL extension
if: ${{ steps.params.outputs.major < 7 }}
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-mysql
continue-on-error: true
run: nix build .#${{ matrix.php }}.extensions.mysql

- name: Build Xdebug extension
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-xdebug
run: nix build .#${{ matrix.php }}.extensions.xdebug

- name: Build Tidy extension
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-tidy
run: nix build .#${{ matrix.php }}.extensions.tidy

- name: Check that composer PHAR works
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-composer-phar
run: |
nix develop --impure --expr '
let
self = import ./.;
composer =
self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.packages.composer;
pkgs = import self.inputs.nixpkgs { };
in
pkgs.mkShell {
packages = [
composer
];
}
' -c composer --version
- name: Validate php.extensions.mysqli default unix socket path
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-mysqli-socket-path
run: |
nix develop --impure --expr '
let
self = import ./.;
php =
self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.withExtensions
({ all, ... }: [ all.mysqli ]);
pkgs = import self.inputs.nixpkgs { };
in
pkgs.mkShell {
packages = [
php
];
}
' -c php -r "echo ini_get('mysqli.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock
- name: Validate php.extensions.pdo_mysql default unix socket path
run: nix-build -A outputs.checks.x86_64-linux.${{ steps.params.outputs.attr }}-pdo_mysql-socket-path
run: |
nix develop --impure --expr '
let
self = import ./.;
php =
self.outputs.packages.${builtins.currentSystem}.${{ matrix.php }}.withExtensions
({ all, ... }: [ all.pdo_mysql ]);
pkgs = import self.inputs.nixpkgs { };
in
pkgs.mkShell {
packages = [
php
];
}
' -c php -r "echo ini_get('pdo_mysql.default_socket') . PHP_EOL;" | grep /run/mysqld/mysqld.sock

0 comments on commit 2ca5c87

Please sign in to comment.