test(cicd): Implement new pipe with anchor

This commit is contained in:
Simon Pistache 2023-05-08 10:48:11 +02:00
parent 9941fa7bac
commit 03cce7edee
2 changed files with 107 additions and 41 deletions

View File

@ -1,49 +1,110 @@
# This file is a template, and might need editing before it works on your project. stages:
# This is a sample GitLab CI/CD configuration file that should run without any modifications. - Manifest
# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, - Test
# it uses echo commands to simulate the pipeline execution. - Bundle
# - Distribute
# A pipeline is composed of independent jobs that run scripts, grouped into stages. - Release
# Stages run in sequential order, but jobs within stages run in parallel.
#
# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages
#
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml
stages: # List of stages for jobs, and their order of execution variables:
- build ENTRY_FOLDER: test/
- test RELEASE_VERSION: v0.$CI_PIPELINE_IID
- deploy PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE_NAME}/${RELEASE_VERSION}"
build-job: # This job runs in the build stage, which runs first. .gen-manifest-job: &gen-manifest
stage: build stage: Manifest
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script: script:
- echo "Compiling the code..." - echo testing ${PACKAGE_NAME}.md
- echo "Compile complete."
unit-test-job: # This job runs in the test stage. gen-manifest-job/valid_set:
stage: test # It only starts when the job in the build stage completes successfully. variables:
script: PACKAGE_NAME: "valid_set"
- echo "Running unit tests... This will take about 60 seconds." <<: *gen-manifest
- sleep 60
- echo "Code coverage is 90%"
lint-test-job: # This job also runs in the test stage. .check-content-job: &check-content
stage: test # It can run at the same time as unit-test-job (in parallel). stage: Test
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script: script:
- echo "Linting code... This will take about 10 seconds." - echo testing ${PACKAGE_NAME}.md
- sleep 10
- echo "No lint issues found."
deploy-job: # This job runs in the deploy stage. check-content-job/valid_set:
stage: deploy # It only runs when *both* jobs in the test stage complete successfully. variables:
environment: production PACKAGE_NAME: "valid_set"
<<: *check-content
.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: script:
- echo "Deploying application..." - zip -j ${PACKAGE_NAME}.zip ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
- echo "Application successfully deployed." 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

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"conventionalCommits.scopes": [
"cicd"
]
}