Add source-build tarball build ci (#10995)
This commit is contained in:
parent
1d29250565
commit
8288ae2e6d
6 changed files with 159 additions and 55 deletions
|
@ -337,7 +337,7 @@ stages:
|
||||||
|
|
||||||
- template: /eng/common/templates/jobs/source-build.yml
|
- template: /eng/common/templates/jobs/source-build.yml
|
||||||
|
|
||||||
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-tarball-creation.yml
|
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
|
||||||
|
|
||||||
# https://github.com/dotnet/core-sdk/issues/248
|
# https://github.com/dotnet/core-sdk/issues/248
|
||||||
# - template: /eng/build.yml
|
# - template: /eng/build.yml
|
||||||
|
@ -360,7 +360,7 @@ stages:
|
||||||
- Linux
|
- Linux
|
||||||
- Darwin
|
- Darwin
|
||||||
- Source_Build_Managed
|
- Source_Build_Managed
|
||||||
- Source_Build_Tarball_Creation
|
- Source_Build_Create_Tarball
|
||||||
publishUsingPipelines: true
|
publishUsingPipelines: true
|
||||||
pool:
|
pool:
|
||||||
vmImage: vs2017-win2016
|
vmImage: vs2017-win2016
|
||||||
|
|
40
eng/source-build-tarball-build.yml
Normal file
40
eng/source-build-tarball-build.yml
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
trigger: none
|
||||||
|
pr: none
|
||||||
|
resources:
|
||||||
|
pipelines:
|
||||||
|
- pipeline: installer-build-resource
|
||||||
|
source: dotnet-installer-official-ci
|
||||||
|
trigger: true # Run pipeline when any run of dotnet-installer-official-ci completes
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: build
|
||||||
|
jobs:
|
||||||
|
- job: build
|
||||||
|
displayName: Build
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-20.04
|
||||||
|
container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-32-20210222183556-031e7d2
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
|
||||||
|
variables:
|
||||||
|
_TarballDir: $(Build.StagingDirectory)/tarball
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
|
||||||
|
- download: installer-build-resource
|
||||||
|
patterns: 'BlobArtifacts/dotnet-sdk-source*.tar.gz'
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -x
|
||||||
|
|
||||||
|
mkdir -p "$(_TarballDir)"
|
||||||
|
tarballFilePath="$(PIPELINE.WORKSPACE)/installer-build-resource/BlobArtifacts/dotnet-sdk-source*.tar.gz"
|
||||||
|
eval tar -ozxf "$tarballFilePath" -C "$(_TarballDir)"
|
||||||
|
|
||||||
|
df -h
|
||||||
|
displayName: Extract Tarball
|
||||||
|
|
||||||
|
- template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml
|
||||||
|
parameters:
|
||||||
|
sourceFolder: $(_TarballDir)
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Creates a source-build tarball
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: Source_Build_Create_Tarball
|
||||||
|
displayName: Source-Build Create Tarball
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-20.04
|
||||||
|
container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-32-20210222183556-031e7d2
|
||||||
|
workspace:
|
||||||
|
clean: all
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set -x
|
||||||
|
df -h
|
||||||
|
|
||||||
|
buildConfig=Release
|
||||||
|
# Check if AzDO substitutes in a build config from a variable, and use it if so.
|
||||||
|
if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
|
||||||
|
buildConfig='$(_BuildConfig)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
officialBuildArgs=
|
||||||
|
if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then
|
||||||
|
officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)'
|
||||||
|
fi
|
||||||
|
|
||||||
|
./build.sh \
|
||||||
|
--ci \
|
||||||
|
--configuration $buildConfig \
|
||||||
|
--publish \
|
||||||
|
-bl \
|
||||||
|
$officialBuildArgs \
|
||||||
|
/p:ArcadeBuildTarball=true
|
||||||
|
displayName: Create Tarball
|
||||||
|
|
||||||
|
- template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
|
||||||
|
parameters:
|
||||||
|
artifactQualifier: TarballCreation
|
||||||
|
|
||||||
|
- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
|
||||||
|
# Only build the tarball if the PR touches source-build source
|
||||||
|
- script: |
|
||||||
|
if curl "https://api.github.com/repos/dotnet/installer/pulls/$(System.PullRequest.PullRequestNumber)/files" | grep '"filename": "src/SourceBuild/*'
|
||||||
|
then
|
||||||
|
echo "##vso[task.setvariable variable=_includeTarballBuild]true"
|
||||||
|
fi
|
||||||
|
displayName: Include Tarball Build Check
|
||||||
|
|
||||||
|
- template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml
|
||||||
|
parameters:
|
||||||
|
sourceFolder: $(Build.SourcesDirectory)/artifacts/tarball
|
||||||
|
condition: eq(variables['_includeTarballBuild'], 'true')
|
|
@ -1,53 +0,0 @@
|
||||||
jobs:
|
|
||||||
- job: Source_Build_Tarball_Creation
|
|
||||||
displayName: Source-Build Tarball Creation
|
|
||||||
pool:
|
|
||||||
vmImage: ubuntu-20.04
|
|
||||||
container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-32-20210222183556-031e7d2
|
|
||||||
workspace:
|
|
||||||
clean: all
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
set -x
|
|
||||||
df -h
|
|
||||||
|
|
||||||
buildConfig=Release
|
|
||||||
# Check if AzDO substitutes in a build config from a variable, and use it if so.
|
|
||||||
if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
|
|
||||||
buildConfig='$(_BuildConfig)'
|
|
||||||
fi
|
|
||||||
|
|
||||||
officialBuildArgs=
|
|
||||||
if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then
|
|
||||||
officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)'
|
|
||||||
fi
|
|
||||||
|
|
||||||
./build.sh \
|
|
||||||
--ci \
|
|
||||||
--configuration $buildConfig \
|
|
||||||
--publish \
|
|
||||||
-bl \
|
|
||||||
$officialBuildArgs \
|
|
||||||
/p:ArcadeBuildTarball=true
|
|
||||||
displayName: Create Tarball
|
|
||||||
|
|
||||||
- task: CopyFiles@2
|
|
||||||
displayName: Prepare BuildLogs staging directory
|
|
||||||
inputs:
|
|
||||||
SourceFolder: '$(Build.SourcesDirectory)'
|
|
||||||
Contents: |
|
|
||||||
**/*.log
|
|
||||||
**/*.binlog
|
|
||||||
TargetFolder: '$(Build.StagingDirectory)/BuildLogs'
|
|
||||||
CleanTargetFolder: true
|
|
||||||
continueOnError: true
|
|
||||||
condition: succeededOrFailed()
|
|
||||||
|
|
||||||
- task: PublishPipelineArtifact@1
|
|
||||||
displayName: Publish BuildLogs
|
|
||||||
inputs:
|
|
||||||
targetPath: '$(Build.StagingDirectory)/BuildLogs'
|
|
||||||
artifactName: BuildLogs_SourceBuild_TarballCreation_Attempt$(System.JobAttempt)
|
|
||||||
continueOnError: true
|
|
||||||
condition: succeededOrFailed()
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
# Gathers and publishes the build logs for a source-build
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
# Folder to scan for source-build logs from
|
||||||
|
sourceFolder: $(Build.SourcesDirectory)
|
||||||
|
|
||||||
|
# The unique qualifier to append to the artifactName
|
||||||
|
artifactQualifier:
|
||||||
|
|
||||||
|
# Custom condition to apply to each step
|
||||||
|
condition: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: CopyFiles@2
|
||||||
|
displayName: Prepare BuildLogs staging directory
|
||||||
|
inputs:
|
||||||
|
SourceFolder: '${{ parameters.sourceFolder }}'
|
||||||
|
Contents: |
|
||||||
|
**/*.log
|
||||||
|
**/*.binlog
|
||||||
|
artifacts/source-build/self/prebuilt-report/**
|
||||||
|
TargetFolder: '$(Build.StagingDirectory)/BuildLogs'
|
||||||
|
CleanTargetFolder: true
|
||||||
|
continueOnError: true
|
||||||
|
condition: and(${{ parameters.condition }}, succeededOrFailed())
|
||||||
|
|
||||||
|
- task: PublishPipelineArtifact@1
|
||||||
|
displayName: Publish BuildLogs
|
||||||
|
inputs:
|
||||||
|
targetPath: '$(Build.StagingDirectory)/BuildLogs'
|
||||||
|
artifactName: BuildLogs_SourceBuild_${{ parameters.artifactQualifier }}_Attempt$(System.JobAttempt)
|
||||||
|
continueOnError: true
|
||||||
|
condition: and(${{ parameters.condition }}, succeededOrFailed())
|
|
@ -0,0 +1,31 @@
|
||||||
|
# Builds the specified source-build tarball
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
# Folder containing the tarball source to build
|
||||||
|
sourceFolder: $(Build.SourcesDirectory)
|
||||||
|
|
||||||
|
# Custom condition to apply to each step
|
||||||
|
condition: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: |
|
||||||
|
set -x
|
||||||
|
|
||||||
|
./prep.sh
|
||||||
|
workingDirectory: ${{ parameters.sourceFolder }}
|
||||||
|
displayName: Prep Tarball
|
||||||
|
condition: and(${{ parameters.condition }}, succeeded())
|
||||||
|
|
||||||
|
- script: |
|
||||||
|
set -x
|
||||||
|
|
||||||
|
./build.sh
|
||||||
|
workingDirectory: ${{ parameters.sourceFolder }}
|
||||||
|
displayName: Build Tarball
|
||||||
|
condition: and(${{ parameters.condition }}, succeeded())
|
||||||
|
|
||||||
|
- template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
|
||||||
|
parameters:
|
||||||
|
sourceFolder: ${{ parameters.sourceFolder }}
|
||||||
|
artifactQualifier: TarballBuild
|
||||||
|
condition: and(${{ parameters.condition }}, succeeded())
|
Loading…
Reference in a new issue