sof/.github/workflows/pull-request.yml

162 lines
4.8 KiB
YAML

---
# Tools that can save round-trips to github and a lot of time:
#
# yamllint -f parsable pull_request.yml
# pip3 install ruamel.yaml.cmd
# yaml merge-expand pull_request.yml exp.yml &&
# diff -w -u pull_request.yml exp.yml
#
# github.com also has a powerful web editor that can be used without
# committing.
# This is the name of this workflow and should technically be called
# something like "Main Workflow" but the place where most people see
# this name is the Checks window next to other, non-github checks.
name: GitHub Actions
# yamllint disable-line rule:truthy
on:
push:
branches:
- 'main'
- 'stable-**'
- '**-stable'
pull_request:
branches:
- 'main'
- 'stable-**'
- '**-stable'
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Some jobs may not need submodules but for now our CMakeLists.txt
# systemically downloads them anyway when missing at build time. Easier
# and cleaner to clone everything at once.
jobs:
doxygen:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- name: apt get doxygen graphviz
run: sudo apt-get -y install ninja-build doxygen graphviz
- name: list all warnings, warnings are not failures
run: cmake -GNinja -S doc -B docbuild && ninja -C docbuild -v doc
# Build again (it's very quick) so warnings don't go unnoticed
- name: fail and stop on first warning
run: printf 'WARN_AS_ERROR = YES\n' >> doc/sof.doxygen.in &&
ninja -C docbuild -v doc
testbench:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with: {fetch-depth: 5}
- name: apt get valgrind
run: sudo apt-get update && sudo apt-get -y install valgrind
- name: docker
run: docker pull thesofproject/sof && docker tag thesofproject/sof sof
# testbench needs some topologies.
# Use our docker container to avoid the "unsupported widget type asrc"
# bug in ALSA 1.2.2
# https://github.com/thesofproject/sof/issues/2543
- name: build test topologies
run: ./scripts/docker-run.sh ./scripts/build-tools.sh -t ||
VERBOSE=1 NO_PROCESSORS=1 USE_XARGS=no
./scripts/docker-run.sh ./scripts/build-tools.sh -t
- name: build testbench
run: ./scripts/rebuild-testbench.sh
- name: run testbench
run: ./scripts/host-testbench.sh
gcc-build-only:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
# Use groups to avoid spamming the web interface.
# Don't use a single big group so a single failure does not block
# all other builds.
platform: [imx8ulp,
sue jsl tgl,
rn,
]
steps:
- uses: actions/checkout@v2
with: {fetch-depth: 0, submodules: recursive}
- name: docker
run: docker pull thesofproject/sof && docker tag thesofproject/sof sof
- name: xtensa-build-all
env:
PLATFORM: ${{ matrix.platform }}
run: ./scripts/docker-run.sh
./scripts/xtensa-build-all.sh -r ${PLATFORM}
# Warning: there is a fair amount of duplication between 'build-only'
# and 'qemu-boot' because github does not support YAML anchors as of Jan
# 2021. Defining our new actions would be overkill. Another popular
# option is to generate this file from a source with YAML anchors
# before committing it; also deemed overkill for the current amount of
# duplication.
qemu-boot-test:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
# Compiler-based groups, see HOST= compilers in
# xtensa-build-all.sh. Pay attention to commas and whitespace.
# The main reason for these groups is to avoid the matrix
# swarming the Github web interface and burying other checks.
platform: [imx8 imx8x imx8m,
byt cht, bdw hsw, apl skl kbl, cnl icl,
]
steps:
- uses: actions/checkout@v2
with: {fetch-depth: 0, submodules: recursive}
- name: turn off HAVE_AGENT
run: echo CONFIG_HAVE_AGENT=n >
src/arch/xtensa/configs/override/no-agent.config
- name: docker SOF
run: docker pull thesofproject/sof && docker tag thesofproject/sof sof
- name: xtensa-build-all -o no-agent
env:
PLATFORM: ${{ matrix.platform }}
run: ./scripts/docker-run.sh
./scripts/xtensa-build-all.sh -o no-agent -r ${PLATFORM}
- name: docker QEMU
run: docker pull thesofproject/sofqemu &&
docker tag thesofproject/sofqemu sofqemu
- name: qemu-check
env:
PLATFORM: ${{ matrix.platform }}
run: ./scripts/docker-qemu.sh
../sof.git/scripts/qemu-check.sh ${PLATFORM}