@@ -46,6 +46,16 @@ parameters:
4646 image : macOS-latest
4747 os : macos
4848
49+ - name : linux_matrix
50+ type : object
51+ default :
52+ - id : linux_x64
53+ jobName : ' Linux (x64)'
54+ runtime : linux-x64
55+ pool : GitClientPME-1ESHostedPool-intel-pc
56+ image : ubuntu-x86_64-ado1es
57+ os : linux
58+
4959variables :
5060 - name : ' esrpAppConnectionName'
5161 value : ' 1ESGitClient-ESRP-App'
@@ -490,3 +500,102 @@ extends:
490500 cp $(Build.ArtifactStagingDirectory)/installers/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
491501 cp $(Build.ArtifactStagingDirectory)/symbols/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
492502 cp -r $(Build.ArtifactStagingDirectory)/payload $(Build.ArtifactStagingDirectory)/_final
503+
504+ #
505+ # Linux build jobs
506+ #
507+ - ${{ each dim in parameters.linux_matrix }} :
508+ - job : ${{ dim.id }}
509+ displayName : ${{ dim.jobName }}
510+ pool :
511+ name : ${{ dim.pool }}
512+ image : ${{ dim.image }}
513+ os : ${{ dim.os }}
514+ templateContext :
515+ outputs :
516+ - output : pipelineArtifact
517+ targetPath : ' $(Build.ArtifactStagingDirectory)/_final'
518+ artifactName : ' ${{ dim.runtime }}'
519+ steps :
520+ - checkout : self
521+ - task : Bash@3
522+ displayName : ' Read version file'
523+ inputs :
524+ targetType : inline
525+ script : |
526+ echo "##vso[task.setvariable variable=version;isReadOnly=true]$(cat ./VERSION | sed -E 's/.[0-9]+$//')"
527+ - task : UseDotNet@2
528+ displayName : ' Use .NET 8 SDK'
529+ inputs :
530+ packageType : sdk
531+ version : ' 8.x'
532+ - task : Bash@3
533+ displayName : ' Build payload'
534+ inputs :
535+ targetType : filePath
536+ filePath : ' ./src/linux/Packaging.Linux/layout.sh'
537+ arguments : |
538+ --runtime="${{ dim.runtime }}" \
539+ --configuration="Release" \
540+ --output="$(Build.ArtifactStagingDirectory)/payload" \
541+ --symbol-output="$(Build.ArtifactStagingDirectory)/symbols_raw"
542+ - task : Bash@3
543+ displayName : ' Build packages'
544+ inputs :
545+ targetType : filePath
546+ filePath : ' ./src/linux/Packaging.Linux/pack.sh'
547+ arguments : |
548+ --version="$(version)" \
549+ --runtime="${{ dim.runtime }}" \
550+ --payload="$(Build.ArtifactStagingDirectory)/payload" \
551+ --symbols="$(Build.ArtifactStagingDirectory)/symbols_raw" \
552+ --output="$(Build.ArtifactStagingDirectory)/pkg"
553+ - task : Bash@3
554+ displayName : ' Move packages'
555+ inputs :
556+ targetType : inline
557+ script : |
558+ # Move symbols
559+ mkdir -p $(Build.ArtifactStagingDirectory)/symbols
560+ mv $(Build.ArtifactStagingDirectory)/pkg/tar/gcm-*-symbols.tar.gz $(Build.ArtifactStagingDirectory)/symbols
561+
562+ # Move binary packages
563+ mkdir -p $(Build.ArtifactStagingDirectory)/installers
564+ mv $(Build.ArtifactStagingDirectory)/pkg/tar/*.tar.gz $(Build.ArtifactStagingDirectory)/installers
565+ mv $(Build.ArtifactStagingDirectory)/pkg/deb/*.deb $(Build.ArtifactStagingDirectory)/installers
566+ - task : EsrpCodeSigning@5
567+ condition : and(succeeded(), eq('${{ parameters.esrp }}', true))
568+ displayName : ' Sign Debian package'
569+ inputs :
570+ connectedServiceName : ' $(esrpAppConnectionName)'
571+ useMSIAuthentication : true
572+ appRegistrationClientId : ' $(esrpClientId)'
573+ appRegistrationTenantId : ' $(esrpTenantId)'
574+ authAkvName : ' $(esrpKeyVaultName)'
575+ authSignCertName : ' $(esrpSignReqCertName)'
576+ serviceEndpointUrl : ' $(esrpEndpointUrl)'
577+ folderPath : ' $(Build.ArtifactStagingDirectory)/installers'
578+ pattern : |
579+ **/*.deb
580+ useMinimatch : true
581+ signConfigType : inlineSignParams
582+ inlineOperation : |
583+ [
584+ {
585+ "KeyCode": "CP-453387-Pgp",
586+ "OperationCode": "LinuxSign",
587+ "ToolName": "sign",
588+ "ToolVersion": "1.0",
589+ "Parameters": {}
590+ }
591+ ]
592+ - task : Bash@3
593+ displayName : ' Collect artifacts for publishing'
594+ inputs :
595+ targetType : inline
596+ script : |
597+ mkdir -p $(Build.ArtifactStagingDirectory)/_final
598+ cp $(Build.ArtifactStagingDirectory)/installers/*.deb $(Build.ArtifactStagingDirectory)/_final
599+ cp $(Build.ArtifactStagingDirectory)/installers/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
600+ cp $(Build.ArtifactStagingDirectory)/symbols/*.tar.gz $(Build.ArtifactStagingDirectory)/_final
601+ cp -r $(Build.ArtifactStagingDirectory)/payload $(Build.ArtifactStagingDirectory)/_final
0 commit comments