summaryrefslogtreecommitdiff
path: root/contrib/depends/Jenkinsfile
blob: 6c4f1c2d1df981378943419756bf12cd40a663e3 (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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
pipeline {
    agent none
    
    parameters {
        string(
            name: 'LINUX_TARGETS',
            defaultValue: 'x86_64-linux-android,armv7a-linux-androideabi,aarch64-linux-android,x86_64-linux-gnu,aarch64-linux-gnu,i686-linux-gnu,x86_64-w64-mingw32,i686-w64-mingw32',
            description: 'Comma-separated list of Linux targets to build'
        )
        string(
            name: 'DARWIN_TARGETS', 
            defaultValue: 'aarch64-apple-darwin,x86_64-apple-darwin,aarch64-apple-ios,aarch64-apple-iossimulator',
            description: 'Comma-separated list of Darwin targets to build'
        )
    }
    
    stages {
        stage('Build Dependencies') {
            parallel {
                stage('Linux Builds') {
                    agent {
                        dockerfile {
                            filename '.devcontainer/Dockerfile'
                            args '-v /opt/builds:/opt/builds'
                            label 'linux && amd64'
                        }
                    }
                    steps {
                        script {
                            def targets = params.LINUX_TARGETS.split(',').collect { it.trim() }
                            
                            checkout scm
                            
                            for (target in targets) {
                                echo "Building dependencies for ${target}"
                                
                                dir('contrib/depends') {
                                    sh "make HOST=${target}"
                                }
                            }
                        }
                    }
                    post {
                        always {
                            script {
                                def targets = params.LINUX_TARGETS.split(',').collect { it.trim() }
                                for (target in targets) {
                                    archiveArtifacts artifacts: "contrib/depends/built/${target}/*/*.tar.gz*", allowEmptyArchive: true
                                }
                            }
                            
                            sshPublisher(publishers: [sshPublisherDesc(configName: 'static.mrcyjanek.net', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/home/mrcyjanek/web/static.mrcyjanek.net/public_html/lfs/depends', remoteDirectorySDF: false, sourceFiles: 'contrib/depends/built/*/*/*.tar.gz*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                        }
                    }
                }
                
                stage('Darwin Builds') {
                    agent {
                        label 'darwin && arm64'
                    }
                    steps {
                        script {
                            def targets = params.DARWIN_TARGETS.split(',').collect { it.trim() }
                            
                            checkout scm
                            
                            for (target in targets) {
                                echo "Building dependencies for ${target}"
                                
                                dir('contrib/depends') {
                                    sh "make HOST=${target}"
                                }
                            }
                        }
                    }
                    post {
                        always {
                            script {
                                def targets = params.DARWIN_TARGETS.split(',').collect { it.trim() }
                                for (target in targets) {
                                    archiveArtifacts artifacts: "contrib/depends/built/${target}/*/*.tar.gz*", allowEmptyArchive: true
                                }
                            }
                            
                            sshPublisher(publishers: [sshPublisherDesc(configName: 'static.mrcyjanek.net', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'depends', remoteDirectorySDF: false, sourceFiles: 'contrib/depends/built/*/*/*.tar.gz*')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                        }
                    }
                }
            }
        }
    }
    
    post {
        always {
            echo "Build completed."
        }
    }
}