| 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: |
| - remote-execution |
| - buildstream-remote-cache |
| - buildbarn-remote-cache |
| |
| 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 |