# Copyright 2019 The Tekton Authors
#
# Licensed 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.
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pipeline-cron-trigger
spec:
  schedule: "0 2 * * *"  # Daily at 2am
  jobTemplate:
    spec:
      template:
        spec:
          volumes:
          - name: shared-volume
            emptyDir: {}
          initContainers:
          - name: git
            image: alpine/git
            command:
            - /bin/sh
            args:
              - -ce
              - |
                GIT_SHA=$(git ls-remote --heads https://${GIT_REPO} | \
                  awk '/refs\/heads\/master/{ print $1 }')
                VERSION_TAG="v$(date +"%Y%m%d")-$(echo $GIT_SHA | cut -c 1-10)"
                cat <<EOF > /shared/git
                export GIT_SHA=$GIT_SHA
                export GIT_REPO=$GIT_REPO
                export VERSION_TAG=$VERSION_TAG
                EOF
            volumeMounts:
            - mountPath: /shared
              name: shared-volume
            env:
              - name: GIT_REPO
                value: "github.com/tektoncd/pipeline"
          - name: uuid
            image: python:3.6-alpine3.9
            command:
            - /bin/sh
            args:
              - -ce
              - |
                TRIGGER_UUID=$(python -c 'import uuid; print(uuid.uuid4())')
                cat <<EOF > /shared/uuid
                export TRIGGER_UUID=$TRIGGER_UUID
                EOF
            volumeMounts:
            - mountPath: /shared
              name: shared-volume
          containers:
          - name: trigger
            image: curlimages/curl
            command:
              - /bin/sh
            args:
              - -ce
              - |
                . /shared/git
                . /shared/uuid
                cat <<EOF > /shared/post-body.json
                {
                  "buildUUID": "$TRIGGER_UUID",
                  "gitrevision": "$GIT_SHA",
                  "gitrepository": "$GIT_REPO",
                  "versionTag": "$VERSION_TAG"
                }
                EOF
                curl -d @/shared/post-body.json $SINK_URL
            env:
              - name: SINK_URL
                value: "sink-url"
            volumeMounts:
            - mountPath: /shared
              name: shared-volume
          restartPolicy: Never
