apiVersion: batch/v1
kind: CronJob
metadata:
  name: quartz-build
spec:
  schedule: "0 */12 * * *"
  jobTemplate:
    spec:
      backoffLimit: 1
      template:
        spec:
          initContainers:
          - name: s3-sync
            image: s3
            env:
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: s3-credentials
                  key: S3_ACCESS_KEY_ID
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: s3-credentials
                  key: S3_SECRET_ACCESS_KEY
            - name: S3_BUCKET
              value: obsidian-eth
            - name: S3_REGION
              value: us-west-1
            command: ["/bin/sh", "-c"]
            args: ["aws --endpoint-url https://s3.kluster.moll.re s3 sync s3://$S3_BUCKET /vault --delete"]

            volumeMounts:
              - name: vault
                mountPath: /vault
          
          - name: git-clone
            image: git
            env:
            - name: GIT_URL
              value: https://git.kluster.moll.re/remoll/eth-physics.git
            volumeMounts:
              - name: config
                mountPath: /config
            command: ["/bin/sh", "-c"]
            args: ["git clone $GIT_URL /config"]
            
            
          containers:
          - name: quartz-build
            image: node
            command: ["/bin/sh", "-c"]
            args: 
              - >-
                cd /config &&
                ln -s /vault content &&
                npm ci &&
                npx quartz build &&
                rm -rfv /dist/* &&
                cp --verbose -r /config/public/* /dist 
            # can't just ln to the dist folder, because quartz deletes it before rebuilding
            volumeMounts:
            - name: vault
              mountPath: /vault
            - name: dist
              mountPath: /dist
            - name: config
              mountPath: /config
          restartPolicy: Never

          volumes:
          - name: vault
            persistentVolumeClaim:
              claimName: vault
          - name: dist
            persistentVolumeClaim:
              claimName: quartz
          - name: config
            emptyDir: {}