--- # Tools that can save round-trips to github and a lot of time: # # yamllint -f parsable this.yml # pip3 install ruamel.yaml.cmd # yaml merge-expand this.yml exp.yml && diff -w -u this.yml exp.yml # # github.com also has a powerful web editor that can be used without # committing. name: installer # 'workflow_dispatch' allows running this workflow manually from the # 'Actions' tab # yamllint disable-line rule:truthy on: [push, pull_request, workflow_dispatch] jobs: checktree: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: # just a vector in this case make_env: [ IPC_VERSION= UNSIGNED_list='imx8' SIGNED_list=, # default version ] steps: - uses: actions/checkout@v3 # From time to time this will catch a git tag and change SOF_VERSION with: {fetch-depth: 50, submodules: recursive} - name: docker run: docker pull thesofproject/sof && docker tag thesofproject/sof sof # -j3 tests the ability to build multiple platforms # concurrently. It makes the build log unreadable, so retry with # a single thread in case of failure - name: build all and stage env: gh_make_env: ${{ matrix.make_env }} # Use 'eval' to have two different levels of whitespace: # 1. between vars, and 2. inside _lists. Quoting is hard, even # harder through 'docker-run.sh'. run: eval env_array=($gh_make_env) && ./scripts/docker-run.sh make -j3 -C installer/ tarball "${env_array[@]}" || VERBOSE=1 NO_PROCESSORS=1 USE_XARGS=no ./scripts/docker-run.sh make -j1 -C installer/ tarball "${env_array[@]}" - name: check staging tree env: gh_make_env: ${{ matrix.make_env }} run: eval env_array=($gh_make_env) && make -C installer/ checktree "${env_array[@]}" - name: test make cleanall run: | make -C installer cleanall # Make sure there's nothing left rm -rf scripts/kconfig/__pycache__/ ! git status --porcelain --ignored | grep .