mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-08 19:56:24 -04:00
The current s3cp implementation does not work anymore after the migration, and instead of fixing it and propagating the fix down to us, it's simpler to directly use curl. Uprev mesa [1][2] to adapt these changes. Also replace broken s3cp command with a curl wrapper call in drm-ci. [1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34120 [2] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34244 Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com> Patchwork: https://patchwork.freedesktop.org/patch/645597/ Signed-off-by: Rob Clark <robdclark@chromium.org>
328 lines
10 KiB
YAML
328 lines
10 KiB
YAML
variables:
|
|
DRM_CI_PROJECT_PATH: &drm-ci-project-path mesa/mesa
|
|
DRM_CI_COMMIT_SHA: &drm-ci-commit-sha f73132f1215a37ce8ffc711a0136c90649aaf128
|
|
|
|
UPSTREAM_REPO: https://gitlab.freedesktop.org/drm/kernel.git
|
|
TARGET_BRANCH: drm-next
|
|
|
|
IGT_VERSION: 04bedb9238586b81d4d4ca62b02e584f6cfc77af
|
|
|
|
DEQP_RUNNER_GIT_URL: https://gitlab.freedesktop.org/mesa/deqp-runner.git
|
|
DEQP_RUNNER_GIT_TAG: v0.20.0
|
|
|
|
FDO_UPSTREAM_REPO: helen.fornazier/linux # The repo where the git-archive daily runs
|
|
MESA_TEMPLATES_COMMIT: &ci-templates-commit d5aa3941aa03c2f716595116354fb81eb8012acb
|
|
DRM_CI_PROJECT_URL: https://gitlab.freedesktop.org/${DRM_CI_PROJECT_PATH}
|
|
CI_PRE_CLONE_SCRIPT: |-
|
|
set -o xtrace
|
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 -s ${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh -o download-git-cache.sh
|
|
bash download-git-cache.sh
|
|
rm download-git-cache.sh
|
|
set +o xtrace
|
|
S3_JWT_FILE: /s3_jwt
|
|
S3_JWT_HEADER_FILE: /s3_jwt_header
|
|
S3_JWT_FILE_SCRIPT: |-
|
|
echo -n '${S3_JWT}' > '${S3_JWT_FILE}' &&
|
|
echo -n "Authorization: Bearer ${S3_JWT}" > '${S3_JWT_HEADER_FILE}' &&
|
|
unset CI_JOB_JWT S3_JWT # Unsetting vulnerable env variables
|
|
S3_HOST: s3.freedesktop.org
|
|
# This bucket is used to fetch the kernel image
|
|
S3_KERNEL_BUCKET: mesa-rootfs
|
|
# Bucket for git cache
|
|
S3_GITCACHE_BUCKET: git-cache
|
|
# Bucket for the pipeline artifacts pushed to S3
|
|
S3_ARTIFACTS_BUCKET: artifacts
|
|
# per-pipeline artifact storage on MinIO
|
|
PIPELINE_ARTIFACTS_BASE: ${S3_HOST}/${S3_ARTIFACTS_BUCKET}/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}
|
|
# per-job artifact storage on MinIO
|
|
JOB_ARTIFACTS_BASE: ${PIPELINE_ARTIFACTS_BASE}/${CI_JOB_ID}
|
|
KERNEL_IMAGE_BASE: https://${S3_HOST}/${S3_KERNEL_BUCKET}/${KERNEL_REPO}/${KERNEL_TAG}
|
|
LAVA_TAGS: subset-1-gfx
|
|
LAVA_JOB_PRIORITY: 30
|
|
ARTIFACTS_BASE_URL: https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts
|
|
# Python scripts for structured logger
|
|
PYTHONPATH: "$PYTHONPATH:$CI_PROJECT_DIR/install"
|
|
|
|
|
|
default:
|
|
id_tokens:
|
|
S3_JWT:
|
|
aud: https://s3.freedesktop.org
|
|
before_script:
|
|
- export SCRIPTS_DIR=$(mktemp -d)
|
|
- curl -L -s --retry 4 -f --retry-all-errors --retry-delay 60 -O --output-dir "${SCRIPTS_DIR}" "${DRM_CI_PROJECT_URL}/-/raw/${DRM_CI_COMMIT_SHA}/.gitlab-ci/setup-test-env.sh"
|
|
- source ${SCRIPTS_DIR}/setup-test-env.sh
|
|
- eval "$S3_JWT_FILE_SCRIPT"
|
|
|
|
- echo -e "\e[0Ksection_start:$(date +%s):drm_ci_download_section[collapsed=true]\r\e[0KDownloading mesa from $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz"
|
|
- cd $CI_PROJECT_DIR
|
|
- curl --output - $DRM_CI_PROJECT_URL/-/archive/$DRM_CI_COMMIT_SHA/mesa-$DRM_CI_COMMIT_SHA.tar.gz | tar -xz
|
|
- mv mesa-$DRM_CI_COMMIT_SHA/.gitlab-ci* .
|
|
- mv mesa-$DRM_CI_COMMIT_SHA/bin .
|
|
- rm -rf mesa-$DRM_CI_COMMIT_SHA/
|
|
- echo -e "\e[0Ksection_end:$(date +%s):drm_ci_download_section\r\e[0K"
|
|
|
|
after_script:
|
|
- >
|
|
set +x
|
|
|
|
test -e "${S3_JWT_FILE}" &&
|
|
export S3_JWT="$(<${S3_JWT_FILE})" &&
|
|
rm "${S3_JWT_FILE}"
|
|
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: 16bc29078de5e0a067ff84a1a199a3760d3b3811
|
|
file:
|
|
- '/templates/ci-fairy.yml'
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *ci-templates-commit
|
|
file:
|
|
- '/templates/alpine.yml'
|
|
- '/templates/debian.yml'
|
|
- '/templates/fedora.yml'
|
|
- project: *drm-ci-project-path
|
|
ref: *drm-ci-commit-sha
|
|
file:
|
|
- '/.gitlab-ci/build/gitlab-ci.yml'
|
|
- '/.gitlab-ci/container/gitlab-ci.yml'
|
|
- '/.gitlab-ci/farm-rules.yml'
|
|
- '/.gitlab-ci/lava/lava-gitlab-ci.yml'
|
|
- '/.gitlab-ci/test-source-dep.yml'
|
|
- '/.gitlab-ci/test/gitlab-ci.yml'
|
|
- '/src/amd/ci/gitlab-ci-inc.yml'
|
|
- '/src/freedreno/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/crocus/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/llvmpipe/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/nouveau/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/softpipe/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/virgl/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/drivers/zink/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/frontends/lavapipe/ci/gitlab-ci-inc.yml'
|
|
- '/src/gallium/frontends/rusticl/ci/gitlab-ci.yml'
|
|
- '/src/intel/ci/gitlab-ci-inc.yml'
|
|
- '/src/microsoft/ci/gitlab-ci-inc.yml'
|
|
- '/src/nouveau/ci/gitlab-ci-inc.yml'
|
|
- '/src/virtio/ci/gitlab-ci-inc.yml'
|
|
- drivers/gpu/drm/ci/image-tags.yml
|
|
- drivers/gpu/drm/ci/container.yml
|
|
- drivers/gpu/drm/ci/static-checks.yml
|
|
- drivers/gpu/drm/ci/build.yml
|
|
- drivers/gpu/drm/ci/test.yml
|
|
- 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
|
|
|
|
|
|
stages:
|
|
- sanity
|
|
- container
|
|
- git-archive
|
|
- build-for-tests
|
|
- build-only
|
|
- code-validation
|
|
- amdgpu
|
|
- i915
|
|
- mediatek
|
|
- meson
|
|
- msm
|
|
- panfrost
|
|
- powervr
|
|
- rockchip
|
|
- software-driver
|
|
|
|
|
|
# YAML anchors for rule conditions
|
|
# --------------------------------
|
|
.rules-anchors:
|
|
rules:
|
|
# do not duplicate pipelines on merge pipelines
|
|
- if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS && $CI_PIPELINE_SOURCE == "push"
|
|
when: never
|
|
# merge pipeline
|
|
- if: &is-merge-attempt $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
# post-merge pipeline
|
|
- if: &is-post-merge $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "push"
|
|
# Pre-merge pipeline
|
|
- if: &is-pre-merge $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
# Push to a branch on a fork
|
|
- if: &is-fork-push $CI_PIPELINE_SOURCE == "push"
|
|
# nightly pipeline
|
|
- if: &is-scheduled-pipeline $CI_PIPELINE_SOURCE == "schedule"
|
|
# pipeline for direct pushes that bypassed the CI
|
|
- if: &is-direct-push $CI_PIPELINE_SOURCE == "push" && $GITLAB_USER_LOGIN != "marge-bot"
|
|
|
|
|
|
# Rules applied to every job in the pipeline
|
|
.common-rules:
|
|
rules:
|
|
- if: *is-fork-push
|
|
when: manual
|
|
|
|
|
|
.never-post-merge-rules:
|
|
rules:
|
|
- if: *is-post-merge
|
|
when: never
|
|
|
|
|
|
.container+build-rules:
|
|
rules:
|
|
- !reference [.common-rules, rules]
|
|
# Run when re-enabling a disabled farm, but not when disabling it
|
|
- !reference [.disable-farm-mr-rules, rules]
|
|
# Never run immediately after merging, as we just ran everything
|
|
- !reference [.never-post-merge-rules, rules]
|
|
# Build everything in merge pipelines
|
|
- if: *is-merge-attempt
|
|
when: on_success
|
|
# Same as above, but for pre-merge pipelines
|
|
- if: *is-pre-merge
|
|
when: manual
|
|
# Build everything after someone bypassed the CI
|
|
- if: *is-direct-push
|
|
when: manual
|
|
# Build everything in scheduled pipelines
|
|
- if: *is-scheduled-pipeline
|
|
when: on_success
|
|
# Allow building everything in fork pipelines, but build nothing unless
|
|
# manually triggered
|
|
- when: manual
|
|
|
|
|
|
# Repeat of the above but with `when: on_success` replaced with
|
|
# `when: delayed` + `start_in:`, for build-only jobs.
|
|
# Note: make sure the branches in this list are the same as in
|
|
# `.container+build-rules` above.
|
|
.build-only-delayed-rules:
|
|
rules:
|
|
- !reference [.common-rules, rules]
|
|
# Run when re-enabling a disabled farm, but not when disabling it
|
|
- !reference [.disable-farm-mr-rules, rules]
|
|
# Never run immediately after merging, as we just ran everything
|
|
- !reference [.never-post-merge-rules, rules]
|
|
# Build everything in merge pipelines
|
|
- if: *is-merge-attempt
|
|
when: delayed
|
|
start_in: &build-delay 5 minutes
|
|
# Same as above, but for pre-merge pipelines
|
|
- if: *is-pre-merge
|
|
when: manual
|
|
# Build everything after someone bypassed the CI
|
|
- if: *is-direct-push
|
|
when: manual
|
|
# Build everything in scheduled pipelines
|
|
- if: *is-scheduled-pipeline
|
|
when: delayed
|
|
start_in: *build-delay
|
|
# Allow building everything in fork pipelines, but build nothing unless
|
|
# manually triggered
|
|
- when: manual
|
|
|
|
|
|
.ci-deqp-artifacts:
|
|
artifacts:
|
|
name: "${CI_PROJECT_NAME}_${CI_JOB_NAME}"
|
|
when: always
|
|
untracked: false
|
|
paths:
|
|
# Watch out! Artifacts are relative to the build dir.
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
|
|
- artifacts
|
|
- _build/meson-logs/*.txt
|
|
- _build/meson-logs/strace
|
|
|
|
|
|
# Git archive
|
|
make git archive:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: git-archive
|
|
rules:
|
|
- !reference [.scheduled_pipeline-rules, rules]
|
|
# ensure we are running on packet
|
|
tags:
|
|
- packet.net
|
|
script:
|
|
# Remove drm-ci files we just added
|
|
- rm -rf .gitlab-ci.*
|
|
- rm -rf ci
|
|
|
|
# Compactify the .git directory
|
|
- git gc --aggressive
|
|
# compress the current folder
|
|
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
|
|
|
|
# Use id_tokens for JWT auth
|
|
- s3_upload ../$CI_PROJECT_NAME.tar.gz https://$S3_HOST/${S3_GITCACHE_BUCKET}/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/
|
|
|
|
|
|
# Sanity checks of MR settings and commit logs
|
|
sanity:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: sanity
|
|
rules:
|
|
- if: *is-pre-merge
|
|
when: on_success
|
|
- when: never
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
# ci-fairy check-commits --junit-xml=check-commits.xml
|
|
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
|
|
- |
|
|
set -eu
|
|
image_tags=(
|
|
ALPINE_X86_64_LAVA_SSH_TAG
|
|
CONTAINER_TAG
|
|
DEBIAN_BASE_TAG
|
|
DEBIAN_BUILD_TAG
|
|
DEBIAN_PYUTILS_TAG
|
|
DEBIAN_TEST_GL_TAG
|
|
KERNEL_ROOTFS_TAG
|
|
KERNEL_TAG
|
|
PKG_REPO_REV
|
|
)
|
|
for var in "${image_tags[@]}"
|
|
do
|
|
if [ "$(echo -n "${!var}" | wc -c)" -gt 20 ]
|
|
then
|
|
echo "$var is too long; please make sure it is at most 20 chars."
|
|
exit 1
|
|
fi
|
|
done
|
|
artifacts:
|
|
when: on_failure
|
|
reports:
|
|
junit: check-*.xml
|
|
tags:
|
|
- placeholder-job
|
|
|
|
|
|
mr-label-maker-test:
|
|
extends:
|
|
- .fdo.ci-fairy
|
|
stage: sanity
|
|
rules:
|
|
- !reference [.mr-label-maker-rules, rules]
|
|
variables:
|
|
GIT_STRATEGY: fetch
|
|
timeout: 10m
|
|
script:
|
|
- set -eu
|
|
- python3 -m venv .venv
|
|
- source .venv/bin/activate
|
|
- pip install git+https://gitlab.freedesktop.org/freedesktop/mr-label-maker
|
|
- mr-label-maker --dry-run --mr $CI_MERGE_REQUEST_IID
|
|
|
|
|
|
# Jobs that need to pass before spending hardware resources on further testing
|
|
.required-for-hardware-jobs:
|
|
needs:
|
|
- job: clang-format
|
|
optional: true
|
|
- job: rustfmt
|
|
optional: true
|
|
- job: toml-lint
|
|
optional: true
|