blob: 894caaa666cbe892158dc3f6d3f54c44280d1cfd [file] [log] [blame]
name: PR Checks
# Run the CI if branches are pushed locally, allowing us to
# run CI without the need of creating a pull request.
#
# Run the CI on pull requests only if they are from forked
# repositories.
#
on:
push:
branches-ignore:
- gh-pages
- master
pull_request:
types: [assigned, opened, synchronize, reopened]
branches:
# Branches from forks have the form 'user:branch-name' so we only run
# this job on pull_request events for branches that look like fork
# branches. Without this we would end up running this job twice for non
# forked PRs, once for the push and then once for opening the PR.
- '**:**'
# Left to-do:
# - coverage
# - publishing docs to gh-pages
# - persistent artifact cache
# - overnight jobs
# - wsl tasks (TODO: Check if GitHub's Windows runners allow WSL)
#
# New opportunities:
# - run tests on mac (GitHub provides MacOS runners)
# - standardize WSL tasks by using GitHub-provided runners
jobs:
tests:
runs-on: ubuntu-20.04
continue-on-error: ${{ matrix.allow-failure || false }}
strategy:
fail-fast: false
matrix:
# The names here should map to a valid service defined in
# "../compose/ci.docker-compose.yml"
test-name:
- debian-10
- fedora-32
- fedora-33
- ubuntu-18.04
- centos-7.7.1908
- fedora-missing-deps
- no-usedevelop
- lint
- mypy
include:
- test-name: plugins-master
allow-failure: true
steps:
- name: Check out repository
uses: actions/checkout@v2
# BuildStream requires tags to be able to find its version.
with:
fetch-depth: 0
- name: Give `testuser` ownership of the source directory
run: sudo chown -R 1000:1000 ${GITHUB_WORKSPACE}
- name: Run tests with Docker Compose
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.docker-compose.yml \
run \
${{ matrix.test-name }}
# Matrix of tests which run against remote services which we bring up adjacently
service-tests:
runs-on: ubuntu-20.04
strategy:
matrix:
# The names here map to valid services defined in "../compose/ci.docker-compose.yml",
# and they also map to corresponding filenames of services which are expected
# to be run in the background
test-name:
- bst-artifact-server
- buildbarn
- buildgrid
steps:
- name: Check out repository
uses: actions/checkout@v2
# BuildStream requires tags to be able to find its version.
with:
fetch-depth: 0
- name: Give `testuser` ownership of the source directory
run: sudo chown -R 1000:1000 ${GITHUB_WORKSPACE}
- name: Bring up the RE cluster
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.${{ matrix.test-name }}.yml \
up --detach --renew-anon-volumes --remove-orphans
- name: Run the remote execution tests
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.docker-compose.yml run ${{ matrix.test-name }}
- name: Bring down the RE cluster
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.${{ matrix.test-name }}.yml stop
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.${{ matrix.test-name }}.yml logs
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.${{ matrix.test-name }}.yml down
docs:
runs-on: ubuntu-20.04
steps:
- name: Check out repository
uses: actions/checkout@v2
# BuildStream requires tags to be able to find its version.
with:
fetch-depth: 0
- name: Give `testuser` ownership of the source directory
run: sudo chown -R 1000:1000 ${GITHUB_WORKSPACE}
- name: Build documentation using Docker Compose
run: |
docker-compose \
--env-file ${GITHUB_WORKSPACE}/.github/common.env \
--file ${GITHUB_WORKSPACE}/.github/compose/ci.docker-compose.yml \
run \
docs
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: docs
path: doc/build/html