summaryrefslogtreecommitdiff
path: root/Jenkinsfile
blob: d1d8ad956cfa017be09557899dd9b9d6776abecc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env groovy

@NonCPS
def setDescription() {
    def item = Jenkins.instance.getItemByFullName(env.JOB_NAME)
    item.setDescription("VyOS image build using a\nPipeline build inside Docker container.")
    item.save()
}

setDescription()

/* Only keep the 10 most recent builds. */
def projectProperties = [
    [$class: 'BuildDiscarderProperty',strategy: [$class: 'LogRotator', numToKeepStr: '5']],
]

properties(projectProperties)

pipeline {
    agent {
        dockerfile {
            filename 'Dockerfile'
            label 'jessie-amd64'
            dir 'docker'
            args '--privileged --sysctl net.ipv6.conf.lo.disable_ipv6=0 -e GOSU_UID=1006 -e GOSU_GID=1006'
        }
    }

    stages {
        stage('Submodule Init') {
            steps {
                sh '''
                    git submodule update --init --recursive
                    git submodule update --remote
                '''
            }
        }
        stage('Build Packages') {
            steps {
                sh 'scripts/build-submodules --verbose'
            }
        }

        stage('Build ISO') {
            steps {
                sh '''
                    #!/bin/sh

                    # we do not want to fetch VyOS packages from the mirror,
                    # we rather prefer all build by ourself!
                    sed -i '/vyos_repo_entry/d' scripts/live-build-config

                    # Configure the ISO
                    ./configure --build-by="autobuild@vyos.net" --debian-mirror="http://ftp.us.debian.org/debian/"

                    # Debug to see which Debian packages we have so far
                    ls -al packages/*.deb

                    # Finally build our ISO
                    sudo make iso
                '''
            }
        }
    }

    post {
        cleanup {
            echo 'One way or another, I have finished'
            // the 'build' directory got elevated permissions during the build
            // cdjust permissions so it can be cleaned up by the regular user
            sh 'sudo chmod -R 777 build/'
            deleteDir() /* cleanup our workspace */
        }
    }
}