| 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 |
| 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. |
| - '**:**' |
| |
| env: |
| CI_IMAGE: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-debian:10-master-132813612 |
| PYTEST_ARGS: --color=yes --integration |
| |
| jobs: |
| tests: |
| runs-on: ubuntu-20.04 |
| continue-on-error: ${{ matrix.allow-failure || false }} |
| |
| env: |
| CI_IMAGE_PREFIX: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite |
| CI_IMAGE_SUFFIX: master-132813612 |
| TOXENV: py35,py36,py37,py38-nocover |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| |
| # Main test targets, the name defines the image that will be used as |
| # the base for running tests. |
| test-name: |
| - debian:10 |
| - fedora:30 |
| - fedora:31 |
| - ubuntu:18.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: Run tox inside a container |
| run: | |
| |
| cat << EOF > runtox.sh |
| #!/bin/bash |
| |
| # Create user |
| useradd -Um buildstream |
| chown -R buildstream:buildstream . |
| |
| # Diagnostics |
| echo "Running diagnostics checks" |
| mount |
| df -h |
| tox --version |
| |
| # Run tox as user, ensure we have a login shell |
| echo "Running tests" |
| su buildstream -c '/bin/bash --login -c "tox -vvvvv -- $PYTEST_ARGS"' |
| EOF |
| |
| chmod +x runtox.sh |
| |
| docker run \ |
| --privileged \ |
| --device /dev/fuse \ |
| --env PYTEST_ARGS \ |
| --env TOXENV=${{ matrix.toxenv || env.TOXENV }} \ |
| --volume /home/runner/work:/__w \ |
| --workdir /__w/buildstream/buildstream \ |
| "$CI_IMAGE_PREFIX"-${{ matrix.image-name || matrix.test-name }}-"$CI_IMAGE_SUFFIX" \ |
| ./runtox.sh |
| |
| docs: |
| runs-on: ubuntu-20.04 |
| env: |
| BST_FORCE_SESSION_REBUILD: 1 |
| steps: |
| - name: Check out repository |
| uses: actions/checkout@v2 |
| # BuildStream requires tags to be able to find its version. |
| with: |
| fetch-depth: 0 |
| - name: Run tox inside a container |
| run: | |
| docker run \ |
| --privileged \ |
| --device /dev/fuse \ |
| --env BST_FORCE_SESSION_REBUILD \ |
| --volume /home/runner/work:/__w \ |
| --workdir /__w/buildstream/buildstream \ |
| $CI_IMAGE \ |
| tox -e docs |
| |
| - name: Upload artifacts |
| uses: actions/upload-artifact@v2 |
| with: |
| name: docs |
| path: doc/build/html |
| |