Skip to content

ci: add git safe directory for dunamai #12

ci: add git safe directory for dunamai

ci: add git safe directory for dunamai #12

Workflow file for this run

name: Sentry kernel build
on:
push:
pull_request:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# using /home/build as home, as buildbot is using user build. Cache is still in /cache
# This allows the usage of automated ssh key installation step
jobs:
forge_matrix:
runs-on: ${{ vars.DEFAULT_RUNNER_NAME }}
container:
image: python:3.9.14-alpine3.16
steps:
- id: set_matrix
shell: python
run: |
import os
if "${{ github.event_name }}" == "pull_request":
operating_system = [ 'mesonbuild/ubuntu-rolling', 'mesonbuild/arch:latest' ]
toolchain = [ 'gcc|12.3.Rel1', 'gcc|10.3-2021.07', 'gcc|13.2.Rel1' ]
config = [ 'nucleo_u5a5_autotest', 'nucleo_u5a5_nooutput', 'stm32f429i_disc1_debug', 'stm32f429i_disc1_release', 'stm32f429i_disc1_autotest' ]
else:
operating_system = [ 'mesonbuild/ubuntu-rolling' ]
toolchain = [ 'gcc|12.3.Rel1' ]
config = [ 'nucleo_u5a5_autotest', 'stm32f429i_disc1_debug', 'nucleo_l476rg_debug', 'nucleo_f401re' ]
with open(os.environ['GITHUB_OUTPUT'], 'w') as gh_out:
gh_out.write(f"operating_system={operating_system}\n")
gh_out.write(f"toolchain={toolchain}\n")
gh_out.write(f"config={config}\n")
outputs:
operating_system: ${{ steps.set_matrix.outputs.operating_system }}
toolchain: ${{ steps.set_matrix.outputs.toolchain }}
config: ${{ steps.set_matrix.outputs.config }}
build:
needs: [ forge_matrix ]
strategy:
matrix:
operating_system: ${{ fromJSON(needs.forge_matrix.outputs.operating_system) }}
toolchain: ${{ fromJSON(needs.forge_matrix.outputs.toolchain) }}
config: ${{ fromJSON(needs.forge_matrix.outputs.config) }}
exclude:
- operating_system: 'mesonbuild/fedora:latest'
toolchain: 'gcc|10.3-2021.07'
name: build
defaults:
run:
shell: bash
runs-on: ${{ vars.DEFAULT_RUNNER_NAME }}
container:
image: ${{ matrix.operating_system }}
steps:
- name: Clone cross-files
uses: actions/checkout@v4
with:
ref: 'main'
repository: 'outpost-os/meson-cross-files'
path: crossfiles
- name: Deploy cross-files
run: |
mkdir -p $HOME/.local/share/meson/cross
cp -a $GITHUB_WORKSPACE/crossfiles/*.ini $HOME/.local/share/meson/cross
echo "MESON_CROSS_FILES=$HOME/.local/share/meson/cross" >> $GITHUB_ENV
shell: bash
- name: install prerequisites pkg
uses: outpost-os/action-install-pkg@v1
with:
packages: 'dtc|device-tree-compiler,libssh2-1|libssh2,curl,lld,srecord'
- name: Split compiler reference
id: split
shell: bash
run: |
input_toolchain="${{matrix.toolchain}}"
toolchain_compiler=${input_toolchain%%|*}
toolchain_version=${input_toolchain##*|}
echo "compiler=$toolchain_compiler" >> $GITHUB_ENV
echo "compiler_version=$toolchain_version" >> $GITHUB_ENV
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
targets: thumbv7m-none-eabi,thumbv7em-none-eabi,thumbv7em-none-eabihf
components: clippy,rustfmt
- name: Setup C toolchain
uses: outpost-os/action-setup-compiler@v1
with:
compiler: ${{ env.compiler }}
triple: arm-none-eabi
ref: ${{ env.compiler_version }}
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
set-safe-directory: '*'
- name: deploy local deps
run: |
pip install --upgrade pip
pip install -r requirements.txt
- name: defconfig
run: |
defconfig configs/${{matrix.config}}_defconfig
- name: Meson Build
uses: outpost-os/action-meson@v1
with:
cross_files: ${{ format('{0}/{1}', env.MESON_CROSS_FILES, 'arm-none-eabi-gcc.ini') }}
actions: '["prefetch", "setup", "compile"]'
options: '-Dconfig=.config -Ddts=dts/examples/${{ matrix.config }}.dts -Ddts-include-dirs=dts'
- name: Meson postcheck
if: failure()
run: |
cat builddir/meson-logs/meson-log.txt
test:
needs: [ build ]
defaults:
run:
shell: bash
runs-on: ${{ vars.DEFAULT_RUNNER_NAME }}
container:
image: 'mesonbuild/ubuntu-rolling'
steps:
- name: Clone cross-files
uses: actions/checkout@v4
with:
ref: 'main'
repository: 'outpost-os/meson-cross-files'
path: crossfiles
- name: Deploy cross-files
run: |
mkdir -p $HOME/.local/share/meson/cross
cp -a $GITHUB_WORKSPACE/crossfiles/*.ini $HOME/.local/share/meson/cross
echo "MESON_CROSS_FILES=$HOME/.local/share/meson/cross" >> $GITHUB_ENV
shell: bash
- name: install curl pkg
uses: outpost-os/action-install-pkg@v1
with:
packages: 'dtc|device-tree-compiler,libssh2-1|libssh2,curl,lld'
- name: Setup compiler
uses: outpost-os/action-setup-compiler@v1
with:
compiler: gcc
triple: arm-none-eabi
ref: '12.3.Rel1'
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
targets: thumbv7m-none-eabi,thumbv7em-none-eabi,thumbv7em-none-eabihf
components: clippy,rustfmt
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
set-safe-directory: '*'
- name: deploy local deps
run: |
pip install -r requirements.txt
- name: defconfig
run: |
defconfig configs/stm32f429i_disc1_debug_defconfig
- name: Meson Build
uses: outpost-os/action-meson@v1
with:
cross_files: ${{ format('{0}/{1}', env.MESON_CROSS_FILES, 'arm-none-eabi-gcc.ini') }}
actions: '["prefetch", "setup", "test"]'
options: '-Dconfig=.config -Ddts=dts/examples/stm32f429i_disc1_debug.dts -Ddts-include-dirs=dts -Dwith_tests=true -Db_coverage=false -Doptimization=0'
- name: Meson postcheck
if: failure()
run: |
cat builddir/meson-logs/meson-log.txt
cat builddir/meson-logs/testlog.txt
doc:
needs: [ build ]
defaults:
run:
shell: bash
runs-on: ${{ vars.DEFAULT_RUNNER_NAME }}
container:
image: 'mesonbuild/ubuntu-rolling'
steps:
- name: Clone cross-files
uses: actions/checkout@v4
with:
ref: 'main'
repository: 'outpost-os/meson-cross-files'
path: crossfiles
- name: Deploy cross-files
run: |
mkdir -p $HOME/.local/share/meson/cross
cp -a $GITHUB_WORKSPACE/crossfiles/*.ini $HOME/.local/share/meson/cross
echo "MESON_CROSS_FILES=$HOME/.local/share/meson/cross" >> $GITHUB_ENV
shell: bash
- name: install prerequisites pkg
uses: outpost-os/action-install-pkg@v1
with:
packages: 'pandoc,dtc|device-tree-compiler,libssh2-1|libssh2,curl,lld'
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
set-safe-directory: '*'
- name: deploy local deps
run: |
pip install -r requirements.txt
- name: defconfig
run: |
defconfig configs/stm32f429i_disc1_debug_defconfig
- name: Meson Doc
uses: outpost-os/action-meson@v1
with:
actions: '["prefetch", "setup"]'
options: '-Dconfig=.config -Ddts=dts/examples/stm32f429i_disc1_debug.dts -Ddts-include-dirs=dts -Dwith_doc=true -Dwith_uapi=false -Dwith_idle=false'
- name: Meson postcheck
if: failure()
run: |
cat builddir/meson-logs/meson-log.txt
cat builddir/meson-logs/testlog.txt