Wallset/.gitlab/.gitlab-ci.yml
2023-05-08 11:19:47 +02:00

114 lines
3.1 KiB
YAML

stages:
- Manifest
- Test
- Bundle
- Distribute
- Release
variables:
ENTRY_FOLDER: "test/"
RELEASE_VERSION: v0.$CI_PIPELINE_IID
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE_NAME}/${RELEASE_VERSION}"
# Jobs from here run on Merge Requests as prerequisite for merging.
.gen-manifest-job: &gen-manifest
stage: Manifest
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
# TODO: refacto this (as Reference or something else)
- test/${PACKAGE_NAME}/*
script:
- echo generating manifest for ${ENTRY_FOLDER}/${PACKAGE_NAME}
gen-manifest-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
<<: *gen-manifest
.check-content-job: &check-content
stage: Test
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- echo testing ${ENTRY_FOLDER}/${PACKAGE_NAME}
check-content-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
<<: *check-content
# Jobs from here run Merged_results or Push/Merge Commits to the main branch. Tag is created on release so no run with tag creation
.bundle-job: &bundle
stage: Bundle
image: javieraviles/zip:latest
rules:
- if: $CI_COMMIT_TAG
when: never # Do not run this job when a tag is created manually
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- zip -j ${PACKAGE_NAME}.zip ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
artifacts:
paths:
- ${PACKAGE_NAME}.zip
when: on_success
expire_in: "1 hour"
bundle-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
<<: *bundle
.upload-job: &upload
stage: Distribute
image: curlimages/curl:latest
rules:
- if: $CI_COMMIT_TAG
when: never # Do not run this job when a tag is created manually
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- |
curl --fail \
--header "JOB-TOKEN: ${CI_JOB_TOKEN}" \
--upload-file ${PACKAGE_NAME}.zip "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME}.zip?select=package_file"
# upload-job/valid_set:
# needs:
# - bundle-job/valid_set
# variables:
# PACKAGE_NAME: "valid_set"
# <<: *upload
.release-job: &release
stage: Release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_TAG
when: never # Do not run this job when a tag is created manually
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- echo "Releasing assets for $PACKAGE_NAME"
release:
name: "Release $PACKAGE_NAME $RELEASE_VERSION"
tag_name: "$PACKAGE_NAME.$RELEASE_VERSION"
description: "Version $RELEASE_VERSION"
ref: "$CI_COMMIT_SHA"
assets:
links:
- name: ${PACKAGE_NAME}
url: "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME}.zip"
# release-job/valid_set:
# needs:
# - upload-job/valid_set
# variables:
# PACKAGE_NAME: "valid_set"
# <<: *release