| #!/usr/bin/env bash | |
| # SPDX-License-Identifier: MIT | |
| # shellcheck disable=SC2086 # we want word splitting | |
| # shellcheck disable=SC1091 # paths only become valid at runtime | |
| # shellcheck disable=SC1090 | |
| source "${FDO_CI_BASH_HELPERS}" | |
| fdo_log_section_start_collapsed prepare_rootfs "Preparing root filesystem" | |
| set -ex | |
| # If we run in the fork (not from mesa or Marge-bot), reuse mainline kernel and rootfs, if exist. | |
| ROOTFS_URL="$(fdo_find_s3_path "$LAVA_ROOTFS_PATH")" || | |
| { | |
| set +x | |
| fdo_log_section_error "Sorry, I couldn't find a viable built path for ${LAVA_ROOTFS_PATH} in either mainline or a fork." >&2 | |
| echo "" >&2 | |
| echo "If you're working on CI, this probably means that you're missing a dependency:" >&2 | |
| echo "this job ran ahead of the job which was supposed to upload that artifact." >&2 | |
| echo "" >&2 | |
| echo "If you aren't working on CI, please ping @mesa/ci-helpers to see if we can help." >&2 | |
| echo "" >&2 | |
| echo "This job is going to fail, because I can't find the resources I need. Sorry." >&2 | |
| set -x | |
| exit 1 | |
| } | |
| rm -rf results | |
| mkdir results | |
| fdo_filter_env_vars > dut-env-vars.sh | |
| # Set SCRIPTS_DIR to point to the Mesa install we download for the DUT | |
| echo "export SCRIPTS_DIR='$CI_PROJECT_DIR/install'" >> dut-env-vars.sh | |
| fdo_log_section_end prepare_rootfs | |
| # Prepare env vars for upload. | |
| fdo_log_section_start_collapsed variables "Environment variables passed through to device:" | |
| cat dut-env-vars.sh | |
| fdo_log_section_end variables | |
| fdo_log_section_start_collapsed lava_submit "Submitting job for scheduling" | |
| touch results/lava.log | |
| tail -f results/lava.log & | |
| # Ensure that we are printing the commands that are being executed, | |
| # making it easier to debug the job in case it fails. | |
| set -x | |
| # List of optional overlays | |
| LAVA_EXTRA_OVERLAYS=() | |
| if [ -n "${LAVA_FIRMWARE:-}" ]; then | |
| for fw in $LAVA_FIRMWARE; do | |
| LAVA_EXTRA_OVERLAYS+=( | |
| - append-overlay | |
| --name=linux-firmware | |
| --url="https://${S3_BASE_PATH}/${FIRMWARE_REPO}/${fw}-${FIRMWARE_TAG}.tar" | |
| --path="/" | |
| --format=tar | |
| ) | |
| done | |
| fi | |
| LAVA_EXTRA_OVERLAYS+=( | |
| - append-overlay \ | |
| --name=kernel-build \ | |
| --url="${FDO_HTTP_CACHE_URI:-}https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}/kernel-files.tar.zst" \ | |
| --compression=zstd \ | |
| --path="${CI_PROJECT_DIR}" \ | |
| --format=tar \ | |
| ) | |
| lava-job-submitter \ | |
| --farm "${FARM}" \ | |
| --device-type "${DEVICE_TYPE}" \ | |
| --boot-method "${BOOT_METHOD}" \ | |
| --job-timeout-min $((CI_JOB_TIMEOUT/60 - 5)) \ | |
| --dump-yaml \ | |
| --pipeline-info "$CI_JOB_NAME: $CI_PIPELINE_URL on $CI_COMMIT_REF_NAME ${CI_NODE_INDEX}/${CI_NODE_TOTAL}" \ | |
| --rootfs-url "${ROOTFS_URL}" \ | |
| --kernel-url-prefix "https://${PIPELINE_ARTIFACTS_BASE}/${DEBIAN_ARCH}" \ | |
| --dtb-filename "${DTB}" \ | |
| --env-file dut-env-vars.sh \ | |
| --jwt-file "${S3_JWT_FILE}" \ | |
| --kernel-image-name "${KERNEL_IMAGE_NAME}" \ | |
| --kernel-image-type "${KERNEL_IMAGE_TYPE}" \ | |
| --visibility-group "${VISIBILITY_GROUP}" \ | |
| --lava-tags "${LAVA_TAGS}" \ | |
| --mesa-job-name "$CI_JOB_NAME" \ | |
| --structured-log-file "results/lava_job_detail.json" \ | |
| --ssh-client-image "${LAVA_SSH_CLIENT_IMAGE}" \ | |
| --project-dir "${CI_PROJECT_DIR}" \ | |
| --project-name "${CI_PROJECT_NAME}" \ | |
| --starting-section lava_submit \ | |
| --job-submitted-at "${CI_JOB_STARTED_AT}" \ | |
| "${LAVA_EXTRA_OVERLAYS[@]}" \ | |
| - submit \ | |
| >> results/lava.log |