diff --git a/.vsts-ci.yml b/.vsts-ci.yml
index fe6b4ac33..7b038f224 100644
--- a/.vsts-ci.yml
+++ b/.vsts-ci.yml
@@ -344,6 +344,11 @@ stages:
- template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
+ - template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
+ parameters:
+ dependsOn: Source_Build_Create_Tarball
+ condition: eq(dependencies.Source_Build_Create_Tarball.outputs['Tarball_Build_Check._includeTarballBuild'], 'true')
+
# https://github.com/dotnet/core-sdk/issues/248
# - template: /eng/build.yml
# parameters:
diff --git a/eng/Versions.props b/eng/Versions.props
index fd846cf10..746ab968d 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -159,7 +159,7 @@
15.7.179
15.7.179
0.1.0-6.0.100-bootstrap.11
- 0.1.0-6.0.100-1
+ 0.1.0-6.0.100-2
diff --git a/eng/source-build-tarball-build.yml b/eng/source-build-tarball-build.yml
index 386169915..2c7a9ae59 100644
--- a/eng/source-build-tarball-build.yml
+++ b/eng/source-build-tarball-build.yml
@@ -9,32 +9,6 @@ resources:
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)
+ - template: /src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
+ parameters:
+ tarballResourceId: installer-build-resource
diff --git a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
index 368e57572..74e4cfaa4 100644
--- a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
+++ b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-create-tarball.yml
@@ -2,10 +2,12 @@
jobs:
- job: Source_Build_Create_Tarball
+ container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2
displayName: Source-Build Create Tarball
pool:
vmImage: ubuntu-20.04
- container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-32-20210222183556-031e7d2
+ variables:
+ _BuildConfig: Release
workspace:
clean: all
@@ -14,40 +16,31 @@ jobs:
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)'
+ officialBuildArgs='/p:OfficialBuildId=$(BUILD.BUILDNUMBER)'
fi
./build.sh \
--ci \
- --configuration $buildConfig \
+ --configuration $(_BuildConfig) \
--publish \
-bl \
$officialBuildArgs \
+ /p:DotNetPublishUsingPipelines=true \
/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
+ # Check if the tarball should be built now so the result can be used in the build tarball job condition.
+ # This prevents allocation of additional agents if the tarball build legs should be skipped.
+ # 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"
+ echo "##vso[task.setvariable variable=_includeTarballBuild;isoutput=true]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')
+ displayName: Tarball Build Check
+ name: Tarball_Build_Check
diff --git a/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
new file mode 100644
index 000000000..525fbc0c9
--- /dev/null
+++ b/src/SourceBuild/Arcade/eng/common/templates/job/source-build-run-tarball-build.yml
@@ -0,0 +1,94 @@
+# Builds a source-build tarball
+
+parameters:
+ # Custom condition to apply to the job
+ condition: true
+
+ # Dependent jobs that must be completed before this job will run
+ dependsOn:
+
+ # The resource id of the tarball to download and build
+ tarballResourceId: current
+
+jobs:
+- job: Source_Build_Run_Tarball_Build
+ condition: ${{ parameters.condition }}
+ displayName: Source-Build Build Tarball
+ dependsOn: ${{ parameters.dependsOn }}
+ pool:
+ vmImage: ubuntu-20.04
+ strategy:
+ matrix:
+ Fedora33-Online:
+ _runOnline: true
+ _Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2
+ Fedora33-Offline:
+ _runOnline: false
+ _Container: mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-33-20210222183538-031e7d2
+ timeoutInMinutes: 120
+ variables:
+ _TarballDir: $(Build.StagingDirectory)/tarball
+ workspace:
+ clean: all
+
+ steps:
+ - checkout: none
+
+ - download: ${{ parameters.tarballResourceId }}
+ artifact: BlobArtifacts
+ patterns: '**/dotnet-sdk-source*.tar.gz'
+ displayName: Download Tarball
+
+ - script: |
+ set -x
+
+ resourceIdPathSegment=
+ if [ '${{ parameters.tarballResourceId }}' != 'current' ]; then
+ resourceIdPathSegment='${{ parameters.tarballResourceId }}/'
+ fi
+
+ mkdir -p "$(_TarballDir)"
+ tarballFilePath="$(PIPELINE.WORKSPACE)/${resourceIdPathSegment}BlobArtifacts/dotnet-sdk-source*.tar.gz"
+ eval tar -ozxf "$tarballFilePath" -C "$(_TarballDir)"
+ displayName: Extract Tarball
+
+ - script: |
+ set -x
+
+ docker run --rm -v $(_TarballDir):/tarball -w /tarball $(_Container) ./prep.sh
+ displayName: Prep Tarball
+
+ - script: |
+ set -x
+ df -h
+
+ networkArgs=
+ customBuildArgs=
+ if [ '$(_runOnline)' = 'true' ]; then
+ customBuildArgs='--online'
+ else
+ networkArgs='--network none'
+ fi
+
+ docker run --rm -v $(_TarballDir):/tarball -w /tarball ${networkArgs} $(_Container) ./build.sh ${customBuildArgs} -- /p:CleanWhileBuilding=true
+ displayName: Build Tarball
+
+ - task: CopyFiles@2
+ displayName: Gather Source Build Artifacts
+ inputs:
+ SourceFolder: $(_TarballDir)
+ Contents: |
+ artifacts/**/Private.SourceBuilt.Artifacts*.tar.gz
+ artifacts/prebuilt-report/Private.SourceBuilt.Prebuilts.*.tar.gz
+ TargetFolder: '$(Build.StagingDirectory)/artifacts'
+ CleanTargetFolder: true
+
+ - task: PublishPipelineArtifact@1
+ displayName: Publish Source Build Artifacts
+ inputs:
+ targetPath: '$(Build.StagingDirectory)/artifacts'
+ artifactName: $(Agent.JobName)_Artifacts_Attempt$(System.JobAttempt)
+
+ - template: /src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
+ parameters:
+ sourceFolder: $(_TarballDir)
diff --git a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
index 5de66f1f9..15cd9ceb9 100644
--- a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
+++ b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-publish-logs.yml
@@ -4,12 +4,6 @@ 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
@@ -22,12 +16,12 @@ steps:
TargetFolder: '$(Build.StagingDirectory)/BuildLogs'
CleanTargetFolder: true
continueOnError: true
- condition: and(${{ parameters.condition }}, succeededOrFailed())
+ condition: succeededOrFailed()
- task: PublishPipelineArtifact@1
displayName: Publish BuildLogs
inputs:
targetPath: '$(Build.StagingDirectory)/BuildLogs'
- artifactName: BuildLogs_SourceBuild_${{ parameters.artifactQualifier }}_Attempt$(System.JobAttempt)
+ artifactName: $(Agent.JobName)_BuildLogs_Attempt$(System.JobAttempt)
continueOnError: true
- condition: and(${{ parameters.condition }}, succeededOrFailed())
+ condition: succeededOrFailed()
diff --git a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml b/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml
deleted file mode 100644
index 50d5a7dbf..000000000
--- a/src/SourceBuild/Arcade/eng/common/templates/steps/source-build-run-tarball-build.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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 \
- --online \
- -- /p:CleanWhileBuilding=true
- workingDirectory: ${{ parameters.sourceFolder }}
- displayName: Build Tarball
- condition: and(${{ parameters.condition }}, succeeded())
-
-- task: CopyFiles@2
- displayName: Gather Source Build Artifacts
- inputs:
- SourceFolder: '${{ parameters.sourceFolder }}'
- Contents: |
- artifacts/**/Private.SourceBuilt.Artifacts*.tar.gz
- artifacts/prebuilt-report/Private.SourceBuilt.Prebuilts.*.tar.gz
- TargetFolder: '$(Build.StagingDirectory)/artifacts'
- CleanTargetFolder: true
- condition: and(${{ parameters.condition }}, succeeded())
-
-- task: PublishPipelineArtifact@1
- displayName: Publish Source Build Artifacts
- inputs:
- targetPath: '$(Build.StagingDirectory)/artifacts'
- artifactName: Artifacts_SourceBuild_TarballBuild_Attempt$(System.JobAttempt)
- 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 }}, succeededOrFailed())
diff --git a/src/SourceBuild/tarball/content/eng/Versions.props b/src/SourceBuild/tarball/content/eng/Versions.props
index 09a014ccd..fc7f2e9c1 100644
--- a/src/SourceBuild/tarball/content/eng/Versions.props
+++ b/src/SourceBuild/tarball/content/eng/Versions.props
@@ -23,6 +23,6 @@
0.1.0-6.0.100-bootstrap.11
0.1.0-6.0.100-
- 1
+ 2
diff --git a/src/SourceBuild/tarball/content/patches/aspnetcore/0004-Revert-sourcelink-submodule-workaround.patch b/src/SourceBuild/tarball/content/patches/aspnetcore/0004-Revert-sourcelink-submodule-workaround.patch
new file mode 100644
index 000000000..d2e2622ff
--- /dev/null
+++ b/src/SourceBuild/tarball/content/patches/aspnetcore/0004-Revert-sourcelink-submodule-workaround.patch
@@ -0,0 +1,46 @@
+From 9b529c2f911e9a7ad25586d0d4a8db8bc5a7b2e5 Mon Sep 17 00:00:00 2001
+From: Michael Simons
+Date: Thu, 5 Aug 2021 22:44:48 +0000
+Subject: [PATCH] Revert sourcelink submodule workaround
+
+aspnetcore will fail the offline tarball build because of the sourcelink workaround being removed here.
+To fix this, a sourcelink patch was added to address the issue.
+---
+ eng/SourceBuild.props | 14 --------------
+ 1 file changed, 14 deletions(-)
+
+diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
+index 3dbfe2ce7e..403b91f976 100644
+--- a/eng/SourceBuild.props
++++ b/eng/SourceBuild.props
+@@ -2,7 +2,6 @@
+
+ aspnetcore
+ true
+- false
+
+
+
+
+
+-
+-
+-
+-
+-
+-
+