Merge branch 'pipeline-improvement' into 'master'

improve pipeline

See merge request dungeonslayers/ds4!139
This commit is contained in:
Johannes Loher 2021-09-14 11:09:36 +00:00
commit ce1eabb23c
4 changed files with 65 additions and 14 deletions

View file

@ -8,17 +8,17 @@ image: node:lts
stages: stages:
- test - test
- build - build
- publish
- release - release
before_script:
- yarn install --immutable
cache: &global_cache cache: &global_cache
paths: paths:
- .yarn/cache - .yarn/cache
lint: lint:
stage: test stage: test
before_script:
- yarn install --immutable
script: script:
- yarn lint - yarn lint
cache: cache:
@ -26,6 +26,8 @@ lint:
test: test:
stage: test stage: test
before_script:
- yarn install --immutable
script: script:
- yarn test:ci - yarn test:ci
cache: cache:
@ -41,12 +43,13 @@ reuse:
image: image:
name: fsfe/reuse:latest name: fsfe/reuse:latest
entrypoint: [""] entrypoint: [""]
before_script: []
script: script:
- reuse lint - reuse lint
build: build:
stage: build stage: build
before_script:
- yarn install --immutable
script: script:
- yarn build - yarn build
- mv dist ds4 - mv dist ds4
@ -57,6 +60,20 @@ build:
- ds4 - ds4
expire_in: 1 week expire_in: 1 week
publish-artifacts:
image: alpine:latest
stage: publish
before_script:
- apk update
- apk add zip curl
script: |
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]+$/'
.release-template: &release-template .release-template: &release-template
stage: release stage: release
before_script: before_script:
@ -77,13 +94,11 @@ build:
git add package.json src/system.json git add package.json src/system.json
git --no-pager diff git --no-pager diff
git commit -m "release version ${RELEASE_VERSION}" git commit -m "release version ${RELEASE_VERSION}"
git tag -f latest
git tag -f ${RELEASE_VERSION} git tag -f ${RELEASE_VERSION}
git push origin ci-processing:${CI_BUILD_REF_NAME} git push origin ci-processing:${CI_BUILD_REF_NAME} -o ci.skip
git push origin latest -f
git push origin ${RELEASE_VERSION} git push origin ${RELEASE_VERSION}
only: rules:
- master - if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
when: manual when: manual
release-patch: release-patch:
@ -100,3 +115,40 @@ release-major:
variables: variables:
RELEASE_TYPE: major RELEASE_TYPE: major
<<: *release-template <<: *release-template
bump-latest-tag:
stage: release
image: alpine:latest
before_script:
- apk update
- apk add git
- REPOSITORY_URL=$(echo "${CI_REPOSITORY_URL}" | sed -e "s|gitlab-ci-token:.*@|${RELEASE_TOKEN}:${RELEASE_TOKEN_SECRET}@|g")
- git remote set-url origin $REPOSITORY_URL
- git config user.name $GITLAB_USER_LOGIN
- git config user.email $GITLAB_USER_EMAIL
script: |
git tag -f latest -m "This tag is only being kept for backwards compatibility. To install the DS4 system, please use the following manifest URL instead: https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json"
git push origin latest -f -o ci.skip
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo 'release job'
rules:
- if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'
release:
tag_name: $CI_COMMIT_TAG
description: "# Changelog"
assets:
links:
- name: "ds4.zip"
url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/ds4.zip"
filepath: /ds4.zip
link_type: package
- name: "system.json"
url: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/ds4/$CI_COMMIT_TAG/system.json"
filepath: /system.json
link_type: other

View file

@ -19,7 +19,7 @@ To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop,
simply paste the following URL into the **Install System** dialog on the Setup simply paste the following URL into the **Install System** dialog on the Setup
menu of the application. menu of the application.
https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json
## Development ## Development

View file

@ -23,8 +23,7 @@ const stylesDirectory = path.join(sourceDirectory, "scss");
const stylesExtension = ".scss"; const stylesExtension = ".scss";
const sourceFileExtension = ".ts"; const sourceFileExtension = ".ts";
const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"]; const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"];
const getDownloadURL = (version) => const getDownloadURL = (version) => `https://git.f3l.de/dungeonslayers/ds4/-/releases/${version}/downloads/ds4.zip`;
`https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/${version}/download?job=build`;
/********************/ /********************/
/* BUILD */ /* BUILD */

View file

@ -91,7 +91,7 @@
"gridUnits": "m", "gridUnits": "m",
"primaryTokenAttribute": "combatValues.hitPoints", "primaryTokenAttribute": "combatValues.hitPoints",
"url": "https://git.f3l.de/dungeonslayers/ds4", "url": "https://git.f3l.de/dungeonslayers/ds4",
"manifest": "https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false", "manifest": "https://git.f3l.de/api/v4/projects/dungeonslayers%2Fds4/packages/generic/ds4/latest/system.json",
"download": "https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/1.4.0/download?job=build", "download": "https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/1.4.0/download?job=build",
"license": "https://git.f3l.de/dungeonslayers/ds4#licensing", "license": "https://git.f3l.de/dungeonslayers/ds4#licensing",
"initiative": "@combatValues.initiative.total", "initiative": "@combatValues.initiative.total",