pipeline {
  agent {
    kubernetes {
      label 'my-agent-pod'
      yaml """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: jnlp
    volumeMounts:
    - name: volume-known-hosts
      mountPath: /home/jenkins/.ssh
  - name: win-gnu
    image: rbaldwin1/rust-mingw
    tty: true
    command:
    - cat
    resources:
      limits:
        memory: 3Gi
        cpu: 1
      requests:
        memory: 3Gi
        cpu: 1
    env:
    - name: "HOME"
      value: "/home/jenkins"
    - name: "CARGO_HOME"
      value: "/home/jenkins/.cargo/"
    volumeMounts:
    - mountPath: "/home/jenkins"
      name: "jenkins-home"
      readOnly: false
  volumes:
  - name: volume-known-hosts
    configMap:
      name: known-hosts
  - name: "jenkins-home"
    emptyDir: {}
"""
    }
  }
  options {
    timestamps()
  }

  stages {
  
    stage('Build') {
      steps {
        container('win-gnu') {
          sh 'cargo build --target x86_64-pc-windows-gnu --release'
        }
      }
    }
    stage('Deploy') {
      steps {
        container('jnlp') {
          sshagent ( ['projects-storage.eclipse.org-bot-ssh']) {
            sh '''
              ssh -o BatchMode=yes genie.osee@projects-storage.eclipse.org rm -rf /home/data/httpd/download.eclipse.org/technology/osee/downloads/bat/x86_64-win/1.0.5
              ssh -o BatchMode=yes genie.osee@projects-storage.eclipse.org mkdir -p /home/data/httpd/download.eclipse.org/technology/osee/downloads/bat/x86_64-win/1.0.5
              scp -o BatchMode=yes -r ./target/x86_64-pc-windows-gnu/release/bat.exe genie.osee@projects-storage.eclipse.org:/home/data/httpd/download.eclipse.org/technology/osee/downloads/bat/x86_64-win/1.0.5
            '''
          }
        }
      }
    }
  }
}