Compare commits

...

13 Commits

Author SHA1 Message Date
2aa87bae00 Corrige l'assignation spot jour et nuit 2023-05-19 20:36:04 +02:00
Simon
4599ca2ccd Publie le set "Sanctuary Bay - Borderlands 3"
Fusionne la branche 'BL3_Sanctuary_Bay' dans 'main'
Voir la demande de fusion Thoscellen/Wallset!11
2023-05-18 22:43:44 +00:00
125cb732ee Publie le set "Sanctuary Bay - Borderlands 3" 2023-05-19 00:35:20 +02:00
Simon
aae97ec78a Merge branch 'BL2_frozen_wastelands' into 'main'
feat(#5): Publie le set "Frozen Wastelands"

See merge request Thoscellen/Wallset!10
2023-05-18 22:09:47 +00:00
Simon
f1845c7101 feat(#5): Publie le set "Frozen Wastelands" 2023-05-18 22:09:46 +00:00
Simon
f56b7877dc Merge branch 'BL2_frozen_wasteland' into 'main'
See merge request Thoscellen/Wallset!8
2023-05-18 21:40:52 +00:00
Simon
181caf6092 Publie le set "Frozen Wastelands" 2023-05-18 21:40:52 +00:00
Simon
e31f02cd38 Merge branch 'cicd' into 'main'
Tente un fixe pour la pipeline.

See merge request Thoscellen/Wallset!9
2023-05-18 21:17:34 +00:00
Simon
123733def0 Tente un fixe pour la pipeline. 2023-05-18 21:17:34 +00:00
Simon
226a3a3856 Merge branch 'cicd' into 'main'
Règle la CI pour se déclencher après une demande de fusion

See merge request Thoscellen/Wallset!7
2023-05-18 13:15:09 +00:00
Simon
6ec4d836cc Règle la CI pour se déclencher après une demande de fusion 2023-05-18 13:15:09 +00:00
Simon
4d394dc080 Merge branch 'cicd' into 'main'
Détecte si un thème est déjà présent

See merge request Thoscellen/Wallset!6
2023-05-18 12:30:10 +00:00
Simon
d541628920 Détecte si un thème est déjà présent 2023-05-18 12:30:10 +00:00
62 changed files with 172 additions and 89 deletions

5
.gitignore vendored
View File

@@ -4,4 +4,7 @@
# Ignore python stuff
**/__pycache__
**/.pytest_cache
**/.pytest_cache
# Ignore les fichiers système de MacOS
**/.DS_Store

View File

@@ -1,6 +1,5 @@
include:
- .gitlab/valid_set.yml
- .gitlab/missing_tag_set.yml
- .gitlab/*.yml
stages:
- Manifest
@@ -10,8 +9,8 @@ stages:
- Release
variables:
ENTRY_FOLDER: $CI_PROJECT_DIR/test # test directory for testing CI/CD, or assets directory for normal operations
RELEASE_VERSION: v0.$CI_PIPELINE_IID
ENTRY_FOLDER: assets
RELEASE_VERSION: v$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.
@@ -21,14 +20,13 @@ variables:
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "cicd"
- changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
script:
- cd src/
- npm install
- npm run start
- cat ${ENTRY_FOLDER}/${PACKAGE_NAME}/theme.json
- cat ../${ENTRY_FOLDER}/${PACKAGE_NAME}/theme.json
- npm run test
artifacts:
paths:
@@ -40,7 +38,6 @@ variables:
stage: Test
image: python:latest
rules:
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "cicd"
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*
@@ -56,7 +53,6 @@ variables:
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == "cicd"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
changes:
- ${ENTRY_FOLDER}/${PACKAGE_NAME}/*

View File

@@ -0,0 +1,32 @@
manifest-job/BL2_frozen_wastelands:
variables:
PACKAGE_NAME: "BL2_frozen_wastelands"
extends: .manifest-job
test-images-job/BL2_frozen_wastelands:
needs:
- manifest-job/BL2_frozen_wastelands
variables:
PACKAGE_NAME: "BL2_frozen_wastelands"
extends: .test-job
bundle-job/BL2_frozen_wastelands:
needs:
- manifest-job/BL2_frozen_wastelands
variables:
PACKAGE_NAME: "BL2_frozen_wastelands"
extends: .bundle-job
upload-job/BL2_frozen_wastelands:
needs:
- bundle-job/BL2_frozen_wastelands
variables:
PACKAGE_NAME: "BL2_frozen_wastelands"
extends: .upload-job
release-job/BL2_frozen_wastelands:
needs:
- upload-job/BL2_frozen_wastelands
variables:
PACKAGE_NAME: "BL2_frozen_wastelands"
extends: .release-job

View File

@@ -0,0 +1,32 @@
manifest-job/BL3_Sanctuary_Bay:
variables:
PACKAGE_NAME: "BL3_Sanctuary_Bay"
extends: .manifest-job
test-images-job/BL3_Sanctuary_Bay:
needs:
- manifest-job/BL3_Sanctuary_Bay
variables:
PACKAGE_NAME: "BL3_Sanctuary_Bay"
extends: .test-job
bundle-job/BL3_Sanctuary_Bay:
needs:
- manifest-job/BL3_Sanctuary_Bay
variables:
PACKAGE_NAME: "BL3_Sanctuary_Bay"
extends: .bundle-job
upload-job/BL3_Sanctuary_Bay:
needs:
- bundle-job/BL3_Sanctuary_Bay
variables:
PACKAGE_NAME: "BL3_Sanctuary_Bay"
extends: .upload-job
release-job/BL3_Sanctuary_Bay:
needs:
- upload-job/BL3_Sanctuary_Bay
variables:
PACKAGE_NAME: "BL3_Sanctuary_Bay"
extends: .release-job

View File

@@ -1,32 +0,0 @@
manifest-job/missing_tag_set:
variables:
PACKAGE_NAME: "missing_tag_set"
extends: .manifest-job
test-images-job/missing_tag_set:
needs:
- manifest-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_set"
extends: .test-job
bundle-job/missing_tag_set:
needs:
- manifest-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_set"
extends: .bundle-job
upload-job/missing_tag_set:
needs:
- bundle-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_set"
extends: .upload-job
release-job/missing_tag_set:
needs:
- upload-job/missing_tag_set
variables:
PACKAGE_NAME: "missing_tag_set"
extends: .release-job

View File

@@ -1,32 +0,0 @@
manifest-job/valid_set:
variables:
PACKAGE_NAME: "valid_set"
extends: .manifest-job
test-images-job/valid_set:
needs:
- manifest-job/valid_set
variables:
PACKAGE_NAME: "valid_set"
extends: .test-job
bundle-job/valid_set:
needs:
- manifest-job/valid_set
variables:
PACKAGE_NAME: "valid_set"
extends: .bundle-job
upload-job/valid_set:
needs:
- bundle-job/valid_set
variables:
PACKAGE_NAME: "valid_set"
extends: .upload-job
release-job/valid_set:
needs:
- upload-job/valid_set
variables:
PACKAGE_NAME: "valid_set"
extends: .release-job

67
.vscode/launch.json vendored
View File

@@ -12,7 +12,8 @@
"start"
],
"env": {
"ENTRY_FOLDER": "${workspaceFolder}/test",
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "valid_set"
},
"skipFiles": [
@@ -30,7 +31,8 @@
"test"
],
"env": {
"ENTRY_FOLDER": "${workspaceFolder}/test",
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "valid_set"
},
"skipFiles": [
@@ -51,10 +53,69 @@
"--color=yes"
],
"env": {
"ENTRY_FOLDER": "${workspaceFolder}/test",
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "valid_set"
},
"justMyCode": true
},
{
"name": "Gen-Manifest existing_valid_theme_set",
"cwd": "${workspaceFolder}/src",
"type": "node",
"request": "launch",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run",
"start"
],
"env": {
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "existing_valid_theme_set"
},
"skipFiles": [
"<node_internals>/**"
],
},
{
"name": "Test-Manifest existing_valid_theme_set",
"cwd": "${workspaceFolder}/src",
"type": "node",
"request": "launch",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run",
"test"
],
"env": {
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "existing_valid_theme_set"
},
"skipFiles": [
"<node_internals>/**"
],
},
{
"name": "Test-Images existing_valid_theme_set",
"cwd": "${workspaceFolder}/src",
"console": "internalConsole",
"type": "python",
"request": "launch",
"module": "pytest",
"args": [
"test_images.py",
"-rA",
"--tb=line",
"--color=yes"
],
"env": {
"CI_PROJECT_DIR": "${workspaceFolder}",
"ENTRY_FOLDER": "test",
"PACKAGE_NAME": "existing_valid_theme_set"
},
"justMyCode": true
},
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 952 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -1,18 +1,24 @@
const fs = require("fs");
const path = require("path");
const iptc = require("node-iptc");
const { exit } = require("process");
// find all images
const slug = process.env["PACKAGE_NAME"];
// Fetch envs to target the right folder
const workDir = process.env["CI_PROJECT_DIR"];
const root = process.env["ENTRY_FOLDER"];
let workingDirectory = path.join(root, slug);
const slug = process.env["PACKAGE_NAME"];
if (!workDir || !slug || !root) exit(1);
let workingDirectory = path.join(workDir, root, slug);
// extract metadata from them
fs.readdir(workingDirectory, (err, files) => {
if (err) { throw err };
if (err) { throw err }; // If IO error, exit with an error message
// construct a JSON file
// If there is already a theme.json silentely exit and let mocha running afterwards
if (files.find(file => path.extname(file) == '.json')) exit(0);
// construct a JSON object
let theme = new Object();
theme.dayImageList = [];
theme.nightImageList = [];
@@ -63,7 +69,7 @@ fs.readdir(workingDirectory, (err, files) => {
break;
}
});
// make it the theme.json
fs.writeFileSync(path.join(workingDirectory, 'theme.json'), JSON.stringify(theme));
});

View File

@@ -33,11 +33,13 @@ function flatReferences(manifest) {
describe('Mandatory Checks', function () {
before(function () {
const workDir = process.env["CI_PROJECT_DIR"];
expect(workDir).to.be.a("string").that.is.not.empty;
const slug = process.env["PACKAGE_NAME"];
expect(slug).to.be.a("string").that.is.not.empty;
const root = process.env["ENTRY_FOLDER"];
expect(root).to.be.a("string").that.is.not.empty;
workingDirectory = path.join(root, slug);
workingDirectory = path.join(workDir, root, slug);
files = fs.readdirSync(workingDirectory);
expect(files).to.be.an('array').that.is.not.empty;
validator = ajv.compile(JSON.parse(fs.readFileSync(themeSchemaFile, 'utf8')));

View File

@@ -7,7 +7,7 @@ import os
import pytest
def validate_brightness_image(working_path, theme_config, high_light, image_list, brightness_way):
def _validate_brightness_image(working_path, theme_config, high_light, image_list, brightness_way):
image_pattern = theme_config.get("imageFilename")
image_filenames = {}.fromkeys(glob.glob(str(Path(working_path, image_pattern))))
# generate an image statistics for each images
@@ -15,6 +15,7 @@ def validate_brightness_image(working_path, theme_config, high_light, image_list
this_image = Image.open(an_imagefile).convert("L")
this_image_stats = ImageStat.Stat(this_image)
image_filenames[an_imagefile] = this_image_stats.mean[0]
#print(f'{an_imagefile} : {image_filenames[an_imagefile]}')
# get the brightest observed image from the list
if high_light == "dayHighlight":
@@ -39,9 +40,10 @@ 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.
work_directory = os.environ["CI_PROJECT_DIR"]
entry_folder = os.environ["ENTRY_FOLDER"]
project_slug = os.environ["PACKAGE_NAME"]
root_folder = os.environ["ENTRY_FOLDER"]
working_path = Path(root_folder, project_slug)
working_path = Path(work_directory, entry_folder, project_slug)
if not working_path.is_dir():
raise FileNotFoundError(f"No project found for the given {working_path}.")
return working_path
@@ -54,11 +56,11 @@ def manifest(working_path):
def test_brightest_image(working_path, manifest):
validate_brightness_image(working_path, manifest, "dayHighlight", "dayImageList", "Brightest")
_validate_brightness_image(working_path, manifest, "dayHighlight", "dayImageList", "Brightest")
def test_darkest_image(working_path, manifest):
validate_brightness_image(working_path, manifest, "nightHighlight", "nightImageList", "Darkest")
_validate_brightness_image(working_path, manifest, "nightHighlight", "nightImageList", "Darkest")
def test_image_size(working_path, manifest):

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

View File

@@ -0,0 +1,13 @@
{
"dayImageList": [
1
],
"imageFilename": "stray__*.jpg",
"nightImageList": [
2
],
"imageCredits": "©Thoscellen, ©BlueTwelve",
"sunriseImageList": [],
"displayName": "Stray",
"sunsetImageList": []
}

View File

@@ -1,7 +1,7 @@
{
"imageFilename": "bl3_landscape_*.jpg",
"displayName": "BL3",
"imageCredits": "© Gearbox",
"displayName": "",
"dayImageList": [
2
],

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB