Skip to content
Snippets Groups Projects
Commit 1d5e479f authored by Tim Jaacks's avatar Tim Jaacks
Browse files

Define MACHINE variable on job level

Instead of passing MACHINE from stage to stage or loading it from
testdata.json, use the original value from the Jinja2 loop and set it
directly for each job where it is used.
parent cdd47023
No related branches found
No related tags found
1 merge request!332Define MACHINE variable on job level
Pipeline #78852 passed with stage
in 2 minutes and 49 seconds
...@@ -134,6 +134,7 @@ platformtest:{{ machine }}: ...@@ -134,6 +134,7 @@ platformtest:{{ machine }}:
package-{{ machine }}: package-{{ machine }}:
extends: .package extends: .package
variables: variables:
MACHINE: {{ machine }}
PACKAGE_TYPE: image PACKAGE_TYPE: image
ASSOCIATED_BUILD_JOB: build-{{ machine }} ASSOCIATED_BUILD_JOB: build-{{ machine }}
needs: needs:
...@@ -151,12 +152,14 @@ deploy-{{ machine }}: ...@@ -151,12 +152,14 @@ deploy-{{ machine }}:
{% if CI_COMMIT_TAG is defined %} {% if CI_COMMIT_TAG is defined %}
stage: Deploy SoftwareStore stage: Deploy SoftwareStore
variables: variables:
MACHINE: {{ machine }}
DEPLOY_SOURCE: release/$${RELEASE_NAME} DEPLOY_SOURCE: release/$${RELEASE_NAME}
DEPLOY_TARGET: ${DEPLOY_RELEASE_TARGET} DEPLOY_TARGET: ${DEPLOY_RELEASE_TARGET}
DEPLOY_TARGET_LINK: ${DEPLOY_RELEASE_TARGET_LINK} DEPLOY_TARGET_LINK: ${DEPLOY_RELEASE_TARGET_LINK}
{% else %} {% else %}
stage: Deploy SoftwareStore Internal stage: Deploy SoftwareStore Internal
variables: variables:
MACHINE: {{ machine }}
DEPLOY_SOURCE: release/$${RELEASE_NAME} DEPLOY_SOURCE: release/$${RELEASE_NAME}
DEPLOY_TARGET: ${DEPLOY_INTERNAL_RELEASE_TARGET} DEPLOY_TARGET: ${DEPLOY_INTERNAL_RELEASE_TARGET}
DEPLOY_TARGET_LINK: ${DEPLOY_INTERNAL_RELEASE_TARGET_LINK} DEPLOY_TARGET_LINK: ${DEPLOY_INTERNAL_RELEASE_TARGET_LINK}
...@@ -174,6 +177,8 @@ deploy-{{ machine }}: ...@@ -174,6 +177,8 @@ deploy-{{ machine }}:
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
generate-alphaplan-data-{{ machine }}: generate-alphaplan-data-{{ machine }}:
extends: .generate_alphaplan_data extends: .generate_alphaplan_data
variables:
MACHINE: {{ machine }}
needs: needs:
- deploy-{{ machine }} - deploy-{{ machine }}
- build-version - build-version
...@@ -200,6 +205,7 @@ ftp-{{ machine }}: ...@@ -200,6 +205,7 @@ ftp-{{ machine }}:
tags: tags:
- ftp - ftp
variables: variables:
MACHINE: {{ machine }}
DEPLOY_SOURCE: release/$${RELEASE_NAME} DEPLOY_SOURCE: release/$${RELEASE_NAME}
DEPLOY_TARGET: ${DEPLOY_FTP_TARGET} DEPLOY_TARGET: ${DEPLOY_FTP_TARGET}
DEPLOY_TARGET_LINK: ${DEPLOY_FTP_TARGET_LINK} DEPLOY_TARGET_LINK: ${DEPLOY_FTP_TARGET_LINK}
...@@ -228,6 +234,7 @@ azure-{{ machine }}: ...@@ -228,6 +234,7 @@ azure-{{ machine }}:
when: manual when: manual
allow_failure: true allow_failure: true
variables: variables:
MACHINE: {{ machine }}
DEPLOY_SOURCE: release DEPLOY_SOURCE: release
DEPLOY_TARGET: ${AZURE_TARGET_FOLDER} DEPLOY_TARGET: ${AZURE_TARGET_FOLDER}
CONTAINER_NAME: ${AZURE_CONTAINER_NAME} CONTAINER_NAME: ${AZURE_CONTAINER_NAME}
......
...@@ -331,8 +331,6 @@ workflow: ...@@ -331,8 +331,6 @@ workflow:
artifacts: artifacts:
paths: paths:
- release/**/**/* - release/**/**/*
reports:
dotenv: package.env
timeout: 90m timeout: 90m
before_script: before_script:
# We do this manually since we do not use GitLab's default artifact downloader # We do this manually since we do not use GitLab's default artifact downloader
...@@ -347,11 +345,13 @@ workflow: ...@@ -347,11 +345,13 @@ workflow:
--doc-dir=. --doc-dir=.
--output-dir=release/${RELEASE_NAME} --output-dir=release/${RELEASE_NAME}
--release-version=${RELEASE_VERSION} --release-version=${RELEASE_VERSION}
--machine=${MACHINE}
- elif [[ "${PACKAGE_TYPE}" == "sdk" ]]; then - elif [[ "${PACKAGE_TYPE}" == "sdk" ]]; then
- .gitlab-ci/scripts/package_release.py - .gitlab-ci/scripts/package_release.py
--sdk-dir="${SDK_PATH}" --sdk-dir="${SDK_PATH}"
--output-dir=release/${RELEASE_NAME} --output-dir=release/${RELEASE_NAME}
--release-version=${RELEASE_VERSION} --release-version=${RELEASE_VERSION}
--machine=${MACHINE}
- fi - fi
cache: cache:
- key: ${CI_PIPELINE_ID}-${ASSOCIATED_BUILD_JOB} - key: ${CI_PIPELINE_ID}-${ASSOCIATED_BUILD_JOB}
...@@ -361,7 +361,6 @@ workflow: ...@@ -361,7 +361,6 @@ workflow:
policy: push policy: push
paths: paths:
- release - release
- package.env
# -------------------------------------------------------------------------------------- # --------------------------------------------------------------------------------------
# Stage: deploy # Stage: deploy
...@@ -371,10 +370,9 @@ workflow: ...@@ -371,10 +370,9 @@ workflow:
- when: manual - when: manual
allow_failure: true allow_failure: true
before_script: before_script:
# We do this manually since we do not use GitLab's default artifact downloader # Save MACHINE for confluence stage. This variable cannot be passed directly on the
- source package.env # job definition level because the confluence stage is machine-independent.
# Save dotenv data for next stage - echo "MACHINE=${MACHINE}" > deploy.env
- echo "MACHINE=${MACHINE}" >> deploy.env
# Expand eventual nested variables contained within the DEPLOY_* variables # Expand eventual nested variables contained within the DEPLOY_* variables
# FIXME: For now we need a double 'eval' here due to a GitLab bug: # FIXME: For now we need a double 'eval' here due to a GitLab bug:
# https://gitlab.com/gitlab-org/gitlab/-/issues/273409 # https://gitlab.com/gitlab-org/gitlab/-/issues/273409
...@@ -495,7 +493,6 @@ workflow: ...@@ -495,7 +493,6 @@ workflow:
rules: rules:
- if: $ALPHAPLAN_STAGE == "true" - if: $ALPHAPLAN_STAGE == "true"
script: script:
# MACHINE is available from deploy.env
# RELEASE_NAME is available from build-version.env # RELEASE_NAME is available from build-version.env
- .gitlab-ci/scripts/generate_alphaplan_fwr_file.py - .gitlab-ci/scripts/generate_alphaplan_fwr_file.py
--machine="${MACHINE}" --machine="${MACHINE}"
......
...@@ -92,6 +92,12 @@ def main(): ...@@ -92,6 +92,12 @@ def main():
dest="release_version", dest="release_version",
required=True, required=True,
) )
parser.add_argument(
"--machine",
help="""Machine""",
dest="machine",
required=True,
)
args, _ = parser.parse_known_args() args, _ = parser.parse_known_args()
# Get bitbake variables from testdata.json file # Get bitbake variables from testdata.json file
...@@ -118,7 +124,6 @@ def main(): ...@@ -118,7 +124,6 @@ def main():
with open(testdata_files[0], "r", encoding="utf-8") as f: with open(testdata_files[0], "r", encoding="utf-8") as f:
buildvars = json.load(f) buildvars = json.load(f)
machine = buildvars["MACHINE"]
sdkname = buildvars["TOOLCHAIN_OUTPUTNAME"] sdkname = buildvars["TOOLCHAIN_OUTPUTNAME"]
image_artifacts = buildvars["DISTRO_IMAGES"].split() image_artifacts = buildvars["DISTRO_IMAGES"].split()
artifacts = buildvars["DISTRO_RELEASE_ARTEFACTS"].split() artifacts = buildvars["DISTRO_RELEASE_ARTEFACTS"].split()
...@@ -176,7 +181,7 @@ def main(): ...@@ -176,7 +181,7 @@ def main():
# Generate metadata file # Generate metadata file
generate_metadata( generate_metadata(
machine, args.machine,
args.release_version, args.release_version,
artifacts, artifacts,
sdkname, sdkname,
...@@ -185,23 +190,19 @@ def main(): ...@@ -185,23 +190,19 @@ def main():
artifacts.append(os.path.join(args.images_dir, "metainfo.json")) artifacts.append(os.path.join(args.images_dir, "metainfo.json"))
# Copy files # Copy files
copy_files(artifacts, os.path.join(args.output_dir, machine)) copy_files(artifacts, os.path.join(args.output_dir, args.machine))
# Package SDK # Package SDK
if args.sdk_dir is not None: if args.sdk_dir is not None:
sdkfiles = glob.glob(os.path.join(args.sdk_dir, f"{sdkname}*")) sdkfiles = glob.glob(os.path.join(args.sdk_dir, f"{sdkname}*"))
# Generate MD5 sums file # Generate MD5 sums file
sdk_md5sums_file = os.path.join(machine, "sdk", "md5sums.txt") sdk_md5sums_file = os.path.join(args.machine, "sdk", "md5sums.txt")
generate_md5sums_file(sdkfiles, sdk_md5sums_file) generate_md5sums_file(sdkfiles, sdk_md5sums_file)
sdkfiles.append(sdk_md5sums_file) sdkfiles.append(sdk_md5sums_file)
# Copy files # Copy files
copy_files(sdkfiles, os.path.join(args.output_dir, machine, "sdk")) copy_files(sdkfiles, os.path.join(args.output_dir, args.machine, "sdk"))
# Store pathes and other stuff in environment variable file
with open("package.env", "w", encoding="utf-8") as env_file:
env_file.write(f"MACHINE={machine}\n")
if __name__ == "__main__": if __name__ == "__main__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment