include: - .gitlab/*.yml stages: - Manifest - Test - Bundle - Distribute - Release variables: ENTRY_FOLDER: assets RELEASE_VERSION: v0.$CI_MERGE_REQUEST_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. .manifest-job: stage: Manifest image: node:latest rules: - if: $CI_COMMIT_TAG when: never - changes: - ${ENTRY_FOLDER}/${PACKAGE_NAME}/* script: - cd src/ - npm install - npm run start - cat ../${ENTRY_FOLDER}/${PACKAGE_NAME}/theme.json - npm run test artifacts: paths: - ${ENTRY_FOLDER}/${PACKAGE_NAME}/theme.json when: on_success expire_in: "1 hour" .test-job: stage: Test image: python:latest rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" changes: - ${ENTRY_FOLDER}/${PACKAGE_NAME}/* script: - pip install -U pytest pillow iteration_utilities - python -m pytest src/test_images.py --tb=line -rA --color=yes allow_failure: true # 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: stage: Bundle image: javieraviles/zip:latest rules: - if: $CI_COMMIT_TAG when: never - 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" .upload-job: stage: Distribute image: curlimages/curl:latest rules: - if: $CI_COMMIT_TAG when: never - 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" .release-job: stage: Release image: registry.gitlab.com/gitlab-org/release-cli:latest rules: - if: $CI_COMMIT_TAG when: never - 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"