diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f99b0e6..098724d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,8 +8,9 @@ image: node:lts stages: - test - build - - publish + - prepare-release - release + - publish cache: &global_cache paths: @@ -61,8 +62,8 @@ build: expire_in: 1 week publish-artifacts: + stage: prepare-release image: alpine:latest - stage: publish before_script: - apk update - apk add zip curl @@ -70,12 +71,11 @@ publish-artifacts: zip -r ds4.zip ds4/* curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip" curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json" - curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json" rules: - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' changelog: - stage: publish + stage: prepare-release before_script: - yarn install --immutable script: @@ -150,3 +150,24 @@ release: url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json" filepath: /system.json link_type: other + +publish-latest-manifest: + stage: publish + image: alpine:latest + before_script: + - apk update + - apk add zip curl + script: | + curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ds4/system.json "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/latest/system.json" + rules: + - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' + +publish-to-foundry-admin: + stage: publish + image: johannesloher/foundry-publish + variables: + FVTT_MANIFEST_PATH: ./src/system.json + FVTT_MANIFEST_URL: ${CI_PROJECT_URL}/-/releases/${CI_COMMIT_TAG}/downloads/system.json + script: foundry-publish + rules: + - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/' diff --git a/gulpfile.js b/gulpfile.js index 192a85c2..89943005 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -24,6 +24,7 @@ const stylesExtension = ".scss"; const sourceFileExtension = ".ts"; const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"]; const getDownloadURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}/downloads/ds4.zip`; +const getChangelogURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}`; /********************/ /* BUILD */ @@ -210,6 +211,7 @@ function bumpVersion(cb) { manifest.file.version = targetVersion; manifest.file.download = getDownloadURL(targetVersion); + manifest.file.changelog = getChangelogURL(targetVersion); fs.writeJSONSync(path.join(sourceDirectory, manifest.name), manifest.file, { spaces: 4 }); return cb(); diff --git a/src/system.json b/src/system.json index 319c702e..76eccb5c 100644 --- a/src/system.json +++ b/src/system.json @@ -2,9 +2,6 @@ "name": "ds4", "title": "Dungeonslayers 4", "description": "The Dungeonslayers 4 system for FoundryVTT. Dungeonslayers by Christian Kennig is licensed under CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/). The icons by the authors of Game-icons.net are licensed under CC BY 3.0 (https://creativecommons.org/licenses/by/3.0/). The token images by Devin Night (https://immortalnights.com/) and are licensed under the terms described at https://immortalnights.com/tokens/token-usage-rights/.", - "version": "1.4.3", - "minimumCoreVersion": "0.8.8", - "compatibleCoreVersion": "0.8.9", "author": "Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug, Max Tharr, Sascha Martens", "authors": [ { @@ -30,9 +27,28 @@ "name": "Sascha Martens" } ], + "url": "https://git.f3l.de/dungeonslayers/ds4", + "license": "https://git.f3l.de/dungeonslayers/ds4/-/blob/master/README.md#licensing", + "readme": "https://git.f3l.de/dungeonslayers/ds4/-/blob/master/README.md", + "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues", + "changelog": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3", + "version": "1.4.3", + "minimumCoreVersion": "0.8.8", + "compatibleCoreVersion": "0.8.9", "esmodules": ["module/ds4.js"], "styles": ["css/ds4.css"], - "scripts": [], + "languages": [ + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "de", + "name": "Deutsch", + "path": "lang/de.json" + } + ], "packs": [ { "name": "special-creature-abilities", @@ -75,26 +91,11 @@ "entity": "Actor" } ], - "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "de", - "name": "Deutsch", - "path": "lang/de.json" - } - ], + "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json", + "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3/downloads/ds4.zip", + "initiative": "@combatValues.initiative.total", "gridDistance": 1, "gridUnits": "m", "primaryTokenAttribute": "combatValues.hitPoints", - "url": "https://git.f3l.de/dungeonslayers/ds4", - "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json", - "download": "https://git.f3l.de/dungeonslayers/ds4/-/releases/1.4.3/downloads/ds4.zip", - "license": "https://git.f3l.de/dungeonslayers/ds4#licensing", - "initiative": "@combatValues.initiative.total", - "manifestPlusVersion": "1.0.0", - "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues" + "manifestPlusVersion": "1.0.0" }