Newer
Older
# ---------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------
Jonas Höppner
committed
variables:
# CI_IMAGES_BASEPATH: Environment variable configure in gitlab
CI_IMAGES_PATH: ${CI_IMAGES_BASEPATH}/ci-images
CI_IMAGES_REVISION: 44965ccdd847f1e077670f49d546047f8ad0110c
CI_IMAGE_PYTHON: "${CI_IMAGES_PATH}/python/3.9:${CI_IMAGES_REVISION}"
CI_IMAGE_YOCTO: "${CI_IMAGES_PATH}/yocto-build/ubuntu-20.04:${CI_IMAGES_REVISION}"
Jonas Höppner
committed
image: "${CI_IMAGE_PYTHON}"
default:
tags:
- infrastructure
# ---------------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------------
pylint:
stage: analyze
timeout: 2m
script:
- pylint --rcfile=pylintrc *.py
black:
stage: analyze
timeout: 2m
script:
- black --diff --check *.py
executable:
stage: analyze
timeout: 2m
script:
- (! find ! -executable -name "*.py" -exec echo "not executable:"" {}" \; | grep .)
yamllint:
stage: analyze
timeout: 2m
script:
- yamllint -c .yamllint.yml *.yml .*.yml
# ---------------------------------------------------------------------------------------
Jonas Höppner
committed
# Stage: deploy-test
# ---------------------------------------------------------------------------------------
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
.foobar-manifest-projects:
variables:
PROJECT_ROOT:
${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/ci-test
MANIFEST_PROJECT:
${PROJECT_ROOT}/minimal-manifest
DEPLOY_TO:
${PROJECT_ROOT}/minimal-foo
${PROJECT_ROOT}/minimal-bar
.manifest-projects:
variables:
PROJECT_ROOT:
${CI_PROJECT_ROOT_NAMESPACE}
MANIFEST_PROJECT:
${PROJECT_ROOT}/yocto/manifest
DEPLOY_TO:
${PROJECT_ROOT}/3rd-party/kuk/uboot-imx-kuk
${PROJECT_ROOT}/kernel/linux-guf
${PROJECT_ROOT}/kernel/linux-imx-kuk
${PROJECT_ROOT}/kernel/modules/egalaxi2c
${PROJECT_ROOT}/kernel/modules/gfplatdetect
${PROJECT_ROOT}/tools/gf-emc-test-suite
${PROJECT_ROOT}/tools/gf-productiontests
${PROJECT_ROOT}/tools/gfeeprom
${PROJECT_ROOT}/tools/gfxml2dto
${PROJECT_ROOT}/tools/guf-show-demo
${PROJECT_ROOT}/tools/libmdb
${PROJECT_ROOT}/tools/touchcal-conv
${PROJECT_ROOT}/tools/xconfig
${PROJECT_ROOT}/yocto/config
${PROJECT_ROOT}/yocto/layers/meta-guf-distro
${PROJECT_ROOT}/yocto/layers/meta-guf-machine
Jonas Höppner
committed
.deploy:
rules:
- if: $CI_MERGE_REQUEST_IID
script:
- cd ${CI_PROJECT_DIR}
- ./deploy_gitlab_ci.py
--gitlab-url=${CI_SERVER_URL}
--token=${GITBOT_TOKEN}
Jonas Höppner
committed
--manifest-project=${MANIFEST_PROJECT}
Jonas Höppner
committed
${DEPLOY_TO}
- ./generate_job_from_template.py
--template=gitlab-ci-integration.jinja2
--image=${CI_IMAGE_PYTHON}
--branch="integrate/${CI_PROJECT_NAME}/${CI_COMMIT_REF_NAME}"
--manifest-project=${MANIFEST_PROJECT}
--parent_merge_request="${CI_MERGE_REQUEST_PROJECT_URL}/-/merge_requests/${CI_MERGE_REQUEST_IID}"
Jonas Höppner
committed
${DEPLOY_TO}
> integration.yml
- cat integration.yml
artifacts:
paths:
- integration.yml
extends:
- .deploy
- .manifest-projects
Jonas Höppner
committed
deploy-foobar:
extends:
- .deploy
- .foobar-manifest-projects
Jonas Höppner
committed
rules:
- if: $CI_MERGE_REQUEST_IID
needs: [deploy]
trigger:
include:
- artifact: integration.yml
job: deploy
strategy: depend
Jonas Höppner
committed
trigger-foobar:
rules:
- if: $CI_MERGE_REQUEST_IID
needs: [deploy-foobar]
Jonas Höppner
committed
trigger:
include:
- artifact: integration.yml
job: deploy-foobar
strategy: depend
# --------------------------------------------------------------------------------------
# Stage: merge
# --------------------------------------------------------------------------------------
.merge:
stage: merge
rules:
- if: $CI_COMMIT_BRANCH == "master"
script:
- cd ${CI_PROJECT_DIR}
- ./merge_gitlab_ci.py
--gitlab-url=${CI_SERVER_URL}
--token=${GITBOT_TOKEN}
--manifest-project=${MANIFEST_PROJECT}
--submodule=.gitlab-ci
--revision=${CI_COMMIT_SHA}
${DEPLOY_TO}
merge-foobar:
extends:
- .merge
- .foobar-manifest-projects
Jonas Höppner
committed
merge:
extends:
- .merge
- .manifest-projects
# --------------------------------------------------------------------------------------
# Stage: check
# --------------------------------------------------------------------------------------
check:
stage: check
rules:
- if: $CI_MERGE_REQUEST_IID
tags:
- infrastructure
timeout: 2m
script:
- cd ${CI_PROJECT_DIR}
- MERGE_REQUEST="${CI_MERGE_REQUEST_IID}";
- ./check_if_integration_branch_is_up_to_date.py
--gitlab-url=${CI_SERVER_URL}
--token=${GITBOT_TOKEN}
--manifest-project=${CI_PROJECT_ROOT_NAMESPACE}/yocto/manifest
--integration-base=${MASTER_BRANCH}
--project=${CI_PROJECT_PATH}
--merge-request=${CI_MERGE_REQUEST_IID}
# The check is done for both manifests in one job as the retrigger
# looks for jobs named check, though there can only be one
- ./check_if_integration_branch_is_up_to_date.py
--gitlab-url=${CI_SERVER_URL}
--token=${GITBOT_TOKEN}
--manifest-project
${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/ci-test/minimal-manifest
--integration-base=master
--project=${CI_PROJECT_PATH}
--merge-request=${CI_MERGE_REQUEST_IID}