diff --git a/.vsts-ci.yml b/.vsts-ci.yml index 8669ea063..aee3999c0 100644 --- a/.vsts-ci.yml +++ b/.vsts-ci.yml @@ -21,7 +21,7 @@ parameters: - name: vmrBranch displayName: dotnet/dotnet branch to push to type: string - default: $(Build.SourceBranch) + default: '' - name: disableVmrBuild displayName: Skip source-building the VMR @@ -48,6 +48,13 @@ variables: - name: _InternalRuntimeDownloadArgs value: '' +- ${{ if ne(parameters.vmrBranch, '') }}: + - name: VmrBranch + value: ${{ parameters.vmrBranch }} +- ${{ else }}: + - name: VmrBranch + value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }} + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - group: DotNetBuilds storage account read tokens - name: _InternalRuntimeDownloadArgs @@ -369,7 +376,7 @@ stages: - ${{ if and(eq(variables['Build.Reason'], 'PullRequest'), not(parameters.disableVmrBuild)) }}: - template: eng/pipelines/templates/stages/vmr-build.yml parameters: - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} isBuiltFromVmr: false # In case the VMR Build stage is temporarily disabled, the VMR synchronization step is run to validate @@ -381,7 +388,7 @@ stages: jobs: - template: eng/pipelines/templates/jobs/vmr-synchronization.yml parameters: - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - stage: Publish diff --git a/README.md b/README.md index 9aec54e89..0c48dca6a 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,6 @@ Further instructions on how to build inside of the Codespace will be available u cd /path/to/complete/dotnet/sources ./prep.sh ``` - - On arm64, please use `./prep.sh --bootstrap` instead. 3. Build the .NET SDK diff --git a/eng/pipelines/templates/jobs/vmr-build.yml b/eng/pipelines/templates/jobs/vmr-build.yml index 3d32c9faf..0a2177d3f 100644 --- a/eng/pipelines/templates/jobs/vmr-build.yml +++ b/eng/pipelines/templates/jobs/vmr-build.yml @@ -45,9 +45,6 @@ parameters: - name: excludeOmniSharpTests type: boolean -- name: bootstrapPrep - type: boolean - - name: enablePoison type: boolean @@ -154,12 +151,7 @@ jobs: set -x if [[ -z '${{ parameters.reuseBuildArtifactsFrom }}' ]]; then - customPrepArgs= - if [[ '${{ parameters.bootstrapPrep }}' == 'True' ]]; then - customPrepArgs='--bootstrap' - fi - - docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh ${customPrepArgs} + docker run --rm -v "$(sourcesPath):/vmr" -w /vmr ${{ parameters.container }} ./prep.sh else mkdir $(sourcesPath)/.dotnet previousSdkPath="$(sourcesPath)/packages/archive/dotnet-sdk-*.tar.gz" diff --git a/eng/pipelines/templates/jobs/vmr-synchronization.yml b/eng/pipelines/templates/jobs/vmr-synchronization.yml index 5e7f50860..8c7767ac7 100644 --- a/eng/pipelines/templates/jobs/vmr-synchronization.yml +++ b/eng/pipelines/templates/jobs/vmr-synchronization.yml @@ -25,8 +25,6 @@ jobs: - template: /eng/common/templates/variables/pool-providers.yml - name: vmrPath value: $(Agent.BuildDirectory)/vmr - - name: vmrBranchName - value: ${{ replace(parameters.vmrBranch, 'refs/heads/', '') }} - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - group: DotNetBot-GitHub - ${{ else }}: @@ -61,9 +59,9 @@ jobs: git config --global user.email 'dotnet-maestro[bot]@users.noreply.github.com' && git config --global user.name 'dotnet-maestro[bot]' git remote add dotnet 'https://$(BotAccount-dotnet-bot-repo-PAT)@github.com/dotnet/dotnet.git' git fetch dotnet - git branch $(vmrBranchName) - git branch --set-upstream-to=dotnet/$(vmrBranchName) $(vmrBranchName) || echo 'Branch $(vmrBranchName) not found in remote' - git push dotnet $(vmrBranchName) + git branch ${{ parameters.vmrBranch }} + git branch --set-upstream-to=dotnet/${{ parameters.vmrBranch }} ${{ parameters.vmrBranch }} || echo 'Branch ${{ parameters.vmrBranch }} not found in remote' + git push dotnet ${{ parameters.vmrBranch }} displayName: Push changes to dotnet/dotnet workingDirectory: $(vmrPath) - condition: and(succeeded(), or(eq(variables['vmrBranchName'], 'main'), startsWith(variables['vmrBranchName'], 'release/'))) + condition: and(succeeded(), or(eq(variables['vmrBranch'], 'main'), startsWith(variables['vmrBranch'], 'release/'))) diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml index 92a283030..515ab8dac 100644 --- a/eng/pipelines/templates/stages/vmr-build.yml +++ b/eng/pipelines/templates/stages/vmr-build.yml @@ -57,18 +57,24 @@ stages: - name: defaultPoolDemands value: ${{ parameters.poolInternalAmd64.demands }} + - ${{ if ne(parameters.vmrBranch, '') }}: + - name: VmrBranch + value: ${{ parameters.vmrBranch }} + - ${{ else }}: + - name: VmrBranch + value: ${{ replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), 'refs/pull/', '') }} + jobs: - template: ../jobs/vmr-build.yml parameters: buildName: CentOSStream8_Online isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.centOSStream8Container }} - bootstrapPrep: true # ✅ buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: true # ✅ @@ -81,13 +87,12 @@ stages: parameters: buildName: CentOSStream8_Offline isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.centOSStream8Container }} - bootstrapPrep: true # ✅ buildFromArchive: true # ✅ enablePoison: false # 🚫 excludeOmniSharpTests: true # ✅ @@ -99,13 +104,12 @@ stages: parameters: buildName: CentOSStream9_Offline isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.centOSStream9Container }} - bootstrapPrep: true # ✅ buildFromArchive: true # ✅ enablePoison: false # 🚫 excludeOmniSharpTests: false # 🚫 @@ -117,13 +121,12 @@ stages: parameters: buildName: Fedora36_Offline isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.fedora36Container }} - bootstrapPrep: true # 🚫 buildFromArchive: true # ✅ enablePoison: true # ✅ excludeOmniSharpTests: false # 🚫 @@ -135,13 +138,12 @@ stages: parameters: buildName: Ubuntu2004_Offline isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.ubuntu2004Container }} - bootstrapPrep: true # ✅ buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: false # 🚫 @@ -153,11 +155,10 @@ stages: parameters: buildName: Debian11_Offline isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: arm64 pool: ${{ parameters.poolInternalArm64 }} container: ${{ parameters.debian11Arm64Container }} - bootstrapPrep: true # ✅ buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: false # 🚫 @@ -169,13 +170,12 @@ stages: parameters: buildName: Fedora36_Offline_Using_Previous isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} - vmrBranch: ${{ parameters.vmrBranch }} + vmrBranch: ${{ variables.VmrBranch }} architecture: x64 pool: name: ${{ variables.defaultPoolName }} demands: ${{ variables.defaultPoolDemands }} container: ${{ parameters.fedora36Container }} - bootstrapPrep: true # 🚫 buildFromArchive: false # 🚫 enablePoison: false # 🚫 excludeOmniSharpTests: false # 🚫 diff --git a/eng/pipelines/templates/steps/vmr-prepare.yml b/eng/pipelines/templates/steps/vmr-prepare.yml index 510ba6054..08c40b646 100644 --- a/eng/pipelines/templates/steps/vmr-prepare.yml +++ b/eng/pipelines/templates/steps/vmr-prepare.yml @@ -30,8 +30,7 @@ steps: - ${{ if or(not(parameters.isBuiltFromVmr), eq(variables['System.TeamProject'], 'internal')) }}: - script: | - branch_name=$(echo '${{ parameters.vmrBranch }}' | sed -e "s#^/refs/heads/##") - git switch -c "$branch_name" + git switch -c ${{ parameters.vmrBranch }} displayName: Checkout ${{ parameters.vmrBranch }} workingDirectory: $(Agent.BuildDirectory)/vmr diff --git a/eng/pipelines/templates/steps/vmr-pull-updates.yml b/eng/pipelines/templates/steps/vmr-pull-updates.yml index 9abb6b272..a63605b16 100644 --- a/eng/pipelines/templates/steps/vmr-pull-updates.yml +++ b/eng/pipelines/templates/steps/vmr-pull-updates.yml @@ -23,9 +23,8 @@ steps: path: installer - script: | - branch_name=$(echo '${{ parameters.vmrBranch }}' | sed -e "s#^/refs/heads/##") - git checkout -B "$branch_name" - echo "##vso[task.setvariable variable=vmrBranch]$branch_name" + git checkout -B ${{ parameters.vmrBranch }} + echo "##vso[task.setvariable variable=vmrBranch]${{ parameters.vmrBranch }}" displayName: Prepare branch ${{ parameters.vmrBranch }} workingDirectory: ${{ parameters.vmrPath }} @@ -33,7 +32,7 @@ steps: ./eng/vmr-sync.sh --vmr ${{ parameters.vmrPath }} --tmp $(Agent.TempDirectory) - --branch $(echo '${{ parameters.vmrBranch }}' | sed -e "s#^/refs/heads/##") + --branch ${{ parameters.vmrBranch }} --target-ref ${{ parameters.targetRef }} displayName: Synchronize dotnet/dotnet workingDirectory: $(Agent.BuildDirectory)/installer diff --git a/src/SourceBuild/content/prep.sh b/src/SourceBuild/content/prep.sh index 646d60f50..8c03cadc0 100755 --- a/src/SourceBuild/content/prep.sh +++ b/src/SourceBuild/content/prep.sh @@ -5,14 +5,10 @@ IFS=$'\n\t' SCRIPT_ROOT="$(cd -P "$( dirname "$0" )" && pwd)" usage() { - echo "usage: $0 [options]" + echo "usage: $0" echo "" echo " Prepares the environment to be built by downloading Private.SourceBuilt.Artifacts.*.tar.gz and" echo " installing the version of dotnet referenced in global.json" - echo "options:" - echo " --bootstrap Build a bootstrap version of previously source-built packages archive." - echo " This modifies the downloaded version, replacing portable packages" - echo " with official ms-built packages restored from package feeds." echo "" } @@ -28,9 +24,6 @@ while :; do usage exit 0 ;; - --bootstrap) - buildBootstrap=true - ;; *) positional_args+=("$1") ;; @@ -95,23 +88,7 @@ function DownloadArchive { fi } -# Read the eng/Versions.props to get the archives to download and download them -if [ "$downloadArtifacts" == "true" ]; then - DownloadArchive "Artifacts" $artifactsBaseFileName "true" -fi - -if [ "$downloadPrebuilts" == "true" ]; then - DownloadArchive "Prebuilts" $prebuiltsBaseFileName "false" -fi - -# Check for the version of dotnet to install -if [ "$installDotnet" == "true" ]; then - echo " Installing dotnet..." - (source ./eng/common/tools.sh && InitializeDotNetCli true) -fi - -# Build bootstrap, if specified -if [ "$buildBootstrap" == "true" ]; then +function BootstrapArtifacts { DOTNET_SDK_PATH="$SCRIPT_ROOT/.dotnet" # Create working directory for running bootstrap project @@ -136,4 +113,20 @@ if [ "$buildBootstrap" == "true" ]; then # Remove working directory rm -rf $workingDir +} + +# Check for the version of dotnet to install +if [ "$installDotnet" == "true" ]; then + echo " Installing dotnet..." + (source ./eng/common/tools.sh && InitializeDotNetCli true) +fi + +# Read the eng/Versions.props to get the archives to download and download them +if [ "$downloadArtifacts" == "true" ]; then + DownloadArchive "Artifacts" $artifactsBaseFileName "true" + BootstrapArtifacts +fi + +if [ "$downloadPrebuilts" == "true" ]; then + DownloadArchive "Prebuilts" $prebuiltsBaseFileName "false" fi