Compare commits

...

6 Commits

Author SHA1 Message Date
Simon
5c4b1e769c Merge branch 'cicd' into 'main'
Cicd

See merge request Thoscellen/Wallset!2
2023-05-08 14:09:30 +00:00
Simon
3487e5da0b Cicd 2023-05-08 14:09:30 +00:00
Simon
0f093d4359 Merge branch 'cicd' into 'main'
Cicd

See merge request Thoscellen/Wallset!1
2023-05-08 09:26:33 +00:00
Simon
84b696b411 Cicd 2023-05-08 09:26:33 +00:00
9941fa7bac move .gitlab-ci.yml file 2023-04-26 18:45:40 +02:00
Simon
5d4770dfe1 Update .gitlab-ci.yml file 2023-04-26 16:39:55 +00:00
11 changed files with 229 additions and 23 deletions

165
.gitlab/.gitlab-ci.yml Normal file
View File

@ -0,0 +1,165 @@
stages:
- Manifest
- Test
- Bundle
- Distribute
- Release
variables:
ENTRY_FOLDER: "test" # test directory for testing CI/CD, or assets directory for normal operations
RELEASE_VERSION: v0.$CI_PIPELINE_IID
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGE_NAME}/${RELEASE_VERSION}"
# TODO: to reenable later
# Jobs from here run on Merge Requests as prerequisite for merging.
.manifest-job: &manifest
stage: Manifest
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
# TODO: refacto this (as Reference or something else)
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- echo generating manifest for ${ENTRY_FOLDER}/${PACKAGE_NAME}
# manifest-job/valid_set:
# variables:
# PACKAGE_NAME: "valid_set"
# <<: *gen-manifest
.test-images-job: &test-images
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_job/test_wpp.py --tb=line -rA --color=yes --code-highlight=yes -q
allow_failure: true
test-images-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
<<: *test-images
test-images-job/missing_tag_set:
variables:
PACKAGE_NAME: "missing_tag_set"
<<: *test-images
.test-manifest-job: &test-manifest
stage: Test
image: node:latest
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- cd src/test_manifest_job
- npm install ajv ajv-errors mocha mocha-steps chai
- cd ../..
- node src/test_manifest_job/node_modules/mocha/bin/_mocha --require mocha-steps --colors src/test_manifest_job/wpp_checker.js
test-manifest-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
<<: *test-manifest
test-manifest-job/missing_tag_set:
variables:
PACKAGE_NAME: "missing_tag_set"
<<: *test-manifest
# 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
bundle-job/missing_tag_set:
variables:
PACKAGE_NAME: "missing_tag_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
upload-job/missing_tag_set:
needs:
- bundle-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_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
release-job/missing_tag_set:
needs:
- upload-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_set"
<<: *release

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

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

View File

@ -46,8 +46,8 @@ def validate_brightness_image(working_path, theme_config, high_light, image_list
@pytest.fixture
def working_path():
# get the global variables containing gitlab-given project slug.
project_slug = os.environ["WPP_SLUG"]
root_folder = os.environ["WPP_ROOT"]
project_slug = os.environ["PACKAGE_NAME"]
root_folder = os.environ["ENTRY_FOLDER"]
working_path = Path(root_folder, project_slug)
if not working_path.is_dir():
raise FileNotFoundError(f"No project found for the given {working_path}.")
@ -76,7 +76,6 @@ def test_image_size(working_path, manifest):
assert w >= h, "✖ Image orientation is portrait (must be landscape or square)"
# print(f"✔ Images are big enough ({w}×{h}) and landscape.")
def test_overlapping_images(manifest):
jointed_lists = manifest.get("dayImageList")
jointed_lists.extend(manifest.get("nightImageList"))

View File

@ -10,7 +10,7 @@ require("ajv-errors")(ajv);
//let workingDirectory = path.join(root, slug);
//console.log(`👷‍♂️ Working with ${slug} slug.`);
const themeSchemaFile = ".gitlab/node_job/json_theme_schema.jsonc";
const themeSchemaFile = "src/test_manifest_job/json_theme_schema.jsonc";
let wppManifest;
let validator;
let files;
@ -37,9 +37,9 @@ function flatReferences(wppManifest) {
describe('Mandatory Checks', function () {
before(function () {
slug = env.WPP_SLUG;
slug = env.PACKAGE_NAME;
expect(slug).to.be.a("string").that.is.not.empty;
root = env.WPP_ROOT;
root = env.ENTRY_FOLDER;
expect(root).to.be.a("string").that.is.not.empty;
workingDirectory = path.join(root, slug);
files = fs.readdirSync(workingDirectory);

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

View File

@ -0,0 +1,14 @@
{
"imageFilename": "bl3_landscape_*.jpg",
"imageCredits": "© Gearbox",
"displayName": "",
"dayImageList": [
2
],
"sunsetImageList": [
2
],
"nightImageList": [
3
]
}

View File

@ -0,0 +1,4 @@
# some descriptions
Introducting change for testing.
Pipeline still won't trigger.

19
test/valid_set/theme.json Normal file
View File

@ -0,0 +1,19 @@
{
"imageFilename": "bl2_eridum_badlands_*.jpg",
"imageCredits": "Gearbox",
"displayName": "",
"dayHighlight": 1,
"nightHighlight": 3,
"sunriseImageList": [
4
],
"dayImageList": [
1
],
"sunsetImageList": [
2
],
"nightImageList": [
3
]
}