parameters: archType: '' buildConfig: '' container: '' crossBuild: false osGroup: '' osSubgroup: '' pool: '' stagedBuild: false timeoutInMinutes: '' variables: {} dependOnEvaluatePaths: false uploadAs: 'azureBlob' ### Product build jobs: - template: xplat-pipeline-job.yml parameters: buildConfig: ${{ parameters.buildConfig }} archType: ${{ parameters.archType }} osGroup: ${{ parameters.osGroup }} osSubgroup: ${{ parameters.osSubgroup }} helixType: 'build/product/' enableMicrobuild: true stagedBuild: ${{ parameters.stagedBuild }} pool: ${{ parameters.pool }} dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }} # Compute job name from template parameters name: ${{ format('coreclr_jit_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} displayName: ${{ format('CoreCLR JIT Build {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }} # Run all steps in the container. # Note that the containers are defined in platform-matrix.yml container: ${{ parameters.container }} timeoutInMinutes: ${{ parameters.timeoutInMinutes }} crossBuild: ${{ parameters.crossBuild }} gatherAssetManifests: true variables: - name: osGroup value: ${{ parameters.osGroup }} - name: osSubgroup value: ${{ parameters.osSubgroup }} - name: publishLogsArtifactPrefix value: 'BuildLogs_CoreCLR_JIT' - name: uploadAs value: ${{ parameters.uploadAs }} - name: compilerArg value: '' - ${{ if ne(parameters.osGroup, 'windows') }}: - name: compilerArg value: '-clang9' # We need to use the stable version available on Alpine Linux - ${{ if and(eq(parameters.osGroup, 'Linux'), eq(parameters.osSubgroup, '_musl')) }}: - name: compilerArg value: '' # AppleClang has different version scheme, so we let compiler introspection pick up the available clang from PATH - ${{ if eq(parameters.osGroup, 'OSX') }}: - name: compilerArg value: '' - ${{ if eq(parameters.osGroup, 'windows') }}: - name: PythonScript value: 'py -3' - name: PipScript value: 'py -3 -m pip' - ${{ if ne(parameters.osGroup, 'windows') }}: - name: PythonScript value: 'python3' - name: PipScript value: 'pip3' - ${{ parameters.variables }} steps: # Install native dependencies # Linux builds use docker images with dependencies preinstalled, # and FreeBSD builds use a build agent with dependencies # preinstalled, so we only need this step for OSX and Windows. - ${{ if eq(parameters.osGroup, 'OSX') }}: - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) displayName: Install native dependencies (OSX) # Install internal tools on official builds # Since our internal tools are behind an authenticated feed, # we need to use the DotNetCli AzDO task to restore from the feed using a service connection. # We can't do this from within the build, so we need to do this as a separate step. - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}: - template: /eng/pipelines/common/restore-internal-tools.yml # Build/Generate native prerequisites - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset clr.nativeprereqs $(crossArg) -arch $(archType) -c $(buildConfig) -ci /bl:$(Build.SourcesDirectory)artifacts/log/$(buildConfig)/CoreCLRNativePrereqs.binlog displayName: Build and generate native prerequisites # Build CoreCLR JIT - ${{ if ne(parameters.osGroup, 'windows') }}: - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) $(crossArg) -ci $(compilerArg) -component alljits -component spmi displayName: Build CoreCLR JIT - ${{ if eq(parameters.osGroup, 'windows') }}: - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci -component alljits -component spmi displayName: Build CoreCLR JIT - ${{ if eq(parameters.uploadAs, 'azureBlob') }}: # Ensure the Python azure-storage-blob package is installed before doing the upload. - script: $(PipScript) install --user --upgrade pip && $(PipScript) install --user azure.storage.blob==12.5.0 --force-reinstall displayName: Upgrade Pip to latest and install azure-storage-blob Python package - script: $(PythonScript) $(Build.SourcesDirectory)/src/coreclr/scripts/jitrollingbuild.py upload -build_type $(buildConfig) -arch $(archType) -host_os $(osGroup) -git_hash $(Build.SourceVersion) --use_latest_jit_change displayName: Upload JIT to Azure Storage env: CLRJIT_AZ_KEY: $(clrjit_key1) # secret key stored as variable in pipeline - ${{ if eq(parameters.uploadAs, 'pipelineArtifacts') }}: # Publish product output directory for consumption by tests. - template: /eng/pipelines/common/upload-artifact-step.yml parameters: rootFolder: $(buildProductRootFolderPath) includeRootFolder: false archiveType: $(archiveType) tarCompression: $(tarCompression) archiveExtension: $(archiveExtension) artifactName: $(buildProductArtifactName) displayName: 'product build' # Publish Logs - task: PublishPipelineArtifact@1 displayName: Publish Logs inputs: targetPath: $(Build.SourcesDirectory)/artifacts/log artifactName: '$(publishLogsArtifactPrefix)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)' continueOnError: true condition: always()