Newer
Older
# --------------------------------------------------------------------------------------
# Global
# --------------------------------------------------------------------------------------
include:
- local: common.yml
stages:
- retrigger
variables:
# Default image and distro
CI_PARAM_IMAGE: guf-image
CI_PARAM_DISTRO: guf-wayland
# Flash-N-Go image and distro
#
# In the past, the buildfng job overwrote the image and distro itself.
# Because of the transition to the new seconorth names, the image and
# distro for the buildfng must be settable from outside of the job.
CI_PARAM_IMAGE_FNG: fngsystem-image
CI_PARAM_DISTRO_FNG: guf-fngsystem
# List of machines to build images for:
CI_PARAM_MACHINES: imx6guf imx6ullguf imx8mguf imx8mpguf
# The id of the gitlab project used in the rules section
# to not run pipelines in forked projects
# Using variable here, to allow override in other projects
# including this file
MANIFEST_PROJECT_ID: 1725
# In the manifest, the remotes are specified by an identifier
# This is used to find out included projects for the retrigger
# job. In costum manifests, the remote may be named differently
# so we need a variable that may be overriden.
CI_PARAM_SECO_REMOTE: seco-ne
workflow:
rules:
# Explicitly allow externally triggered pipelines in every case
- if: $CI_PIPELINE_SOURCE == "pipeline" || $CI_PIPELINE_SOURCE == "api"
# Do not run pipelines for merge requests
- if: $CI_MERGE_REQUEST_IID
when: never
# Do not run pipelines on forked projects
# (use id instead of name because of rename)
- if: $CI_PROJECT_ID != $MANIFEST_PROJECT_ID
when: never
# Do not run pipelines on integration branches
- if: $CI_COMMIT_REF_NAME =~ /^integrate\/.*/
when: never
# In all other cases, run the pipeline automatically
- when: always
# --------------------------------------------------------------------------------------
# Stage: retrigger
# --------------------------------------------------------------------------------------
retrigger:
extends: .infrastructure
stage: retrigger
rules:
- if: $CI_COMMIT_REF_NAME == $MASTER_BRANCH_MANIFEST && $CI_PIPELINE_SOURCE != "api"
script:
- PROJECTS=$(
.gitlab-ci/scripts/get_manifest_projects.py
--manifest=default.xml
--remote=${CI_PARAM_SECO_REMOTE}
--concat-namespaces
)
# Add the gitlab-ci project
- PROJECTS="$PROJECTS ${CI_PROJECT_ROOT_NAMESPACE}/yocto/infrastructure/gitlab-ci"
# TODO retrigger gitlab-ci integration also
# Retrigger also project in SRCREV
- echo -e "Projects:\n${PROJECTS}"
- for PROJECT in ${PROJECTS}; do
.gitlab-ci/scripts/retrigger_mr_pipeline_jobs.py
--gitlab-url=${CI_SERVER_URL}
--token=${GITBOT_TOKEN}
--project=${PROJECT}
--state=opened
--target-branch=${MASTER_BRANCH_MANIFEST}
--job=check
;
done
# --------------------------------------------------------------------------------------
# Stage: infrastructure
# --------------------------------------------------------------------------------------
generate-build-jobs:
extends: .infrastructure
- if: $CI_COMMIT_REF_NAME != $MASTER_BRANCH_MANIFEST || $CI_PIPELINE_SOURCE == "api"
- .gitlab-ci/scripts/generate_job_from_template.py
--template=.gitlab-ci/build-jobs.jinja2
--distro=$CI_PARAM_DISTRO
--yocto_image=$CI_PARAM_IMAGE
--distro_fng=$CI_PARAM_DISTRO_FNG
--fngsystem_image=$CI_PARAM_IMAGE_FNG
--gitlab_ci_current_rev=$GITLAB_CI_CURRENT_REV
--ci_project_root_namespace=$CI_PROJECT_ROOT_NAMESPACE
--master_branch_manifest=$MASTER_BRANCH_MANIFEST
$CI_PARAM_MACHINES
> build-jobs.yml
artifacts:
expire_in: 4 weeks
- build-jobs.yml
trigger-build-jobs:
stage: infrastructure
needs: ["generate-build-jobs"]
- if: $CI_COMMIT_REF_NAME != $MASTER_BRANCH_MANIFEST || $CI_PIPELINE_SOURCE == "api"
trigger:
include:
- artifact: build-jobs.yml
job: generate-build-jobs
strategy: depend
yamllint:
extends: .yamllint