#
# 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 github_access with context %}

---
resource_types:
- name: concourse-pipeline
  type: docker-image
  source:
    repository: concourse/concourse-pipeline-resource

resources:
- name: concourse
  type: concourse-pipeline
  source:
    target: ((!concourse-url))
    insecure: "true"
    teams:
    - name: ((!concourse-team))
      username: ((!concourse-username))
      password: ((!concourse-password))
- name: geode-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/geode-build/*
    - ci/pipelines/shared/*
    - ci/pipelines/render.py
    - ci/pipelines/meta/meta.properties
- name: geode-images-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/images/*
- name: geode-reaper-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/reaper/*
- name: meta-mini-dockerfile
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/images/meta-mini/*
- name: meta-mini-image
  type: docker-image
  source:
    username: ((!docker-username))
    password: ((!docker-password))
    repository: gcr.io/((!gcp-project))/((!sanitized-geode-fork))-((!sanitized-geode-build-branch))-meta-img
{% if repository.fork == repository.upstream_fork %}
- name: geode-examples-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/examples/*
    - ci/pipelines/shared/*
    - ci/pipelines/render.py
    - ci/pipelines/meta/meta.properties
- name: geode-pr-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/pull-request/*
    - ci/pipelines/shared/*
    - ci/pipelines/render.py
    - ci/pipelines/meta/meta.properties
{% endif %}
- name: geode-metrics-pipeline
  type: git
  source:
    {{ github_access() | indent(4) }}
    branch: ((!geode-build-branch))
    paths:
    - ci/pipelines/metrics/*

jobs:
- name: set-images-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
  - get: geode-images-pipeline
    trigger: true
  - get: meta-mini-image
    trigger: true
    passed: [build-meta-mini-docker-image]
  - task: create-image-yml
    image: meta-mini-image
    config:
      platform: linux
      inputs:
      - name: geode-images-pipeline
      outputs:
      - name: results
      params:
        OUTPUT_DIRECTORY: results
        GEODE_BRANCH: ((geode-build-branch))
        GEODE_FORK: ((geode-fork))
        GEODE_REPO_NAME: ((geode-repo-name))
        REPOSITORY_PUBLIC: {{ repository.public }}
        UPSTREAM_FORK: {{ repository.upstream_fork }}
        PIPELINE_PREFIX: ((pipeline-prefix))
        SANITIZED_GEODE_BRANCH: ((sanitized-geode-build-branch))
        SANITIZED_GEODE_FORK: ((sanitized-geode-fork))
        GCP_PROJECT: ((gcp-project))
        PUBLIC_PIPELINES: ((public-pipelines))
      run:
        path: geode-images-pipeline/ci/pipelines/images/deploy_images_pipeline.sh
  - put: concourse
    params:
      pipelines:
      - name: ((!pipeline-prefix))images
        team: ((!concourse-team))
        config_file: results/generated-pipeline.yml
        vars_files:
        - results/pipeline-vars.yml

- name: set-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
  - get: geode-pipeline
    trigger: true
  - get: meta-mini-image
    trigger: true
    passed: [set-images-pipeline]
  - task: create-geode-pipeline-yml
    image: meta-mini-image
    config:
      platform: linux
      inputs:
      - name: geode-pipeline
      outputs:
      - name: results
      params:
        OUTPUT_DIRECTORY: results
        GEODE_BRANCH: ((geode-build-branch))
        GEODE_FORK: ((geode-fork))
        GEODE_REPO_NAME: ((geode-repo-name))
        REPOSITORY_PUBLIC: {{ repository.public }}
        ARTIFACT_BUCKET: ((artifact-bucket))
        UPSTREAM_FORK: {{ repository.upstream_fork }}
        PIPELINE_PREFIX: ((pipeline-prefix))
        SANITIZED_GEODE_BRANCH: ((sanitized-geode-build-branch))
        SANITIZED_GEODE_FORK: ((sanitized-geode-fork))
        GCP_PROJECT: ((gcp-project))
        PUBLIC_PIPELINES: ((public-pipelines))
        GRADLE_GLOBAL_ARGS: ((gradle-global-args))
        MAVEN_SNAPSHOT_BUCKET: ((maven-snapshot-bucket))
        SEMVER_PRERELEASE_TOKEN: ((semver-prerelease-token))
      run:
        path: geode-pipeline/ci/pipelines/geode-build/deploy_pipeline.sh
  - put: concourse
    params:
      pipelines:
      - name: ((!pipeline-prefix))main
        team: ((!concourse-team))
        config_file: results/generated-pipeline.yml
        vars_files:
        - results/pipeline-vars.yml


{% if repository.fork == repository.upstream_fork %}
- name: set-examples-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
  - get: geode-examples-pipeline
    trigger: true
  - get: meta-mini-image
    trigger: true
    passed: [build-meta-mini-docker-image]
  - task: deploy-build
    image: meta-mini-image
    config:
      platform: linux
      inputs:
        - name: geode-examples-pipeline
      outputs:
        - name: results
      params:
        OUTPUT_DIRECTORY: results
        GEODE_BRANCH: ((geode-build-branch))
        GEODE_FORK: ((geode-fork))
        GEODE_REPO_NAME: ((geode-repo-name))
        REPOSITORY_PUBLIC: {{ repository.public }}
        ARTIFACT_BUCKET: ((artifact-bucket))
        UPSTREAM_FORK: {{ repository.upstream_fork }}
        PIPELINE_PREFIX: ((pipeline-prefix))
        SANITIZED_GEODE_BRANCH: ((sanitized-geode-build-branch))
        SANITIZED_GEODE_FORK: ((sanitized-geode-fork))
        GCP_PROJECT: ((gcp-project))
        PUBLIC_PIPELINES: ((public-pipelines))
        SEMVER_PRERELEASE_TOKEN: ((semver-prerelease-token))
      run:
        path: geode-examples-pipeline/ci/pipelines/examples/deploy_pipeline.sh
  - put: concourse
    params:
      pipelines:
      - name: ((!pipeline-prefix))examples
        team: ((!concourse-team))
        config_file: results/generated-pipeline.yml
        vars_files:
        - results/pipeline-vars.yml

- name: set-pr-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
  - get: geode-pr-pipeline
    trigger: true
  - get: meta-mini-image
    trigger: true
    passed: [build-meta-mini-docker-image]
  - task: deploy-pr
    image: meta-mini-image
    config:
      platform: linux
      inputs:
        - name: geode-pr-pipeline
      outputs:
        - name: results
      params:
        OUTPUT_DIRECTORY: results
        GEODE_BRANCH: ((!geode-build-branch))
        GEODE_FORK: ((!geode-fork))
        GEODE_REPO_NAME: ((geode-repo-name))
        REPOSITORY_PUBLIC: {{ repository.public }}
        ARTIFACT_BUCKET: ((artifact-bucket))
        UPSTREAM_FORK: {{ repository.upstream_fork }}
        PIPELINE_PREFIX: ((pipeline-prefix))
        GCP_PROJECT: ((gcp-project))
        PUBLIC_PIPELINES: ((public-pipelines))
        GRADLE_GLOBAL_ARGS: ((gradle-global-args))
      run:
        path: geode-pr-pipeline/ci/pipelines/pull-request/deploy_pr_pipeline.sh
  - put: concourse
    params:
      pipelines:
      - name: ((!pipeline-prefix))pr
        team: ((!concourse-team))
        config_file: results/generated-pipeline.yml
        vars_files:
        - results/pipeline-vars.yml

{% endif %}

- name: set-metrics-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
  - get: geode-metrics-pipeline
    trigger: true
  - get: meta-mini-image
    trigger: true
    passed: [build-meta-mini-docker-image]
  - task: create-metrics-pipeline-yml
    image: meta-mini-image
    config:
      platform: linux
      inputs:
      - name: geode-metrics-pipeline
      outputs:
      - name: results
      params:
        OUTPUT_DIRECTORY: results
        GEODE_BRANCH: ((geode-build-branch))
        GEODE_FORK: ((geode-fork))
        GEODE_REPO_NAME: ((geode-repo-name))
        REPOSITORY_PUBLIC: {{ repository.public }}
        ARTIFACT_BUCKET: ((artifact-bucket))
        UPSTREAM_FORK: {{ repository.upstream_fork }}
        PIPELINE_PREFIX: ((pipeline-prefix))
        SANITIZED_GEODE_BRANCH: ((sanitized-geode-build-branch))
        SANITIZED_GEODE_FORK: ((sanitized-geode-fork))
        GCP_PROJECT: ((gcp-project))
        PUBLIC_PIPELINES: ((public-pipelines))
        CONCOURSE_URL: ((concourse-url))
        CONCOURSE_HOST: ((!concourse-host))
        CONCOURSE_TEAM: ((!concourse-team))
      run:
        path: geode-metrics-pipeline/ci/pipelines/metrics/deploy_metrics_pipeline.sh
  - put: concourse
    params:
      pipelines:
      - name: ((!pipeline-prefix))metrics
        team: ((!concourse-team))
        config_file: results/generated-pipeline.yml
        vars_files:
        - results/pipeline-vars.yml



- name: set-reaper-pipeline
  serial: true
  public: ((!public-pipelines))
  plan:
    - get: geode-reaper-pipeline
      trigger: true
    - get: meta-mini-image
      trigger: true
      passed: [build-meta-mini-docker-image]
    - task: create-image-yml
      image: meta-mini-image
      config:
        platform: linux
        inputs:
          - name: geode-reaper-pipeline
        outputs:
          - name: results
        params:
          OUTPUT_DIRECTORY: results
          GEODE_BRANCH: ((geode-build-branch))
          GEODE_FORK: ((geode-fork))
          GEODE_REPO_NAME: ((geode-repo-name))
          REPOSITORY_PUBLIC: {{ repository.public }}
          UPSTREAM_FORK: {{ repository.upstream_fork }}
          PIPELINE_PREFIX: ((pipeline-prefix))
          SANITIZED_GEODE_BRANCH: ((sanitized-geode-build-branch))
          SANITIZED_GEODE_FORK: ((sanitized-geode-fork))
          GCP_PROJECT: ((gcp-project))
          PUBLIC_PIPELINES: ((public-pipelines))
        run:
          path: geode-reaper-pipeline/ci/pipelines/reaper/deploy_reaper_pipeline.sh
    - put: concourse
      params:
        pipelines:
          - name: ((!pipeline-prefix))reaper
            team: ((!concourse-team))
            config_file: results/generated-pipeline.yml
            vars_files:
              - results/pipeline-vars.yml

- name: build-meta-mini-docker-image
  public: ((!public-pipelines))
  serial: true
  plan:
  - aggregate:
    - get: meta-mini-dockerfile
      trigger: true
  - put: meta-mini-image
    params:
      build: meta-mini-dockerfile/ci/images/meta-mini
      tag_as_latest: true
