matrixを使ってふたつのworker上でビルドしたいとき、実行順によっては

pipeline {
    agent none
    stages {
        stage('parallel') {
            matrix {
                agent {
                    label "worker-${ARCH}"
                }
                axes {
                    axis {
                        name 'ARCH'
                        values 'x86_64', 'armv8'
                    }
                }
 
                stages {
 
                    stage('prepare') {
                      steps {
                        script {
                          env.KEY = "key_${ARCH}"
                        }
                      }
                    }
 
                    stage('build') {
                        steps {
                            sh '''
                            echo "${ARCH} ${KEY}"
                            '''
                        }
                    }
                }
            }
        }
 
    }
}

worker-x86_64 prepare worker-x86_64 build worker-armv8 prepare worker-armv8 build の順に実行されれば問題ないが、 worker-x86_64 prepare worker-armv8 prepare worker-x86_64 build worker-armv8 build の順に実行されると、あとから実行されたものに上書きされる

x86_64 key_armv8
armv8 key_armv8

そのため別の変数で格納する必要がある

pipeline {
    agent none
    stages {
        stage('parallel') {
            matrix {
                agent {
                    label "worker-${ARCH}"
                }
                axes {
                    axis {
                        name 'ARCH'
                        values 'x86_64', 'armv8'
                    }
                }
 
                stages {
 
                    stage('prepare') {
                      steps {
                        script {
                          if (ARCH == "armv8") {
                            env.KEY_ARM = "key_arm"
                          } else {
                            env.KEY_AMD = "key_amd"
                          }
                        }
                      }
                    }
 
                    stage('build') {
                        steps {
                            sh '''
                            if [[ "${ARCH}" == "armv8" ]]; then
                              export KEY=${KEY_ARM}
                            else
                              export KEY=${KEY_AMD}
                            fi
                            echo "${ARCH} ${KEY}"
                            '''
                        }
                    }
                }
            }
        }
 
    }
}