pipeline {
    agent none
    stages {
        stage('Checkout') {
            agent {
                label 'oe-buildenv'
            }
            steps {
                script {
                    sh """#!/bin/bash
                    repo init -u https://git.blackfinn.de/yocto/linux-blackfinn.git
                    repo sync
                    """
                    stage('Fetch') {
                        echo "Fetch ${params.MACHINE}"
                        sh """#!/bin/bash
                        MACHINE=${params.MACHINE} source blackfinn-init-build-env
                        bitbake console-image --runall=fetch
                        """
                    }
                    stage('Build') {
                        echo "Build ${params.MACHINE}"
                        sh """#!/bin/bash
                        MACHINE=${params.MACHINE} source blackfinn-init-build-env
                        bitbake console-image
                        """

                        stash name: "download_bz2", includes: "**/build/downloads/*.tar.bz2", excludes: "**/build/downloads/*.tar.bz2.*"
                        stash name: "download_gz", includes: "**/build/downloads/*.tar.gz", excludes: "**/build/downloads/*.tar.gz.*"
                        stash name: "download_xz", includes: "**/build/downloads/*.tar.xz", excludes: "**/build/downloads/*.tar.xz.*"

                        stash name: "deploy_ipk", includes: "**/build/tmp/deploy/ipk/**"
                        stash name: "deploy_images", includes: "**/build/tmp/deploy/images/**"
                    }
                }
            }
        }

        stage('Deploy downloads') {
            agent {
                label 'deploy'
            }
            steps {
                sh "rm -rf *"
                unstash "download_bz2"
                unstash "download_gz"
                unstash "download_xz"
                sh "mkdir -p /srv/files.blackfinn.de/data/mirror/sources"
                sh "rsync -zv build/downloads/* /srv/files.blackfinn.de/data/mirror/sources/ || exit 0"
                sh "rm -rf *"
            }
        }

        stage('Deploy packages') {
            agent {
                label 'deploy'
            }
            steps {
                sh "rm -rf *"
                unstash "deploy_ipk"
                sh "mkdir -p /srv/files.blackfinn.de/data/ipk/${params.BRANCH}"
                sh "rsync -avz build/tmp/deploy/ipk/ /srv/files.blackfinn.de/data/ipk/${params.BRANCH} || exit 0"
                sh "ipkindex /srv/files.blackfinn.de/data/ipk/${params.BRANCH}"
                sh "rm -rf *"
            }
        }

        stage('Deploy images') {
            agent {
                label 'deploy'
            }
            steps {
                sh "rm -rf *"
                unstash "deploy_images"
                sh "mkdir -p /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                script {
                    if(params.MACHINE == 'beaglebone-yocto') {
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/zImage--*-${params.MACHINE}-*.bin /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}/zImage"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/console-image-${params.MACHINE}-*.rootfs.wic /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}/console-image.rootfs.wic"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/console-image-${params.MACHINE}-*.rootfs.tar.bz2 /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}/console-image.rootfs.tar.bz2"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/am335x-boneblack--*-${params.MACHINE}-*.dtb /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}/am335x-boneblack.dtb"
                    }
                    else if(params.MACHINE == 'raspberrypi3-64') {
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/Image /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/*.dtb /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/*.dtbo /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/console-image-${params.MACHINE}.rpi-sdimg /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                        sh "mv build/tmp/deploy/images/${params.MACHINE}/console-image-${params.MACHINE}.tar.bz2 /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                    }
                }
                sh "mv build/tmp/deploy/images/${params.MACHINE}/console-image-${params.MACHINE}.manifest /srv/files.blackfinn.de/data/images/${params.BRANCH}/${params.MACHINE}"
                sh "rm -rf *"
            }
        }
    }
//    post {
//        failure {
//            mail to: 'tkl@blackfinn.de',
//                 subject: "${currentBuild.currentResult}: ${env.JOB_NAME}",
//                 body: "${env.JOB_NAME} didn't succeeds. See: ${env.BUILD_URL}"
//        }
//    }
}