kopia lustrzana https://github.com/JOSM/MapWithAI
287 wiersze
7.1 KiB
YAML
287 wiersze
7.1 KiB
YAML
image: registry.gitlab.com/josm/docker-library/openjdk-8-josmplugin:latest
|
|
|
|
before_script:
|
|
- export GRADLE_USER_HOME=`pwd`/.gradle
|
|
|
|
cache:
|
|
paths:
|
|
- .gradle/wrapper
|
|
- .gradle/caches
|
|
|
|
#############################
|
|
# Various additional Checks #
|
|
#############################
|
|
include:
|
|
- template: Code-Quality.gitlab-ci.yml
|
|
- template: SAST.gitlab-ci.yml
|
|
- template: Dependency-Scanning.gitlab-ci.yml
|
|
# - template: Container-Scanning.gitlab-ci.yml
|
|
# - template: DAST.gitlab-ci.yml
|
|
# - template: License-Management.gitlab-ci.yml
|
|
|
|
sast:
|
|
variables: {}
|
|
variables:
|
|
GRADLE_PATH: "./gradlew"
|
|
FAIL_NEVER: 1
|
|
# CI_DEBUG_TRACE: "true"
|
|
|
|
###############
|
|
# Build stage #
|
|
###############
|
|
|
|
assemble:
|
|
stage: build
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
|
|
assemble with java 11:
|
|
stage: build
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-11-josmplugin:latest
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
|
|
assemble with java 12:
|
|
stage: build
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-12-josmplugin:latest
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
allow_failure: true
|
|
|
|
assemble with java 13:
|
|
stage: build
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-13-josmplugin:latest
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
allow_failure: true
|
|
|
|
assemble with java 14:
|
|
stage: build
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-14-josmplugin:latest
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
allow_failure: true
|
|
|
|
assemble with java 15:
|
|
stage: build
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-15-josmplugin:latest
|
|
script:
|
|
- ./gradlew assemble
|
|
artifacts:
|
|
paths:
|
|
- build/
|
|
allow_failure: true
|
|
|
|
|
|
##############
|
|
# Test stage #
|
|
##############
|
|
|
|
build:
|
|
stage: test
|
|
script:
|
|
- ./gradlew build generatePot generateSnapshotUpdateSite #--info
|
|
artifacts:
|
|
paths:
|
|
- build
|
|
dependencies:
|
|
- assemble
|
|
|
|
test:
|
|
stage: test
|
|
script:
|
|
- ./gradlew check --stacktrace --continue #--info
|
|
- ./gradlew jacocoTestReport
|
|
- ./gradlew jacocoTestCoverageVerification
|
|
artifacts:
|
|
paths:
|
|
- build
|
|
reports:
|
|
junit: build/test-results/**/TEST-*.xml
|
|
dependencies:
|
|
- assemble
|
|
|
|
compile against min JOSM:
|
|
stage: test
|
|
script:
|
|
- ./gradlew compileJava_minJosm
|
|
dependencies:
|
|
- assemble
|
|
|
|
compile against latest JOSM:
|
|
stage: test
|
|
script:
|
|
- ./gradlew compileJava_latestJosm
|
|
dependencies:
|
|
- assemble
|
|
|
|
build with java 11:
|
|
stage: test
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-11-josmplugin:latest
|
|
script:
|
|
- ./gradlew build
|
|
dependencies:
|
|
- assemble with java 11
|
|
allow_failure: true # due to copy-paste-detection
|
|
|
|
build with java 12:
|
|
stage: test
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-12-josmplugin:latest
|
|
script:
|
|
- ./gradlew build
|
|
dependencies:
|
|
- assemble with java 12
|
|
allow_failure: true
|
|
|
|
build with java 13:
|
|
stage: test
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-13-josmplugin:latest
|
|
script:
|
|
- ./gradlew build
|
|
dependencies:
|
|
- assemble with java 13
|
|
allow_failure: true
|
|
|
|
build with java 14:
|
|
stage: test
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-14-josmplugin:latest
|
|
script:
|
|
- ./gradlew build
|
|
dependencies:
|
|
- assemble with java 14
|
|
allow_failure: true
|
|
only:
|
|
- schedules
|
|
|
|
build with java 15:
|
|
stage: test
|
|
image: registry.gitlab.com/josm/docker-library/openjdk-15-josmplugin:latest
|
|
script:
|
|
- ./gradlew build
|
|
dependencies:
|
|
- assemble with java 15
|
|
allow_failure: true
|
|
only:
|
|
- schedules
|
|
|
|
################
|
|
# Deploy stage #
|
|
################
|
|
|
|
#upload to transifex:
|
|
# image: python:3.6-stretch
|
|
# stage: deploy
|
|
# environment:
|
|
# name: transifex
|
|
# url: https://www.transifex.com/josm/josm/josm-plugin_mapwithai/
|
|
# before_script:
|
|
# - apt-get update && apt-get install -yq gettext git
|
|
# - pip install git+https://github.com/transifex/transifex-client.git
|
|
# script:
|
|
# - TX_TOKEN="$TRANSIFEX_TOKEN" tx push -s --no-interactive
|
|
# dependencies:
|
|
# - build
|
|
# only:
|
|
# - master
|
|
|
|
release:
|
|
stage: deploy
|
|
environment:
|
|
name: pages branch / dist directory
|
|
url: ${CI_PAGES_URL}/${CI_PROJECT_NAME}
|
|
script:
|
|
- &clone_pages_branch |
|
|
echo "$SSH_PRIVATE_DEPLOY_KEY" > ~/.ssh/id_rsa
|
|
chmod 600 ~/.ssh/id_rsa
|
|
git clone --depth 1 --branch pages git@${CI_SERVER_HOST}:${CI_PROJECT_PATH} pages
|
|
- ¤t_version |
|
|
version=`git describe --always --dirty`
|
|
longVersion=`git describe --always --long --dirty`
|
|
commitMessage="Release version $longVersion"
|
|
- |
|
|
#mkdir -pv "pages/public/dist/$version"
|
|
#cp -v "build/dist/"* "build/tmp/jar/MANIFEST.MF" "pages/public/dist/$version"
|
|
rm -fv "pages/public/dist/latest"
|
|
ln -s "./$version" "pages/public/dist/latest"
|
|
- &push_pages_branch |
|
|
cd pages/
|
|
git config user.name "Deploy with GitLab CI"
|
|
git config user.email "${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}@${CI_SERVER_HOST}"
|
|
git stage .
|
|
git commit -a -m "$commitMessage"
|
|
git push origin pages
|
|
dependencies:
|
|
- build
|
|
rules:
|
|
- if: '$SSH_PRIVATE_DEPLOY_KEY != null && $CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE != "schedule"'
|
|
when: manual
|
|
|
|
release hotfix:
|
|
stage: deploy
|
|
environment:
|
|
name: pages branch / dist directory
|
|
url: ${CI_PAGES_URL}/${CI_PROJECT_NAME}
|
|
script:
|
|
- *clone_pages_branch
|
|
- *current_version
|
|
- |
|
|
mkdir -pv "pages/public/dist/$version"
|
|
cp -v "build/dist/"* "build/tmp/jar/MANIFEST.MF" "pages/public/dist/$version"
|
|
- *push_pages_branch
|
|
dependencies:
|
|
- build
|
|
rules:
|
|
- if: '$SSH_PRIVATE_DEPLOY_KEY != null && $CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE != "schedule" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
|
|
when: always
|
|
|
|
publish update site:
|
|
stage: deploy
|
|
environment:
|
|
name: pages branch / snapshot update site
|
|
url: ${CI_PAGES_URL}/${CI_PROJECT_NAME}/snapshot/${CI_COMMIT_REF_NAME}/update-site
|
|
script:
|
|
- *clone_pages_branch
|
|
- |
|
|
commitHash=`git rev-parse HEAD`
|
|
commitMessage="Make latest commit from ${CI_COMMIT_REF_NAME} available via JOSM update site ($commitHash)"
|
|
- |
|
|
rm -vrf "pages/public/snapshot/${CI_COMMIT_REF_NAME}"
|
|
mkdir -pv "pages/public/snapshot/${CI_COMMIT_REF_NAME}"
|
|
cp -v "build/snapshot-update-site" "pages/public/snapshot/${CI_COMMIT_REF_NAME}/update-site"
|
|
cp -v "build/dist/"* "pages/public/snapshot/${CI_COMMIT_REF_NAME}"
|
|
- *push_pages_branch
|
|
dependencies:
|
|
- build
|
|
rules:
|
|
- if: '$SSH_PRIVATE_DEPLOY_KEY != null && $CI_PIPELINE_SOURCE != "schedule" && $CI_COMMIT_REF_NAME != null'
|
|
when: always
|
|
|
|
publish to / GitLab.com packages:
|
|
stage: deploy
|
|
environment:
|
|
name: GitLab.com / ${CI_PROJECT_NAME} packages
|
|
url: ${CI_PROJECT_URL}/-/packages
|
|
script:
|
|
- ./gradlew publishAllPublicationsToGitlabRepository
|
|
- ./gradlew releaseToGitlab
|
|
dependencies:
|
|
- build
|
|
rules:
|
|
- if: '$SSH_PRIVATE_DEPLOY_KEY != null && $CI_COMMIT_REF_PROTECTED == "true" && $CI_COMMIT_TAG != null && $CI_PIPELINE_SOURCE != "schedule"'
|
|
when: always
|