stages:
  - build_and_test
  - package
  - security
  - upload

.cljs-job: &cljs
  image: "domaindrivenarchitecture/ddadevops-clj-cljs:4.11.4"
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - node_modules/
      - .shadow-cljs/
      - .m2
  before_script:
    - export RELEASE_ARTIFACT_TOKEN=$MEISSA_REPO_BUERO_RW
    - echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc
    - npm install

.clj-job: &clj
  image: "domaindrivenarchitecture/ddadevops-clj:4.11.4"
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
      - .m2
  before_script:
    - export RELEASE_ARTIFACT_TOKEN=$MEISSA_REPO_BUERO_RW
    - mkdir -p /root/.lein
    - echo "{:auth {:repository-auth {#\"clojars\" {:username \"${CLOJARS_USER}\" :password \"${CLOJARS_TOKEN_DOMAINDRIVENARCHITECTURE}\" }}}}" > ~/.lein/profiles.clj

.tag_only: &tag_only
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
      when: never
    - if: '$CI_COMMIT_TAG =~ /^[0-9]+\.[0-9]+\.[0-9]+$/'

test-clj:
  <<: *clj
  stage: build_and_test
  script:
    - pyb test_clj

test-cljs:
  <<: *cljs
  stage: build_and_test
  script:
    - pyb test_cljs

upload-clj-release:
  <<: *clj
  <<: *tag_only
  stage: upload
  script:
    - pyb upload_clj

upload-cljs-release:
  <<: *clj
  <<: *tag_only
  stage: upload
  script:
    - pyb upload_cljs