BitBake Build (Self-Hosted) #84
This file contains 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
# /******************************************************************************** | |
# * Copyright (c) 2023 Contributors to the Eclipse Foundation | |
# * | |
# * See the NOTICE file(s) distributed with this work for additional | |
# * information regarding copyright ownership. | |
# * | |
# * This program and the accompanying materials are made available under the | |
# * terms of the Apache License 2.0 which is available at | |
# * https://www.apache.org/licenses/LICENSE-2.0 | |
# * | |
# * SPDX-License-Identifier: Apache-2.0 | |
# ********************************************************************************/ | |
# | |
# To run on Eclipse managed GitHub Runner, set to run on self-hosted and add a container name to the job: | |
# runs-on: self-hosted | |
# container: debian:bullseye | |
# | |
name: BitBake Build (Self-Hosted) | |
on: | |
workflow_dispatch: | |
workflow_call: | |
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
pull-requests: write | |
jobs: | |
leda-qemux86_64: | |
name: "qemux86_64" | |
runs-on: self-hosted | |
continue-on-error: true | |
steps: | |
- name: Cleanup test reports | |
run: | | |
sudo rm -rf resources/docker-snapshot/leda-tests-reports | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install tools | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends socat file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool tmux mc skopeo fdisk ruby-full jq libvirt-clients libvirt-daemon-system qemu-system-x86 qemu-system-arm qemu-kvm squashfs-tools rauc python3-newt ca-certificates curl gnupg lsb-release | |
- name: Install kas | |
run: sudo pip3 install kas | |
- name: Cache SState | |
id: cache-sstate | |
uses: pat-s/[email protected] | |
with: | |
path: build/sstate-cache | |
key: bb-sstate-cache-qemux86-64 | |
- name: Build sdv-image-all | |
env: | |
KAS_MACHINE: qemux86-64 | |
run: | | |
(r=3;while ! kas build kas/leda-qemux86-64.yaml:kas/mirrors.yaml:kas/oss-compliance/spdx.yaml ; do ((--r))||exit;sleep 60;done) | |
- name: Generate CHANGELOG.md | |
run: | | |
docker run --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator github_changelog_generator -u eclipse-leda -p leda-distro --no-author -t ${{ secrets.GITHUB_TOKEN }} | |
- name: Package all files | |
run: | | |
export ARC=eclipse-leda-qemu-x86_64.tar | |
rm -f ${ARC}.xz | |
time tar --create --gzip --file 3rdparty-licenses.tar.gz -C ./build/tmp/deploy/licenses/ . | |
time tar --create --verbose --file ${ARC} -C ./resources/runners/qemux86_64/ \ | |
run-leda.sh \ | |
run-leda.cmd \ | |
readme.txt | |
time tar --append --verbose --file ${ARC} -C scripts/ \ | |
provision-device.sh | |
time tar --append --verbose --file ${ARC} -C ./ \ | |
LICENSE \ | |
NOTICE.md \ | |
CHANGELOG.md \ | |
README.md \ | |
3rdparty-licenses.tar.gz \ | |
examples | |
time tar --append --verbose --dereference --file ${ARC} -C ./build/tmp/deploy/images/qemux86-64/ \ | |
bzImage-qemux86-64.bin \ | |
sdv-image-all-qemux86-64.wic.qcow2 \ | |
sdv-rauc-bundle-minimal-qemux86-64.raucb \ | |
sdv-rauc-bundle-full-qemux86-64.raucb \ | |
sdv-rauc-bundle-rescue-qemux86-64.raucb \ | |
ovmf.qcow2 | |
time xz -v -8 -T0 ${ARC} | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-qemu-x86_64.tar.xz | |
if-no-files-found: error | |
path: eclipse-leda-qemu-x86_64.tar.xz | |
- name: Convert SPDX files to CycloneDX format | |
run: | | |
wget -nc -O cyclonedx https://github.com/CycloneDX/cyclonedx-cli/releases/download/v0.24.2/cyclonedx-linux-x64 | |
chmod +x ./cyclonedx | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemux86-64/runtime ./cyclonedx-sbom-qemux86/runtime | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemux86-64/recipes ./cyclonedx-sbom-qemux86/recipes | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemux86-64/packages ./cyclonedx-sbom-qemux86/packages | |
env: | |
CYCLONEDX_CLI: ./cyclonedx | |
CONVERTER_LOG_LEVEL: INFO | |
- name: Package CycloneDX SBOM | |
run: | | |
tar --create --gzip --file eclipse-leda-cyclonedx-sbom-qemux86_64.tar.gz -C ./cyclonedx-sbom-qemux86 . | |
- name: Upload CycloneDX SBOM | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-cyclonedx-sbom-qemux86_64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-cyclonedx-sbom-qemux86_64.tar.gz | |
- name: Package SPDX files | |
run: | | |
tar --create --gzip --file eclipse-leda-spdx-sbom-qemux86_64.tar.gz -C ./build/tmp/deploy/spdx/qemux86-64/ . | |
- name: Upload SPDX SBOM | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-spdx-sbom-qemux86_64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-spdx-sbom-qemux86_64.tar.gz | |
- name: Package Patched Sources | |
run: | | |
tar --create --gzip --file eclipse-leda-sources-qemux86_64.tar.gz -C ./build/tmp/deploy/sources/ . | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-sources-qemux86_64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-sources-qemux86_64.tar.gz | |
- uses: bacongobbler/[email protected] | |
if: github.repository_owner == 'SoftwareDefinedVehicle' | |
with: | |
source_dir: 'build/sstate-cache/' | |
extra_args: '--destination-path sstate-cache/' | |
container_name: 'yocto-sstate-cache' | |
overwrite: 'true' | |
connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} | |
leda-qemuarm64: | |
name: "qemuarm64" | |
runs-on: self-hosted | |
continue-on-error: true | |
steps: | |
- name: Cleanup test reports | |
run: | | |
sudo rm -rf resources/docker-snapshot/leda-tests-reports | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install tools | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y --no-install-recommends socat file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool tmux mc skopeo fdisk ruby-full jq libvirt-clients libvirt-daemon-system qemu-system-x86 qemu-system-arm qemu-kvm squashfs-tools rauc python3-newt ca-certificates curl gnupg lsb-release | |
- name: Install kas | |
run: sudo pip3 install kas | |
- name: Cache SState | |
id: cache-sstate | |
uses: pat-s/[email protected] | |
with: | |
path: build/sstate-cache | |
key: bb-sstate-cache-qemuarm64 | |
- name: Build sdv-image-all | |
env: | |
KAS_MACHINE: qemuarm64 | |
run: | | |
(r=3;while ! kas build kas/leda-qemuarm64.yaml:kas/mirrors.yaml:kas/oss-compliance/spdx.yaml ; do ((--r))||exit;sleep 60;done) | |
- name: Generate CHANGELOG.md | |
run: | | |
docker run --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator github_changelog_generator -u eclipse-leda -p leda-distro --no-author -t ${{ secrets.GITHUB_TOKEN }} | |
- name: Package all files | |
run: | | |
export ARC=eclipse-leda-qemu-arm64.tar | |
rm -f ${ARC}.xz | |
time tar --create --gzip --file 3rdparty-licenses.tar.gz -C ./build/tmp/deploy/licenses/ . | |
time tar --create --verbose --file ${ARC} -C ./resources/runners/qemuarm64/ \ | |
run-leda.sh \ | |
run-leda.cmd \ | |
readme.txt | |
time tar --append --verbose --file ${ARC} -C scripts/ \ | |
provision-device.sh | |
time tar --append --verbose --file ${ARC} -C ./ \ | |
LICENSE \ | |
NOTICE.md \ | |
CHANGELOG.md \ | |
README.md \ | |
3rdparty-licenses.tar.gz \ | |
examples | |
time tar --append --verbose --dereference --file ${ARC} -C ./build/tmp/deploy/images/qemuarm64/ \ | |
Image-qemuarm64.bin \ | |
sdv-image-all-qemuarm64.wic.qcow2 \ | |
sdv-rauc-bundle-full-qemuarm64.raucb \ | |
sdv-rauc-bundle-minimal-qemuarm64.raucb \ | |
sdv-rauc-bundle-rescue-qemuarm64.raucb \ | |
u-boot.bin | |
time xz -v -8 -T0 ${ARC} | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-qemu-arm64.tar.xz | |
if-no-files-found: error | |
path: eclipse-leda-qemu-arm64.tar.xz | |
- name: Convert SPDX files to CycloneDX format | |
run: | | |
wget -nc -O cyclonedx https://github.com/CycloneDX/cyclonedx-cli/releases/download/v0.24.2/cyclonedx-linux-x64 | |
chmod +x ./cyclonedx | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemuarm64/runtime ./cyclonedx-sbom-qemuarm64/runtime | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemuarm64/recipes ./cyclonedx-sbom-qemuarm64/recipes | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/qemuarm64/packages ./cyclonedx-sbom-qemuarm64/packages | |
env: | |
CYCLONEDX_CLI: ./cyclonedx | |
CONVERTER_LOG_LEVEL: INFO | |
- name: Package CycloneDX SBOM | |
run: | | |
tar --create --gzip --file eclipse-leda-cyclonedx-sbom-qemuarm64.tar.gz -C ./cyclonedx-sbom-qemuarm64 . | |
- name: Upload CycloneDX SBOM | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-cyclonedx-sbom-qemuarm64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-cyclonedx-sbom-qemuarm64.tar.gz | |
- name: Package SPDX files | |
run: | | |
tar --create --gzip --file eclipse-leda-spdx-sbom-qemuarm64.tar.gz -C ./build/tmp/deploy/spdx/qemuarm64/ . | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-spdx-sbom-qemuarm64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-spdx-sbom-qemuarm64.tar.gz | |
- name: Package Patched Sources | |
run: | | |
tar --create --gzip --file eclipse-leda-sources-qemuarm64.tar.gz -C ./build/tmp/deploy/sources/ . | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-sources-qemuarm64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-sources-qemuarm64.tar.gz | |
- uses: bacongobbler/[email protected] | |
if: github.repository_owner == 'SoftwareDefinedVehicle' | |
with: | |
source_dir: 'build/sstate-cache/' | |
extra_args: '--destination-path sstate-cache/' | |
container_name: 'yocto-sstate-cache' | |
overwrite: 'true' | |
connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} | |
leda-raspberrypi4-64: | |
name: "raspberrypi4-64" | |
runs-on: self-hosted | |
needs: leda-qemuarm64 | |
continue-on-error: true | |
steps: | |
- name: Cleanup test reports | |
run: | | |
sudo rm -rf resources/docker-snapshot/leda-tests-reports | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install tools | |
run: sudo apt-get install -y --no-install-recommends socat file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool tmux mc skopeo fdisk ruby-full jq libvirt-clients libvirt-daemon-system qemu-system-x86 qemu-system-arm qemu-kvm squashfs-tools rauc python3-newt ca-certificates curl gnupg lsb-release | |
- name: Install kas | |
run: sudo pip3 install kas | |
- name: Cache SState | |
id: cache-sstate | |
uses: pat-s/[email protected] | |
with: | |
path: build/sstate-cache | |
key: bb-sstate-cache-raspberrypi4-64 | |
- name: Build sdv-image-all | |
env: | |
KAS_MACHINE: raspberrypi4-64 | |
run: | | |
(r=3;while ! kas build kas/leda-raspberrypi4-64.yaml:kas/mirrors.yaml:kas/oss-compliance/spdx.yaml ; do ((--r))||exit;sleep 60;done) | |
- name: Generate CHANGELOG.md | |
run: | | |
docker run --rm -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator github_changelog_generator -u eclipse-leda -p leda-distro --no-author -t ${{ secrets.GITHUB_TOKEN }} | |
- name: Package all files | |
run: | | |
export ARC=eclipse-leda-raspberrypi.tar | |
rm -f ${ARC}.xz | |
time tar --create --verbose --gzip --file 3rdparty-licenses.tar.gz -C ./build/tmp/deploy/licenses/ . | |
time tar --create --verbose --file ${ARC} -C resources/runners/raspberrypi4/ \ | |
readme.txt | |
time tar --append --verbose --file ${ARC} -C ./ \ | |
LICENSE \ | |
NOTICE.md \ | |
CHANGELOG.md \ | |
README.md \ | |
3rdparty-licenses.tar.gz \ | |
examples | |
time tar --append --verbose --dereference --file ${ARC} -C ./build/tmp/deploy/images/raspberrypi4-64/ \ | |
Image-raspberrypi4-64.bin \ | |
sdv-image-all-raspberrypi4-64.wic.bz2 \ | |
sdv-image-all-raspberrypi4-64.wic.bmap \ | |
sdv-rauc-bundle-full-raspberrypi4-64.raucb \ | |
sdv-rauc-bundle-minimal-raspberrypi4-64.raucb \ | |
sdv-rauc-bundle-rescue-raspberrypi4-64.raucb | |
time xz -v -1 -T0 ${ARC} | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-raspberrypi.tar.xz | |
if-no-files-found: error | |
path: eclipse-leda-raspberrypi.tar.xz | |
- name: Convert SPDX files to CycloneDX format | |
run: | | |
wget -nc -O cyclonedx https://github.com/CycloneDX/cyclonedx-cli/releases/download/v0.24.2/cyclonedx-linux-x64 | |
chmod +x ./cyclonedx | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/raspberrypi4-64/runtime ./cyclonedx-sbom-raspberrypi4-64/runtime | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/raspberrypi4-64/recipes ./cyclonedx-sbom-raspberrypi4-64/recipes | |
python3 ./.github/workflow-scripts/sbom-converter.py ./build/tmp/deploy/spdx/raspberrypi4-64/packages ./cyclonedx-sbom-raspberrypi4-64/packages | |
env: | |
CYCLONEDX_CLI: ./cyclonedx | |
CONVERTER_LOG_LEVEL: INFO | |
- name: Package CycloneDX SBOM | |
run: | | |
tar --create --gzip --file eclipse-leda-cyclonedx-sbom-raspberrypi4-64.tar.gz -C ./cyclonedx-sbom-raspberrypi4-64 . | |
- name: Upload CycloneDX SBOM | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-cyclonedx-sbom-raspberrypi4-64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-cyclonedx-sbom-raspberrypi4-64.tar.gz | |
- name: Package SPDX files | |
run: | | |
tar --create --gzip --file eclipse-leda-spdx-sbom-raspberrypi4-64.tar.gz -C ./build/tmp/deploy/spdx/raspberrypi4-64/ . | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-spdx-sbom-raspberrypi4-64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-spdx-sbom-raspberrypi4-64.tar.gz | |
- name: Package Patched Sources | |
run: | | |
tar --create --gzip --file eclipse-leda-sources-raspberrypi4-64.tar.gz -C ./build/tmp/deploy/sources/ . | |
- name: Upload files | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-sources-raspberrypi4-64.tar.gz | |
if-no-files-found: error | |
path: eclipse-leda-sources-raspberrypi4-64.tar.gz | |
- uses: bacongobbler/[email protected] | |
if: github.repository_owner == 'SoftwareDefinedVehicle' | |
with: | |
source_dir: 'build/sstate-cache/' | |
extra_args: '--destination-path sstate-cache/' | |
container_name: 'yocto-sstate-cache' | |
overwrite: 'true' | |
connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }} | |
leda-docker: | |
name: "docker" | |
runs-on: self-hosted | |
needs: | |
- leda-qemuarm64 | |
- leda-qemux86_64 | |
continue-on-error: true | |
steps: | |
- name: Cleanup test reports | |
run: | | |
sudo rm -rf resources/docker-snapshot/leda-tests-reports | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install tools | |
run: sudo apt-get install -y --no-install-recommends socat file gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint xterm python3-subunit mesa-common-dev zstd liblz4-tool tmux mc skopeo fdisk ruby-full jq libvirt-clients libvirt-daemon-system qemu-system-x86 qemu-system-arm qemu-kvm squashfs-tools rauc python3-newt ca-certificates curl gnupg lsb-release | |
- name: Install kas | |
run: sudo pip3 install kas | |
- name: Cache SState | |
id: cache-sstate | |
uses: pat-s/[email protected] | |
with: | |
path: build/sstate-cache | |
key: bb-sstate-cache-raspberrypi4-64 | |
- name: Build qemux86-64 | |
env: | |
KAS_MACHINE: qemux86-64 | |
run: | | |
(r=3;while ! kas build kas/leda-qemux86-64.yaml:kas/mirrors.yaml:kas/oss-compliance/spdx.yaml ; do ((--r))||exit;sleep 60;done) | |
- name: Build qemuarm64 | |
env: | |
KAS_MACHINE: qemuarm64 | |
run: | | |
(r=3;while ! kas build kas/leda-qemuarm64.yaml:kas/mirrors.yaml:kas/oss-compliance/spdx.yaml ; do ((--r))||exit;sleep 60;done) | |
- name: Stop docker | |
if: always() | |
run: | | |
cd resources/docker-snapshot | |
./stop-docker.sh | |
./clear-docker.sh | |
- name: Build docker images | |
run: | | |
cd resources/docker-snapshot | |
./build-docker.sh | |
- name: Startup docker | |
run: | | |
cd resources/docker-snapshot | |
./run-docker.sh | |
- name: Run docker tests | |
timeout-minutes: 60 | |
run: | | |
cd resources/docker-snapshot | |
./test-docker.sh | |
- name: Upload test reports | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: eclipse-leda-tests | |
if-no-files-found: error | |
path: resources/docker-snapshot/leda-tests-reports | |
- name: Publish docker images | |
env: | |
GITHUB_TOKEN: ${{ secrets.ECLIPSE_LEDA_PUBLISH_DOCKER }} | |
run: | | |
cd resources/docker-snapshot | |
./publish-docker.sh | |
- name: Stop docker | |
if: always() | |
run: | | |
cd resources/docker-snapshot | |
./stop-docker.sh | |
./clear-docker.sh | |
generate_report: | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
if: always() | |
needs: [ leda-docker ] | |
runs-on: self-hosted | |
steps: | |
- name: Cleanup test reports | |
run: | | |
sudo rm -rf resources/docker-snapshot/leda-tests-reports | |
- uses: actions/checkout@v2 | |
- name: Download reports | |
uses: actions/download-artifact@v1 | |
with: | |
name: eclipse-leda-tests | |
- name: Send report to commit | |
uses: joonvena/[email protected] | |
with: | |
report_path: eclipse-leda-tests | |
gh_access_token: ${{ secrets.GITHUB_TOKEN }} |