stages:
  - build
  - test
  - publish
  - deploy

.any-job:
  rules:
    - if: $CI_SERVER_HOST == "gitlab.mnl.de"

.gradle-job:
  extends: .any-job
  image: registry.mnl.de/org/jgrapes/jdk21-builder:v2
  cache:
    - key: dependencies-${CI_COMMIT_BRANCH}
      policy: pull-push  
      paths:
        - .gradle
        - node_modules
    - key: "$CI_COMMIT_SHA"
      policy: pull-push
      paths:
        - build
        - "*/build"
  before_script:
    - echo -n $CI_REGISTRY_PASSWORD | podman login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
    - git switch $(git branch -r --sort="authordate" --contains $CI_COMMIT_SHA | head -1 | sed -e 's#[^/]*/##')
    - git pull
    - git reset --hard $CI_COMMIT_SHA
  
build-jars:
  stage: build
  extends: .gradle-job  
  script:
    - ./gradlew -Pdocker.registry=$CI_REGISTRY_IMAGE build apidocs

publish-images:
  stage: publish
  extends: .gradle-job  
  dependencies:
    - build-jars
  script:
    - ./gradlew -Pdocker.registry=$CI_REGISTRY_IMAGE publishImage

.pages-job:
  extends: .any-job
  image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/ruby:3.2
  variables:
    JEKYLL_ENV: production
    LC_ALL: C.UTF-8
  before_script:
    - git fetch origin gh-pages
    - git checkout gh-pages
    - gem install bundler
    - bundle install

test-pages:
  stage: test
  extends: .pages-job
  rules:
    - if: $CI_COMMIT_BRANCH == "gh-pages"
  script:
    - bundle exec jekyll build -d test
  artifacts:
    paths:
      - test
      
#publish-pages:
#  stage: publish
#  extends: .pages-job
#  rules:
#    - if: $CI_COMMIT_BRANCH == "gh-pages"
#  script:
#    - bundle exec jekyll build -d public
#  artifacts:
#    paths:
#      - public
#  environment: production
