Build Linux kernel deb and debos image #2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Linux kernel deb and debos image | ||
on: | ||
# run weekly on Monday at 8:30am | ||
schedule: | ||
- cron: '30 6 * * 1' | ||
# allow manual runs | ||
workflow_dispatch: | ||
# implicitely set all other permissions to none | ||
permissions: | ||
checks: write # test.yml | ||
contents: read # actions/checkout debos.yml test.yml | ||
packages: read # test.yml | ||
pull-requests: write # test.yml | ||
env: | ||
# where results will be posted/hosted | ||
FILESERVER_URL: https://quic-yocto-fileserver-1029608027416.us-central1.run.app | ||
# github runs are only unique per repository and may also be re-run; create a | ||
# build id for the current run | ||
BUILD_ID: ${{ github.repository }}-${{ github.run_id }}-${{ github.run_attempt }} | ||
# cancel in progress builds for this workflow triggered by the same ref | ||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
jobs: | ||
build-linux-deb: | ||
# don't run cron from forks of the main repository or from other branches | ||
if: github.repository == 'qualcomm-linux/qcom-deb-images' && github.ref == 'refs/heads/main' | ||
# for cross-builds | ||
runs-on: [self-hosted, qcom-u2404, amd64] | ||
# alternative for native builds, but overkill to do both | ||
#runs-on: [self-hosted, qcom-u2404, arm64] | ||
container: | ||
image: public.ecr.aws/debian/debian:trixie | ||
volumes: | ||
- /efs/qli/metaqcom/gh-runners/quic-yocto/downloads:/fileserver-downloads | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
# make sure we have latest packages first, to get latest fixes, to avoid | ||
# an automated update while we're building, and to prevent version skews | ||
- name: Update OS packages | ||
run: | | ||
set -ux | ||
apt update | ||
apt -y upgrade | ||
apt -y full-upgrade | ||
- name: Build Linux kernel deb | ||
run: | | ||
set -ux | ||
# download arm64 package lists to install cross build-dependencies | ||
if [ "$(dpkg --print-architecture)" != arm64 ]; then | ||
dpkg --add-architecture arm64 | ||
apt update | ||
fi | ||
# install build-dependencies; TODO: --no-install-recommends | ||
apt -y install git crossbuild-essential-arm64 make flex bison bc \ | ||
libdw-dev libelf-dev libssl-dev libssl-dev:arm64 dpkg-dev \ | ||
debhelper-compat kmod python3 rsync coreutils | ||
scripts/build-linux-deb.sh \ | ||
kernel-configs/qcom-imsdk.config \ | ||
kernel-configs/systemd-boot.config | ||
- name: Stage artifacts for upload | ||
run: | | ||
set -ux | ||
# dcmd from devscripts will be used to parse .changes file | ||
apt -y install --no-install-recommends devscripts | ||
# stage artifacts in a directory | ||
mkdir -v artifacts | ||
cp -av `dcmd *.changes` artifacts | ||
- name: Upload results to fileserver space for downloads | ||
run: | | ||
set -ux | ||
export BUILD_DIR="/fileserver-downloads/${BUILD_ID}" | ||
mkdir -vp "${BUILD_DIR}" | ||
cp -av artifacts/* "${BUILD_DIR}" | ||
# create or update linux-deb-latest symlink | ||
mkdir -vp /fileserver-downloads/qcom-deb-images | ||
ln -fnsv "../${BUILD_ID}" /fileserver-downloads/qcom-deb-images/linux-deb-latest | ||
# perhaps help NFS sync | ||
sync | ||
- name: Upload private artifacts | ||
uses: qualcomm-linux/upload-private-artifact-action@v1 | ||
id: upload_artifacts | ||
with: | ||
path: artifacts | ||
debos-mainline-linux: | ||
needs: build-linux-deb | ||
uses: ./.github/workflows/debos.yml | ||
with: | ||
mainline_kernel: true | ||
kernelpackage: linux-image-6.17.0 | ||
test-mainline-linux: | ||
uses: ./.github/workflows/test.yml | ||
Check failure on line 106 in .github/workflows/linux.yml
|
||
needs: debos-mainline-linux | ||
secrets: inherit | ||
with: | ||
url: ${{ needs.debos-mainline-linux.outputs.artifacts_url }} | ||