首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使Jenkins管道建立在arm + arm64 + amd64上

如何使Jenkins管道建立在arm + arm64 + amd64上
EN

Stack Overflow用户
提问于 2022-01-28 07:43:31
回答 1查看 913关注 0票数 0

我正在使用Jenkins为Debian和Ubuntu构建包。在我的设置中添加了新的Raspberry PI节点,以便为Raspbian构建包:

的问题是如何使管道在任意节点上构建noarch包,在每个体系结构上在节点上构建二进制包?

对于每个发行版,我都使用修补码头图像为Debian10-11和Ubuntu20.0421.04构建包并执行测试安装。armel/aarch64版本的debian映像也出现在它的Raspberry 3/4节点上。

默认情况下,Jenkins选择一个节点,triger在此基础上构建。

代码语言:javascript
运行
复制
    stages {

        stage('debian-buster') {
            agent {
                docker { image 'vitexsoftware/debian:buster' }
            }
            steps {
                dir('build/debian/package') {
                    checkout scm
                buildPackage()
                installPackages()
                }
                stash includes: 'dist/**', name: 'dist-buster'
            }
            post {
                success {
                    archiveArtifacts 'dist/debian/'
                    copyArtifact()
                }
            }
        }
...   
  • 我如何为构建指定一些架构斧头?
  • 我可以以某种方式使用jenkins节点标签吗?

EN

回答 1

Stack Overflow用户

发布于 2022-02-07 21:43:31

如何使用声明式管道来解决这个问题是没有办法的。

用脚本编写的管道可以完成以下工作:

代码语言:javascript
运行
复制
#!groovy
String[] architectures = ['amd64', 'armhf', 'aarch64']
String[] distributions = ['debian:buster', 'debian:bullseye', 'debian:bookworm', 'ubuntu:focal', 'ubuntu:hirsute', 'ubuntu:impish']

String vendor = 'vitexsoftware'
String distribution = ''
String architecture = ''
String dockerfile = ''
String buildArgs = ''

architectures.each {
    architecture = it
    distributions.each {
        distribution = it
        dockerfile =  distribution + '/Dockerfile'
        buildArgs = ' --platform linux/' + architecture +
/*        ' -t ' + vendor + '/' + distribution + */
        ' -f ' + dockerfile + ' ' + distribution

        def buildImage = ''

        node( architecture ) {
            ansiColor('xterm') {
                stage('Build ' + architecture + '/' + distribution) {
                    checkout scm
                    buildImage = docker.build(vendor + '/' + distribution, buildArgs)
                }
                stage('Test ' + architecture + '/' + distribution) {
                    buildImage.inside {
                        sh 'whoami'
                        sh 'sudo apt install -y linuxlogo'
                        sh 'linuxlogo'
                    }
                }
                stage('Docker push ' + architecture + '/' + distribution ) {
                    docker.withRegistry('https://registry.hub.docker.com', 'vitex_dockerhub') {
                        buildImage.push(  distribution + "-${env.BUILD_NUMBER}-SNAPSHOT")
                    }
                }
            }
        }
    }
}

[![Jenkins Buildfarm in Action][1]][1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70890327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档