#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

{% from 'shared_jinja.yml' import alpine_tools_config with context %}
{% from 'shared_jinja.yml' import pipeline_prefix with context %}
{% from 'shared_jinja.yml' import github_access with context %}
{% from 'shared_jinja.yml' import init_retry with context %}

---

{% macro plan_resource_gets(test) %}
- get: geode-ci
  passed:
  - Build
- aggregate:
  - get: geode
    trigger: true
    passed:
    - Build
  - get: geode-build-version
    passed:
    - Build
{% endmacro %}

{%- macro deep_merge(a, b): %}
  {%- if b is defined %}
    {%- for k,v in b.items(): %}
      {%- if v is not defined: %}
        {%- do a.pop(k) %}
      {%- else: %}
        {%- if v is mapping: %}
          {%- if a[k] is not mapping: %}
            {%- do a.update({ k: { } }) %}
          {%- endif %}
          {%- do deep_merge(a[k], v) %}
        {%- else: %}
          {%- do a.update({ k: v }) %}
        {%- endif %}
      {% endif %}
    {%- endfor %}
  {%- endif %}
{%- endmacro %}

{%- do deep_merge(a, b) %}

{% macro common_instance_params(test) -%}
GCP_PROJECT: ((gcp-project))
CPUS: {{ test.CPUS }}
RAM: {{ test.RAM }}
{%- endmacro %}

{% macro common_test_params(test) -%}
  {%- if test.CALL_STACK_TIMEOUT -%}
CALL_STACK_TIMEOUT: {{ test.CALL_STACK_TIMEOUT }}
  {%- endif %}
  {%- if test.GRADLE_TASK_OPTIONS -%}
GRADLE_TASK_OPTIONS: {{ test.GRADLE_TASK_OPTIONS }}
  {%- endif %}
DUNIT_PARALLEL_FORKS: {{ test.DUNIT_PARALLEL_FORKS }}
MAINTENANCE_VERSION: ((geode-build-branch ))
BUILD_BRANCH: ((geode-build-branch))
PARALLEL_DUNIT: {{ test.PARALLEL_DUNIT }}
{% if test.PARALLEL_GRADLE is defined %}
PARALLEL_GRADLE: {{ test.PARALLEL_GRADLE }}
{% else %}
PARALLEL_GRADLE: true
{% endif %}
ARTIFACT_BUCKET: ((artifact-bucket))
SERVICE_ACCOUNT: ((concourse-gcp-account))
GRADLE_GLOBAL_ARGS: ((gradle-global-args))
{%- endmacro %}

{% macro all_gating_jobs() %}
  {%- for test in (tests) if not test.name=="StressNew" -%}
  {%- for java_test_version in (java_test_versions) %}
- {{test.name}}Test{{java_test_version.name}}
  {%- endfor -%}
  {%- endfor -%}
{% endmacro %}

groups:
- name: main
  jobs:
  - {{ build_test.name }}
  {{- all_gating_jobs() | indent(2) }}
  - UpdatePassingTokens
  {%- if repository.upstream_fork != "apache" or repository.branch == "develop" %}
  - PublishArtifacts
  {%- endif %}
  - Benchmark
- name: complete
  jobs:
  - {{ build_test.name }}
  {%- for test in (tests) if not test.name=="StressNew" -%}
    {%- for java_test_version in (java_test_versions) %}
  - {{test.name}}Test{{java_test_version.name}}
    {%- endfor -%}
  {%- endfor %}
  - UpdatePassingTokens
  {%- if repository.upstream_fork != "apache" or repository.branch == "develop" %}
  - PublishArtifacts
  {%- endif %}
  - Benchmark
- name: linux
  jobs:
  - {{ build_test.name }}
  {%- for test in (tests) if test.PLATFORM=="linux" and not test.name=="StressNew" -%}
    {% for java_test_version in (java_test_versions) %}
  - {{test.name}}Test{{java_test_version.name}}
    {%- endfor -%}
  {%- endfor %}
  - Benchmark
