75 lines
2.1 KiB
YAML
75 lines
2.1 KiB
YAML
# Copyright 2022 Google LLC
|
|
#
|
|
# Use of this source code is governed by a BSD-style
|
|
# license that can be found in the LICENSE file or at
|
|
# https://developers.google.com/open-source/licenses/bsd
|
|
|
|
# A workflow to test building in various Linux distros.
|
|
name: Test Linux Distros
|
|
|
|
# Runs when called from another workflow.
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
ref:
|
|
required: true
|
|
type: string
|
|
|
|
# By default, run all commands in a bash shell. On Windows, the default would
|
|
# otherwise be powershell.
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
# Configure the build matrix based on files in the repo.
|
|
docker_matrix_config:
|
|
name: Matrix configuration
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
MATRIX: ${{ steps.configure.outputs.MATRIX }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.ref }}
|
|
|
|
- name: Configure Build Matrix
|
|
id: configure
|
|
shell: node {0}
|
|
run: |
|
|
const fs = require('fs');
|
|
const files = fs.readdirSync('packager/testing/dockers/');
|
|
const matrix = files.map((file) => {
|
|
return { os_name: file.replace('_Dockerfile', '') };
|
|
});
|
|
|
|
// Output a JSON object consumed by the build matrix below.
|
|
fs.writeFileSync(process.env.GITHUB_OUTPUT,
|
|
`MATRIX=${ JSON.stringify(matrix) }`,
|
|
{flag: 'a'});
|
|
|
|
// Log the outputs, for the sake of debugging this script.
|
|
console.log({matrix});
|
|
|
|
# Build each dockerfile in parallel in a different CI job.
|
|
build:
|
|
needs: docker_matrix_config
|
|
strategy:
|
|
# Let other matrix entries complete, so we have all results on failure
|
|
# instead of just the first failure.
|
|
fail-fast: false
|
|
matrix:
|
|
include: ${{ fromJSON(needs.docker_matrix_config.outputs.MATRIX) }}
|
|
|
|
name: ${{ matrix.os_name }}
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ inputs.ref }}
|
|
submodules: recursive
|
|
|
|
- name: Build in Docker
|
|
run: ./packager/testing/test_dockers.sh "${{ matrix.os_name }}"
|