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