- name: windows
  jobs:
  - {{ build_test.name }}
  {%- for test in (tests) if test.PLATFORM=="windows" -%}
    {% for java_test_version in (java_test_versions) %}
  - {{test.name}}Test{{java_test_version.name}}
    {%- endfor -%}
  {%- endfor %}
{%- for java_test_version in (java_test_versions) %}
- name: {{java_test_version.name}}
  jobs:
  - {{ build_test.name }}
  {%- for test in (tests) if not test.name=="StressNew" %}
  - {{test.name}}Test{{java_test_version.name}}
  {%- endfor -%}
{%- endfor %}
- name: Semver Management
  jobs:
  {%- for semverPiece in ['major', 'minor', 'patch'] %}
  - Bump{{ semverPiece.title() }}
  {%- endfor %}

resources:
- name: concourse-metadata-resource
  type: concourse-metadata-resource
  source: {}
- name: geode
  type: git
  source:
    branch: ((geode-build-branch))
    ignore_paths:
    - ci/*
    {{ github_access() | indent(4) }}
- name: geode-ci
  type: git
  source:
    branch: ((geode-build-branch))
    depth: 1
    paths:
    - ci/pipelines/geode-build/*
    - ci/scripts/*
    {{ github_access() | indent(4) }}
- name: geode-benchmarks
  type: git
  source:
    branch: {{benchmarks.branch}}
    depth: 1
    uri: https://github.com/apache/geode-benchmarks.git
- name: geode-build-version
  type: semver
  source:
    bucket: ((version-bucket))
    driver: gcs
    initial_version: {{ metadata.initial_version }}
    json_key: ((!concourse-gcp-key))
    key: ((pipeline-prefix))((geode-build-branch))/version
- name: geode-passing-version
  type: semver
  source:
    bucket: ((version-bucket))
    driver: gcs
    initial_version: {{ metadata.initial_version }}
    json_key: ((!concourse-gcp-key))
    key: ((pipeline-prefix))((geode-build-branch))/passing-version
{% if repository.sanitized_fork == "apache" or repository.branch == "develop" -%}
- name: geode-passing-sha
  type: gcs-resource
  source:
    bucket: ((version-bucket))
    json_key: ((!concourse-gcp-key))
    regexp: ((pipeline-prefix))((geode-build-branch))/passing-sha
{% endif -%}
- name: geode-passing-tokens
  type: gcs-resource
  source:
    bucket: ((version-bucket))
    json_key: ((concourse-gcp-key))
    regexp: ((pipeline-prefix))((geode-build-branch))/passing-build-tokens-(.*).json

resource_types:
- name: concourse-metadata-resource
  type: docker-image
  source:
    password: ((!docker-password))
    repository: gcr.io/((gcp-project))/((pipeline-prefix))concourse-metadata-resource
    tag: latest
    username: ((!docker-username))
- name: gcs-resource
  type: docker-image
  source:
    repository: frodenas/gcs-resource
jobs:
{% for semverPiece in ['major', 'minor', 'patch'] -%}
- name: Bump{{ semverPiece.title() }}
  serial: true
  plan:
  - get: geode-build-version
    params: { bump: {{ semverPiece }} }
  - put: geode-build-version
    params:
      file: geode-build-version/number
{% endfor %}
- name: {{build_test.name}}
  public: true
  serial: true
  plan:
  - get: geode-ci
  - aggregate:
    - get: geode
      trigger: true
    - get: geode-build-version
      params:
        pre: ((semver-prerelease-token))
    - do:
      - put: concourse-metadata-resource
      {{ init_retry()|indent(6) }}
      - task: create_instance
        {{- alpine_tools_config()|indent(8) }}
          params:
            {{ common_instance_params(build_test) | indent(12) }}
            GEODE_BRANCH: {{repository.branch}}
            GEODE_FORK: {{repository.fork}}
            JAVA_BUILD_VERSION: {{ java_build_version.version }}
          run:
            path: geode-ci/ci/scripts/create_instance.sh
          inputs:
          - name: attempts-log
            path: old
          - name: concourse-metadata-resource
          - name: geode-ci
          outputs:
          - name: attempts-log
            path: new
          - name: instance-data
        timeout: 15m
        attempts: 10
  - aggregate:
    - put: geode-build-version
      params:
        file: geode-build-version/number
    - task: rsync_code_up
      {{- alpine_tools_config()|indent(6) }}
        run:
          path: geode-ci/ci/scripts/rsync_code_up.sh
        inputs:
        - name: geode-ci
        - name: geode
        - name: instance-data
    timeout: 5m
    on_failure:
      do:
      - task: delete_instance
        {{- alpine_tools_config()|indent(8) }}
          run:
            path: geode-ci/ci/scripts/delete_instance.sh
          inputs:
          - name: geode-ci
          - name: instance-data
        timeout: 1h
  - task: build
    {{- alpine_tools_config()|indent(4) }}
      params:
        JAVA_BUILD_VERSION: {{ java_build_version.version }}
        GRADLE_TASK: {{ build_test.GRADLE_TASK }}
        {{ common_test_params(build_test) | indent(8) }}
      run:
        path: geode-ci/ci/scripts/execute_build.sh
      inputs:
      - name: geode-ci
      - name: geode
      - name: instance-data
      - name: geode-build-version
      outputs:
      - name: built-geode
      - name: results
    ensure:
      do:
      - task: rsync_code_down
        {{- alpine_tools_config()|indent(8) }}
          params:
            JAVA_BUILD_VERSION: {{ java_build_version.version }}
          run:
            path: geode-ci/ci/scripts/rsync_code_down.sh
          inputs:
          - name: geode-ci
          - name: instance-data
          outputs:
          - name: geode-results
        timeout: 5m
      ensure:
        do:
        - aggregate:
          - task: archive_results
            {{- alpine_tools_config()|indent(12) }}
              params:
                ARTIFACT_SLUG: {{build_test.ARTIFACT_SLUG}}-{{java_build_version.name}}
                GRADLE_TASK: {{build_test.GRADLE_TASK}}
                MAINTENANCE_VERSION: ((geode-build-branch))
                ARTIFACT_BUCKET: ((artifact-bucket))
                SERVICE_ACCOUNT: ((!concourse-gcp-account))
                TAR_GEODE_BUILD_ARTIFACTS: true
              run:
                path: geode-ci/ci/scripts/archive_results.sh
              inputs:
              - name: concourse-metadata-resource
              - name: geode-ci
              - name: geode-build-version
              - name: geode-results
            timeout: 1h
          - task: delete_instance
            {{- alpine_tools_config()|indent(12) }}
              run:
                path: geode-ci/ci/scripts/delete_instance.sh
              inputs:
              - name: geode-ci
              - name: instance-data
            timeout: 1h

- name: UpdatePassingTokens
  public: true
  serial: true
  plan:
  - aggregate:
    - get: geode
      passed: &update-token-passed-anchor
{%- if repository.upstream_fork != "apache" or repository.branch == "develop" %}
      - PublishArtifacts
{% else %}
      - Benchmark
{% endif %}
      trigger: true
    - get: geode-build-version
      trigger: true
      passed: *update-token-passed-anchor
  - task: couple-sha-and-build-id
    {{- alpine_tools_config()|indent(4) }}
      inputs:
      - name: geode
      - name: geode-build-version
      outputs:
      - name: geode-passing-tokens
      run:
        path: bash
        args:
        - -ecx
        - |-
          pushd geode
            GEODE_SHA=$(git rev-parse HEAD)
          popd
          GEODE_SEMVER=$(cat geode-build-version/number)

          cat > geode-passing-tokens/passing-build-tokens-${GEODE_SEMVER}.json <<JSON
          {
            "ref": "${GEODE_SHA}",
            "semver": "${GEODE_SEMVER}"
          }
          JSON
          echo "${GEODE_SHA}" > geode-passing-tokens/sha
  - aggregate:
    - put: geode-passing-version
      params:
        file: geode-build-version/number
{% if repository.sanitized_fork == "apache" or repository.branch == "develop" %}
    - put: geode-passing-sha
      params:
        file: geode-passing-tokens/sha
{% endif %}
    - put: geode-passing-tokens
      params:
        file: geode-passing-tokens/*.json

- name: Benchmark
  public: true
  plan:
  - get: geode-ci
    passed:
    {{ all_gating_jobs() | indent(4) }}
  - aggregate:
    - get: geode
      passed:
      {{ all_gating_jobs() | indent(6) }}
      trigger: true
    - get: geode-benchmarks
    - get: geode-build-version
      passed:
      {{ all_gating_jobs() | indent(6) }}
    - put: concourse-metadata-resource
  - task: run_benchmarks
    {{- alpine_tools_config()|indent(4) }}
      params:
        AWS_ACCESS_KEY_ID: ((benchmarks-access-key-id))
        AWS_SECRET_ACCESS_KEY: ((benchmarks-secret-access-key))
        AWS_DEFAULT_REGION: us-west-2
        AWS_REGION: us-west-2
        ARTIFACT_BUCKET: ((artifact-bucket))
        BENCHMARKS_BRANCH: {{benchmarks.branch}}
        BASELINE_BRANCH: {{benchmarks.baseline_branch}}
        BASELINE_VERSION: {{benchmarks.baseline_version}}
      run:
        path: geode-ci/ci/scripts/run_benchmarks.sh
      inputs:
      - name: geode
      - name: geode-ci
      - name: geode-benchmarks
      - name: concourse-metadata-resource
      outputs:
      - name: results
    timeout: 8h
    ensure:
      do:
      - task: cleanup_benchmarks
        {{- alpine_tools_config()|indent(8) }}
          params:
            AWS_ACCESS_KEY_ID: ((benchmarks-access-key-id))
            AWS_SECRET_ACCESS_KEY: ((benchmarks-secret-access-key))
            AWS_DEFAULT_REGION: us-west-2
            AWS_REGION: us-west-2
            ARTIFACT_BUCKET: ((artifact-bucket))
            BASELINE_BRANCH: {{benchmarks.baseline_branch}}
            BASELINE_VERSION: {{benchmarks.baseline_version}}
          run:
            path: geode-ci/ci/scripts/cleanup_benchmarks.sh
          inputs:
          - name: geode
          - name: geode-ci
          - name: geode-benchmarks
          - name: concourse-metadata-resource
          - name: results
{% if repository.upstream_fork != "apache" or repository.branch == "develop" %}
- name: PublishArtifacts
  public: true
  plan:
  - get: geode-ci
    passed:
    - Benchmark
  - aggregate:
    - get: geode
      passed:
      - Benchmark
      trigger: true
    - get: geode-build-version
      passed:
      - Benchmark
    - do:
      - put: concourse-metadata-resource
      {{ init_retry()|indent(6) }}
      - task: create_instance
        {{- alpine_tools_config()|indent(8) }}
          params:
            {{ common_instance_params(publish_artifacts) | indent(12) }}
            GEODE_BRANCH: {{repository.branch}}
            GEODE_FORK: {{repository.fork}}
            JAVA_BUILD_VERSION: {{ java_build_version.version }}
          run:
            path: geode-ci/ci/scripts/create_instance.sh
          inputs:
          - name: concourse-metadata-resource
          - name: geode-ci
          - name: attempts-log
            path: old
          outputs:
          - name: instance-data
          - name: attempts-log
            path: new
        timeout: 15m
        attempts: 10
  - task: rsync_code_up
    {{- alpine_tools_config()|indent(4) }}
      run:
        path: geode-ci/ci/scripts/rsync_code_up.sh
      inputs:
      - name: geode-ci
      - name: geode
      - name: instance-data
    timeout: 5m
  - task: publish
    {{- alpine_tools_config()|indent(4) }}
      params:
        MAINTENANCE_VERSION: ((geode-build-branch))
        ARTIFACT_BUCKET: ((artifact-bucket))
        SERVICE_ACCOUNT: ((!concourse-gcp-account))
        JAVA_BUILD_VERSION: {{ java_build_version.version }}
        MAVEN_SNAPSHOT_BUCKET: ((maven-snapshot-bucket))
        GRADLE_GLOBAL_ARGS: ((gradle-global-args))
      run:
        path: geode-ci/ci/scripts/execute_publish.sh
      inputs:
      - name: instance-data
      - name: geode
      - name: geode-ci
      - name: geode-build-version
    ensure:
      do:
      - task: delete_instance
        {{- alpine_tools_config()|indent(8) }}
          run:
            path: geode-ci/ci/scripts/delete_instance.sh
          inputs:
          - name: geode-ci
          - name: instance-data
        timeout: 1h

{% endif %}

{%- for test in tests if not test.name=="StressNew" %}
  {%- set parameters = {} %}
  {%- do deep_merge(parameters, test) %}
  {%- for java_test_version in (java_test_versions) %}
    {%- if java_test_version.override is defined and java_test_version.override[test.name] is defined %}
      {%- do deep_merge(parameters, java_test_version.override[test.name]) %}
    {%- endif %}
- name: {{test.name}}Test{{java_test_version.name}}
  public: true
  plan:
  - do:
    {{- plan_resource_gets(test) |indent(4) }}
      - put: concourse-metadata-resource
    - aggregate:
      - do:
        {{ init_retry()|indent(8) }}
        - task: create_instance-{{java_test_version.name}}
          {{- alpine_tools_config()|indent(10) }}
            params:
              {{ common_instance_params(parameters) | indent(14) }}
              GEODE_BRANCH: {{repository.branch}}
              GEODE_FORK: {{repository.fork}}
              JAVA_BUILD_VERSION: {{ java_build_version.version }}
              JAVA_TEST_VERSION: {{ java_test_version.version }}
            run:
              path: geode-ci/ci/scripts/create_instance.sh
            inputs:
            - name: concourse-metadata-resource
            - name: geode-ci
            - name: attempts-log
              path: old
            outputs:
            - name: instance-data-{{java_test_version.name}}
              path: instance-data
            - name: attempts-log
              path: new
          timeout: 15m
          attempts: 10
        - task: rsync_code_up-{{java_test_version.name}}
          {{- alpine_tools_config()|indent(10) }}
            run:
              path: geode-ci/ci/scripts/rsync_code_up.sh
            inputs:
            - name: geode-ci
            - name: geode
            - name: instance-data-{{java_test_version.name}}
              path: instance-data
          timeout: 15m
          attempts: 10
        - task: execute_tests-{{java_test_version.name}}
          {{- alpine_tools_config()|indent(10) }}
            params:
              ARTIFACT_SLUG: {{test.ARTIFACT_SLUG}}-{{java_test_version.name}}
              JAVA_BUILD_VERSION: {{ java_build_version.version }}
              JAVA_TEST_VERSION: {{ java_test_version.version }}
              GRADLE_TASK: {{test.GRADLE_TASK}}
              {{ common_test_params(parameters) | indent(14) }}
            run:
              path: geode-ci/ci/scripts/execute_tests.sh
            inputs:
            - name: geode-ci
            - name: geode
            - name: instance-data-{{java_test_version.name}}
              path: instance-data
          timeout: {{parameters.EXECUTE_TEST_TIMEOUT}}
        ensure:
          do:
          - task: rsync_code_down-{{java_test_version.name}}
            {{- alpine_tools_config()|indent(12) }}
              params:
                JAVA_BUILD_VERSION: {{ java_build_version.version }}
                ARTIFACT_SLUG: {{test.ARTIFACT_SLUG}}-{{java_test_version.name}}
              run:
                path: geode-ci/ci/scripts/rsync_code_down.sh
              inputs:
              - name: geode-ci
              - name: instance-data-{{java_test_version.name}}
                path: instance-data
              outputs:
              - name: geode-results-{{java_test_version.name}}
                path: geode-results
            timeout: 15m
            attempts: 10
          ensure:
            do:
            - aggregate:
              - task: archive_results-{{java_test_version.name}}
                {{- alpine_tools_config()|indent(16) }}
                  params:
                    ARTIFACT_SLUG: {{test.ARTIFACT_SLUG}}-{{java_test_version.name}}
                    GRADLE_TASK: {{test.GRADLE_TASK}}
                    MAINTENANCE_VERSION: ((geode-build-branch))
                    ARTIFACT_BUCKET: ((artifact-bucket))
                    SERVICE_ACCOUNT: ((!concourse-gcp-account))
                  run:
                    path: geode-ci/ci/scripts/archive_results.sh
                  inputs:
                  - name: concourse-metadata-resource
                  - name: geode-ci
                  - name: geode-build-version
                  - name: geode-results-{{java_test_version.name}}
                    path: geode-results
                timeout: 1h
              - task: delete_instance-{{java_test_version.name}}
                {{- alpine_tools_config()|indent(16) }}
                  run:
                    path: geode-ci/ci/scripts/delete_instance.sh
                  inputs:
                  - name: geode-ci
                  - name: instance-data-{{java_test_version.name}}
                    path: instance-data
                timeout: 1h
{% endfor -%}
{% endfor -%}
