#!/usr/bin/env groovy

def workspacePath = "/home/jenkins/workspace"
def buildLabel = "task.mirror.create-${UUID.randomUUID().toString()}"
def sourcePath = "${workspacePath}/src"

// FIXME(jtgans): Get rid of privileged! This is a security risk!
def jnlpContainer = containerTemplate(name: 'jnlp',
                                      image: 'jenkins/jnlp-slave:alpine')
def debianContainer = containerTemplate(name: 'debian',
                                        image: 'gcr.io/mendel-linux-cloud-infra/mendel-builder:latest',
                                        command: 'cat',
                                        args: '',
                                        ttyEnabled: true,
                                        privileged: true)
def aptlyVolume = persistentVolumeClaim(claimName: 'aptly-state', mountPath: '/var/lib/aptly')

podTemplate(label: buildLabel, containers: [jnlpContainer, debianContainer], volumes: [aptlyVolume], envVars: []) {
    def date = new Date()
    String stamp = date.format("yyyyMMdd-HHmmss")

    node(buildLabel) {
        dir(sourcePath) {
            container('debian') {
                stage('Keys') {
                    if (params.keys.size() > 0) {
                        sh """
                           env
                           gpg --homedir /var/lib/aptly/.gnupg \
                               --no-default-keyring \
                               --keyring trustedkeys.gpg \
                               --keyserver pool.sks-keyservers.net \
                               --recv-keys ${params.keys}
                           """
                    }
                }

                stage('Mirror') {
                    sh """
                       aptly mirror create ${params.name} ${params.url} ${params.release} ${params.components} -architectures="${params.architectures}"
                       """
                }
            }
        }
    }
}
