1cc1dc7a3Sopenharmony_ci/* This pipeline is used for release testing, so it runs rarely.
2cc1dc7a3Sopenharmony_ci *
3cc1dc7a3Sopenharmony_ci * Test objectives for this pipeline are:
4cc1dc7a3Sopenharmony_ci *
5cc1dc7a3Sopenharmony_ci *   - Run the entire pipeline in less than 60 minutes.
6cc1dc7a3Sopenharmony_ci *   - Test builds on all supported operating systems.
7cc1dc7a3Sopenharmony_ci *   - Test builds on optimized compiler choices (i.e. prefer Clang over GCC).
8cc1dc7a3Sopenharmony_ci *   - Build only release variants.
9cc1dc7a3Sopenharmony_ci *   - Run full functional tests.
10cc1dc7a3Sopenharmony_ci *   - Run full image quality tests.
11cc1dc7a3Sopenharmony_ci *   - Code sign the binaries on supported operating systems.
12cc1dc7a3Sopenharmony_ci *   - Build the release package.
13cc1dc7a3Sopenharmony_ci *
14cc1dc7a3Sopenharmony_ci * The test matrix is not fully covered; e.g. we can assume compilers behave
15cc1dc7a3Sopenharmony_ci * similarly on different operating systems, so we test one compiler per OS.
16cc1dc7a3Sopenharmony_ci */
17cc1dc7a3Sopenharmony_ci
18cc1dc7a3Sopenharmony_ci@Library('hive-infra-library@changes/86/295486/1') _
19cc1dc7a3Sopenharmony_ci
20cc1dc7a3Sopenharmony_cipipeline {
21cc1dc7a3Sopenharmony_ci  agent none
22cc1dc7a3Sopenharmony_ci
23cc1dc7a3Sopenharmony_ci  options {
24cc1dc7a3Sopenharmony_ci    ansiColor('xterm')
25cc1dc7a3Sopenharmony_ci    timestamps()
26cc1dc7a3Sopenharmony_ci  }
27cc1dc7a3Sopenharmony_ci
28cc1dc7a3Sopenharmony_ci  stages {
29cc1dc7a3Sopenharmony_ci    stage('Build All') {
30cc1dc7a3Sopenharmony_ci      parallel {
31cc1dc7a3Sopenharmony_ci        /* Run static analysis on Linux */
32cc1dc7a3Sopenharmony_ci        stage('Coverity') {
33cc1dc7a3Sopenharmony_ci          agent {
34cc1dc7a3Sopenharmony_ci            kubernetes {
35cc1dc7a3Sopenharmony_ci              yaml '''
36cc1dc7a3Sopenharmony_ciapiVersion: v1
37cc1dc7a3Sopenharmony_cikind: Pod
38cc1dc7a3Sopenharmony_cispec:
39cc1dc7a3Sopenharmony_ci  securityContext:
40cc1dc7a3Sopenharmony_ci    runAsUser: 1000
41cc1dc7a3Sopenharmony_ci    runAsGroup: 1000
42cc1dc7a3Sopenharmony_ci  imagePullSecrets:
43cc1dc7a3Sopenharmony_ci    - name: artifactory-ms-docker
44cc1dc7a3Sopenharmony_ci  containers:
45cc1dc7a3Sopenharmony_ci    - name: astcenc
46cc1dc7a3Sopenharmony_ci      image: mobile-studio--docker.eu-west-1.artifactory.aws.arm.com/astcenc:3.2.0
47cc1dc7a3Sopenharmony_ci      command:
48cc1dc7a3Sopenharmony_ci        - sleep
49cc1dc7a3Sopenharmony_ci      args:
50cc1dc7a3Sopenharmony_ci        - infinity
51cc1dc7a3Sopenharmony_ci      resources:
52cc1dc7a3Sopenharmony_ci        requests:
53cc1dc7a3Sopenharmony_ci          cpu: 4
54cc1dc7a3Sopenharmony_ci          memory: 8Gi
55cc1dc7a3Sopenharmony_ci'''
56cc1dc7a3Sopenharmony_ci            defaultContainer 'astcenc'
57cc1dc7a3Sopenharmony_ci            }
58cc1dc7a3Sopenharmony_ci          }
59cc1dc7a3Sopenharmony_ci          stages {
60cc1dc7a3Sopenharmony_ci            stage('Clean') {
61cc1dc7a3Sopenharmony_ci              steps {
62cc1dc7a3Sopenharmony_ci                sh 'git clean -fdx'
63cc1dc7a3Sopenharmony_ci              }
64cc1dc7a3Sopenharmony_ci            }
65cc1dc7a3Sopenharmony_ci            stage('Coverity') {
66cc1dc7a3Sopenharmony_ci              steps {
67cc1dc7a3Sopenharmony_ci                withCredentials([usernamePassword(credentialsId: 'jenkins-password',
68cc1dc7a3Sopenharmony_ci                                                  usernameVariable: 'USERNAME',
69cc1dc7a3Sopenharmony_ci                                                  passwordVariable: 'PASSWORD')]) {
70cc1dc7a3Sopenharmony_ci                  sh script: '''#!/bin/bash
71cc1dc7a3Sopenharmony_ci                    mkdir -p ${WORKSPACE}/occonfig
72cc1dc7a3Sopenharmony_ci
73cc1dc7a3Sopenharmony_ci                    mkdir build_cov
74cc1dc7a3Sopenharmony_ci                    cd build_cov
75cc1dc7a3Sopenharmony_ci
76cc1dc7a3Sopenharmony_ci                    cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_ISA_AVX2=ON ..
77cc1dc7a3Sopenharmony_ci
78cc1dc7a3Sopenharmony_ci                    cov-configure --config ${WORKSPACE}/coverity.conf --template --compiler cc --comptype gcc
79cc1dc7a3Sopenharmony_ci                    cov-configure --config ${WORKSPACE}/coverity.conf --template --compiler c++ --comptype g++
80cc1dc7a3Sopenharmony_ci                    cov-build --config ${WORKSPACE}/coverity.conf --dir ${WORKSPACE}/intermediate make install
81cc1dc7a3Sopenharmony_ci                    cov-analyze --dir ${WORKSPACE}/intermediate
82cc1dc7a3Sopenharmony_ci                    cov-commit-defects --dir ${WORKSPACE}/intermediate \\
83cc1dc7a3Sopenharmony_ci                                       --stream astcenc-master \\
84cc1dc7a3Sopenharmony_ci                                       --url https://coverity.cambridge.arm.com \\
85cc1dc7a3Sopenharmony_ci                                       --user jenkins@arm.com --password ${PASSWORD} \\
86cc1dc7a3Sopenharmony_ci                                       --strip-path ${WORKSPACE}
87cc1dc7a3Sopenharmony_ci                  '''
88cc1dc7a3Sopenharmony_ci                }
89cc1dc7a3Sopenharmony_ci              }
90cc1dc7a3Sopenharmony_ci            }
91cc1dc7a3Sopenharmony_ci          }
92cc1dc7a3Sopenharmony_ci        }
93cc1dc7a3Sopenharmony_ci        /* Build for Linux on x86-64 using Clang */
94cc1dc7a3Sopenharmony_ci        stage('Linux') {
95cc1dc7a3Sopenharmony_ci          agent {
96cc1dc7a3Sopenharmony_ci            kubernetes {
97cc1dc7a3Sopenharmony_ci              yaml '''\
98cc1dc7a3Sopenharmony_ci                apiVersion: v1
99cc1dc7a3Sopenharmony_ci                kind: Pod
100cc1dc7a3Sopenharmony_ci                spec:
101cc1dc7a3Sopenharmony_ci                  securityContext:
102cc1dc7a3Sopenharmony_ci                    runAsUser: 1000
103cc1dc7a3Sopenharmony_ci                    runAsGroup: 1000
104cc1dc7a3Sopenharmony_ci                  imagePullSecrets:
105cc1dc7a3Sopenharmony_ci                    - name: artifactory-ms-docker
106cc1dc7a3Sopenharmony_ci                  containers:
107cc1dc7a3Sopenharmony_ci                    - name: astcenc
108cc1dc7a3Sopenharmony_ci                      image: mobile-studio--docker.eu-west-1.artifactory.aws.arm.com/astcenc:3.0.0
109cc1dc7a3Sopenharmony_ci                      command:
110cc1dc7a3Sopenharmony_ci                        - sleep
111cc1dc7a3Sopenharmony_ci                      args:
112cc1dc7a3Sopenharmony_ci                        - infinity
113cc1dc7a3Sopenharmony_ci                      resources:
114cc1dc7a3Sopenharmony_ci                        requests:
115cc1dc7a3Sopenharmony_ci                          cpu: 4
116cc1dc7a3Sopenharmony_ci                          memory: 8Gi
117cc1dc7a3Sopenharmony_ci                        limits:
118cc1dc7a3Sopenharmony_ci                          cpu: 8
119cc1dc7a3Sopenharmony_ci                          memory: 16Gi
120cc1dc7a3Sopenharmony_ci              '''.stripIndent()
121cc1dc7a3Sopenharmony_ci              defaultContainer 'astcenc'
122cc1dc7a3Sopenharmony_ci            }
123cc1dc7a3Sopenharmony_ci          }
124cc1dc7a3Sopenharmony_ci          stages {
125cc1dc7a3Sopenharmony_ci            stage('Clean') {
126cc1dc7a3Sopenharmony_ci              steps {
127cc1dc7a3Sopenharmony_ci                sh 'git clean -ffdx'
128cc1dc7a3Sopenharmony_ci              }
129cc1dc7a3Sopenharmony_ci            }
130cc1dc7a3Sopenharmony_ci            stage('Build astcenc R x64') {
131cc1dc7a3Sopenharmony_ci              steps {
132cc1dc7a3Sopenharmony_ci                sh '''
133cc1dc7a3Sopenharmony_ci                  export CXX=clang++-9
134cc1dc7a3Sopenharmony_ci                  mkdir build_rel
135cc1dc7a3Sopenharmony_ci                  cd build_rel
136cc1dc7a3Sopenharmony_ci                  cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_ISA_AVX2=ON -DASTCENC_ISA_SSE41=ON -DASTCENC_ISA_SSE2=ON -DASTCENC_PACKAGE=x64 ..
137cc1dc7a3Sopenharmony_ci                  make install package -j4
138cc1dc7a3Sopenharmony_ci                '''
139cc1dc7a3Sopenharmony_ci              }
140cc1dc7a3Sopenharmony_ci            }
141cc1dc7a3Sopenharmony_ci            stage('Build astcdec R x64') {
142cc1dc7a3Sopenharmony_ci              steps {
143cc1dc7a3Sopenharmony_ci                sh '''
144cc1dc7a3Sopenharmony_ci                  export CXX=clang++-9
145cc1dc7a3Sopenharmony_ci                  mkdir build_reldec
146cc1dc7a3Sopenharmony_ci                  cd build_reldec
147cc1dc7a3Sopenharmony_ci                  cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_ISA_AVX2=ON -DASTCENC_ISA_SSE41=ON -DASTCENC_ISA_SSE2=ON -DASTCENC_DECOMPRESSOR=ON ..
148cc1dc7a3Sopenharmony_ci                  make -j4
149cc1dc7a3Sopenharmony_ci                '''
150cc1dc7a3Sopenharmony_ci              }
151cc1dc7a3Sopenharmony_ci            }
152cc1dc7a3Sopenharmony_ci            stage('Stash') {
153cc1dc7a3Sopenharmony_ci              steps {
154cc1dc7a3Sopenharmony_ci                dir('build_rel') {
155cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-linux-x64', includes: '*.zip'
156cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-linux-x64-hash', includes: '*.zip.sha256'
157cc1dc7a3Sopenharmony_ci                }
158cc1dc7a3Sopenharmony_ci              }
159cc1dc7a3Sopenharmony_ci            }
160cc1dc7a3Sopenharmony_ci            stage('Test') {
161cc1dc7a3Sopenharmony_ci              steps {
162cc1dc7a3Sopenharmony_ci                sh '''
163cc1dc7a3Sopenharmony_ci                  python3 ./Test/astc_test_functional.py
164cc1dc7a3Sopenharmony_ci                  python3 ./Test/astc_test_image.py --encoder=all-x86 --test-set Small
165cc1dc7a3Sopenharmony_ci                '''
166cc1dc7a3Sopenharmony_ci              }
167cc1dc7a3Sopenharmony_ci            }
168cc1dc7a3Sopenharmony_ci          }
169cc1dc7a3Sopenharmony_ci        }
170cc1dc7a3Sopenharmony_ci        /* Build for Windows on x86-64 using MSVC ClangCL */
171cc1dc7a3Sopenharmony_ci        stage('Windows') {
172cc1dc7a3Sopenharmony_ci          agent {
173cc1dc7a3Sopenharmony_ci            label 'Windows'
174cc1dc7a3Sopenharmony_ci          }
175cc1dc7a3Sopenharmony_ci          stages {
176cc1dc7a3Sopenharmony_ci            stage('Clean') {
177cc1dc7a3Sopenharmony_ci              steps {
178cc1dc7a3Sopenharmony_ci                bat 'git clean -ffdx'
179cc1dc7a3Sopenharmony_ci              }
180cc1dc7a3Sopenharmony_ci            }
181cc1dc7a3Sopenharmony_ci            stage('Build R x64') {
182cc1dc7a3Sopenharmony_ci              steps {
183cc1dc7a3Sopenharmony_ci                bat '''
184cc1dc7a3Sopenharmony_ci                  call c:\\progra~2\\micros~1\\2022\\buildtools\\vc\\auxiliary\\build\\vcvars64.bat
185cc1dc7a3Sopenharmony_ci                  mkdir build_rel
186cc1dc7a3Sopenharmony_ci                  cd build_rel
187cc1dc7a3Sopenharmony_ci                  cmake -G "Visual Studio 17 2022" -T ClangCL -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_ISA_AVX2=ON -DASTCENC_ISA_SSE41=ON -DASTCENC_ISA_SSE2=ON -DASTCENC_PACKAGE=x64 ..
188cc1dc7a3Sopenharmony_ci                  msbuild astcencoder.sln -property:Configuration=Release
189cc1dc7a3Sopenharmony_ci                  msbuild PACKAGE.vcxproj -property:Configuration=Release
190cc1dc7a3Sopenharmony_ci                  msbuild INSTALL.vcxproj -property:Configuration=Release
191cc1dc7a3Sopenharmony_ci                '''
192cc1dc7a3Sopenharmony_ci              }
193cc1dc7a3Sopenharmony_ci            }
194cc1dc7a3Sopenharmony_ci            stage('Build R Arm64') {
195cc1dc7a3Sopenharmony_ci              steps {
196cc1dc7a3Sopenharmony_ci                bat '''
197cc1dc7a3Sopenharmony_ci                  call c:\\progra~2\\micros~1\\2022\\buildtools\\vc\\auxiliary\\build\\vcvarsall.bat x64_arm64
198cc1dc7a3Sopenharmony_ci                  mkdir build_rel_arm64
199cc1dc7a3Sopenharmony_ci                  cd build_rel_arm64
200cc1dc7a3Sopenharmony_ci                  cmake -G "Visual Studio 17 2022" -A ARM64 -T ClangCL -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_ISA_NEON=ON -DASTCENC_PACKAGE=arm64 ..
201cc1dc7a3Sopenharmony_ci                  msbuild astcencoder.sln -property:Configuration=Release
202cc1dc7a3Sopenharmony_ci                  msbuild PACKAGE.vcxproj -property:Configuration=Release
203cc1dc7a3Sopenharmony_ci                  msbuild INSTALL.vcxproj -property:Configuration=Release
204cc1dc7a3Sopenharmony_ci                '''
205cc1dc7a3Sopenharmony_ci              }
206cc1dc7a3Sopenharmony_ci            }
207cc1dc7a3Sopenharmony_ci            stage('Sign') {
208cc1dc7a3Sopenharmony_ci              steps {
209cc1dc7a3Sopenharmony_ci                dir('sign_tools') {
210cc1dc7a3Sopenharmony_ci                    checkout changelog: false,
211cc1dc7a3Sopenharmony_ci                             poll: false,
212cc1dc7a3Sopenharmony_ci                             scm: [$class: 'GitSCM',
213cc1dc7a3Sopenharmony_ci                                   branches: [[name: '*/main']],
214cc1dc7a3Sopenharmony_ci                                   doGenerateSubmoduleConfigurations: false,
215cc1dc7a3Sopenharmony_ci                                   extensions: [],
216cc1dc7a3Sopenharmony_ci                                   submoduleCfg: [],
217cc1dc7a3Sopenharmony_ci                                   userRemoteConfigs: [[credentialsId: 'gerrit-jenkins-ssh',
218cc1dc7a3Sopenharmony_ci                                                        url: 'ssh://mirror.eu-west-1.gerrit-eu01.aws.arm.com:29418/Hive/shared/signing']]]
219cc1dc7a3Sopenharmony_ci                }
220cc1dc7a3Sopenharmony_ci                withCredentials([usernamePassword(credentialsId: 'cepe-artifactory-jenkins',
221cc1dc7a3Sopenharmony_ci                                                  usernameVariable: 'AF_USER',
222cc1dc7a3Sopenharmony_ci                                                  passwordVariable: 'APIKEY')]) {
223cc1dc7a3Sopenharmony_ci                    powershell 'C:\\Python311\\python.exe .\\sign_tools\\windows-client-wrapper.py -b $Env:BUILD_NUMBER -t $Env:APIKEY (Get-ChildItem -Filter build_rel\\*.zip)[0].FullName'
224cc1dc7a3Sopenharmony_ci                    powershell 'C:\\Python311\\python.exe .\\sign_tools\\windows-client-wrapper.py -b $Env:BUILD_NUMBER -t $Env:APIKEY (Get-ChildItem -Filter build_rel_arm64\\*.zip)[0].FullName'
225cc1dc7a3Sopenharmony_ci                }
226cc1dc7a3Sopenharmony_ci              }
227cc1dc7a3Sopenharmony_ci            }
228cc1dc7a3Sopenharmony_ci            stage('Stash') {
229cc1dc7a3Sopenharmony_ci              steps {
230cc1dc7a3Sopenharmony_ci                dir('build_rel') {
231cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-windows-x64', includes: '*.zip'
232cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-windows-x64-hash', includes: '*.zip.sha256'
233cc1dc7a3Sopenharmony_ci                }
234cc1dc7a3Sopenharmony_ci                dir('build_rel_arm64') {
235cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-windows-arm64', includes: '*.zip'
236cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-windows-arm64-hash', includes: '*.zip.sha256'
237cc1dc7a3Sopenharmony_ci                }
238cc1dc7a3Sopenharmony_ci              }
239cc1dc7a3Sopenharmony_ci            }
240cc1dc7a3Sopenharmony_ci            stage('Test') {
241cc1dc7a3Sopenharmony_ci              steps {
242cc1dc7a3Sopenharmony_ci                bat '''
243cc1dc7a3Sopenharmony_ci                  set Path=c:\\Python38;c:\\Python38\\Scripts;%Path%
244cc1dc7a3Sopenharmony_ci                  call python ./Test/astc_test_image.py --test-set Small
245cc1dc7a3Sopenharmony_ci                '''
246cc1dc7a3Sopenharmony_ci              }
247cc1dc7a3Sopenharmony_ci            }
248cc1dc7a3Sopenharmony_ci          }
249cc1dc7a3Sopenharmony_ci        }
250cc1dc7a3Sopenharmony_ci        /* Build for macOS on x86-64 using Clang */
251cc1dc7a3Sopenharmony_ci        stage('macOS') {
252cc1dc7a3Sopenharmony_ci          agent {
253cc1dc7a3Sopenharmony_ci            label 'mac && x86_64 && notarizer'
254cc1dc7a3Sopenharmony_ci          }
255cc1dc7a3Sopenharmony_ci          stages {
256cc1dc7a3Sopenharmony_ci            stage('Clean') {
257cc1dc7a3Sopenharmony_ci              steps {
258cc1dc7a3Sopenharmony_ci                sh 'git clean -ffdx'
259cc1dc7a3Sopenharmony_ci              }
260cc1dc7a3Sopenharmony_ci            }
261cc1dc7a3Sopenharmony_ci            stage('Build R') {
262cc1dc7a3Sopenharmony_ci              steps {
263cc1dc7a3Sopenharmony_ci                sh '''
264cc1dc7a3Sopenharmony_ci                  mkdir build_rel
265cc1dc7a3Sopenharmony_ci                  cd build_rel
266cc1dc7a3Sopenharmony_ci                  cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../ -DASTCENC_PACKAGE=universal ..
267cc1dc7a3Sopenharmony_ci                  make install package -j4
268cc1dc7a3Sopenharmony_ci                '''
269cc1dc7a3Sopenharmony_ci              }
270cc1dc7a3Sopenharmony_ci            }
271cc1dc7a3Sopenharmony_ci            stage('Sign and notarize') {
272cc1dc7a3Sopenharmony_ci              environment {
273cc1dc7a3Sopenharmony_ci                NOTARIZATION_CREDS = credentials('notarization-account')
274cc1dc7a3Sopenharmony_ci              }
275cc1dc7a3Sopenharmony_ci              steps {
276cc1dc7a3Sopenharmony_ci                dir('build_rel') {
277cc1dc7a3Sopenharmony_ci                  sh 'git clone ssh://eu-gerrit-1.euhpc.arm.com:29418/Hive/shared/signing'
278cc1dc7a3Sopenharmony_ci                  withCredentials([usernamePassword(credentialsId: 'win-signing',
279cc1dc7a3Sopenharmony_ci                                                    usernameVariable: 'USERNAME',
280cc1dc7a3Sopenharmony_ci                                                    passwordVariable: 'PASSWORD')]) {
281cc1dc7a3Sopenharmony_ci                    sh 'python3 ./signing/macos-client-wrapper.py ${USERNAME} *.zip'
282cc1dc7a3Sopenharmony_ci                    sh 'rm -rf ./signing'
283cc1dc7a3Sopenharmony_ci                  }
284cc1dc7a3Sopenharmony_ci                }
285cc1dc7a3Sopenharmony_ci              }
286cc1dc7a3Sopenharmony_ci            }
287cc1dc7a3Sopenharmony_ci            stage('Stash') {
288cc1dc7a3Sopenharmony_ci              steps {
289cc1dc7a3Sopenharmony_ci                dir('build_rel') {
290cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-macos-universal', includes: '*.zip'
291cc1dc7a3Sopenharmony_ci                  stash name: 'astcenc-macos-universal-hash', includes: '*.zip.sha256'
292cc1dc7a3Sopenharmony_ci                }
293cc1dc7a3Sopenharmony_ci              }
294cc1dc7a3Sopenharmony_ci            }
295cc1dc7a3Sopenharmony_ci            stage('Test') {
296cc1dc7a3Sopenharmony_ci              steps {
297cc1dc7a3Sopenharmony_ci                sh '''
298cc1dc7a3Sopenharmony_ci                  export PATH=/usr/local/bin:$PATH
299cc1dc7a3Sopenharmony_ci                  python3 ./Test/astc_test_image.py --test-set Small --encoder universal
300cc1dc7a3Sopenharmony_ci                '''
301cc1dc7a3Sopenharmony_ci              }
302cc1dc7a3Sopenharmony_ci            }
303cc1dc7a3Sopenharmony_ci          }
304cc1dc7a3Sopenharmony_ci        }
305cc1dc7a3Sopenharmony_ci      }
306cc1dc7a3Sopenharmony_ci    }
307cc1dc7a3Sopenharmony_ci    stage('Artifactory') {
308cc1dc7a3Sopenharmony_ci      agent {
309cc1dc7a3Sopenharmony_ci        kubernetes {
310cc1dc7a3Sopenharmony_ci          yaml '''
311cc1dc7a3Sopenharmony_ciapiVersion: v1
312cc1dc7a3Sopenharmony_cikind: Pod
313cc1dc7a3Sopenharmony_cispec:
314cc1dc7a3Sopenharmony_ci  securityContext:
315cc1dc7a3Sopenharmony_ci    runAsUser: 1000
316cc1dc7a3Sopenharmony_ci    runAsGroup: 1000
317cc1dc7a3Sopenharmony_ci  imagePullSecrets:
318cc1dc7a3Sopenharmony_ci    - name: artifactory-ms-docker
319cc1dc7a3Sopenharmony_ci  containers:
320cc1dc7a3Sopenharmony_ci    - name: astcenc
321cc1dc7a3Sopenharmony_ci      image: mobile-studio--docker.eu-west-1.artifactory.aws.arm.com/astcenc:3.0.0
322cc1dc7a3Sopenharmony_ci      command:
323cc1dc7a3Sopenharmony_ci        - sleep
324cc1dc7a3Sopenharmony_ci      args:
325cc1dc7a3Sopenharmony_ci        - infinity
326cc1dc7a3Sopenharmony_ci      resources:
327cc1dc7a3Sopenharmony_ci        requests:
328cc1dc7a3Sopenharmony_ci          cpu: 1
329cc1dc7a3Sopenharmony_ci          memory: 4Gi
330cc1dc7a3Sopenharmony_ci'''
331cc1dc7a3Sopenharmony_ci          defaultContainer 'astcenc'
332cc1dc7a3Sopenharmony_ci        }
333cc1dc7a3Sopenharmony_ci      }
334cc1dc7a3Sopenharmony_ci      options {
335cc1dc7a3Sopenharmony_ci        skipDefaultCheckout true
336cc1dc7a3Sopenharmony_ci      }
337cc1dc7a3Sopenharmony_ci      stages {
338cc1dc7a3Sopenharmony_ci        stage('Unstash') {
339cc1dc7a3Sopenharmony_ci          steps {
340cc1dc7a3Sopenharmony_ci            dir('upload') {
341cc1dc7a3Sopenharmony_ci              unstash 'astcenc-windows-x64-hash'
342cc1dc7a3Sopenharmony_ci              unstash 'astcenc-windows-arm64-hash'
343cc1dc7a3Sopenharmony_ci              unstash 'astcenc-linux-x64-hash'
344cc1dc7a3Sopenharmony_ci              unstash 'astcenc-macos-universal-hash'
345cc1dc7a3Sopenharmony_ci
346cc1dc7a3Sopenharmony_ci              unstash 'astcenc-windows-x64'
347cc1dc7a3Sopenharmony_ci              unstash 'astcenc-windows-arm64'
348cc1dc7a3Sopenharmony_ci              unstash 'astcenc-linux-x64'
349cc1dc7a3Sopenharmony_ci              unstash 'astcenc-macos-universal'
350cc1dc7a3Sopenharmony_ci
351cc1dc7a3Sopenharmony_ci              sh 'cat *.sha256 > release-sha256.txt'
352cc1dc7a3Sopenharmony_ci              sh 'rm *.sha256'
353cc1dc7a3Sopenharmony_ci            }
354cc1dc7a3Sopenharmony_ci          }
355cc1dc7a3Sopenharmony_ci        }
356cc1dc7a3Sopenharmony_ci        stage('Upload') {
357cc1dc7a3Sopenharmony_ci          steps {
358cc1dc7a3Sopenharmony_ci            zip zipFile: 'astcenc.zip', dir: 'upload', archive: false
359cc1dc7a3Sopenharmony_ci            cepeArtifactoryUpload(sourcePattern: 'astcenc.zip')
360cc1dc7a3Sopenharmony_ci          }
361cc1dc7a3Sopenharmony_ci        }
362cc1dc7a3Sopenharmony_ci      }
363cc1dc7a3Sopenharmony_ci      post {
364cc1dc7a3Sopenharmony_ci        always {
365cc1dc7a3Sopenharmony_ci          deleteDir()
366cc1dc7a3Sopenharmony_ci        }
367cc1dc7a3Sopenharmony_ci      }
368cc1dc7a3Sopenharmony_ci    }
369cc1dc7a3Sopenharmony_ci  }
370cc1dc7a3Sopenharmony_ci}
371