Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion azure-pipelines-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@ stages:
steps:
- checkout: self
clean: true
- bash: |
set -euo pipefail
bash eng/pipelines/linux-disk-usage.sh "Before SDK installation"
bash eng/pipelines/linux-sdk-staging.sh snapshot
displayName: Measure Linux disk usage before SDK installation
# UseDotNet downloads and extracts into Agent.TempDirectory before copying into .dotnet.
- task: UseDotNet@2
displayName: Install .NET 8 SDK
inputs:
Expand All @@ -181,13 +187,25 @@ stages:
packageType: sdk
version: 10.x
installationPath: $(Build.SourcesDirectory)/.dotnet
- bash: bash eng/pipelines/linux-disk-usage.sh "After SDK installation"
displayName: Measure Linux disk usage after SDK installation
condition: succeededOrFailed()
- bash: |
set -euo pipefail
bash eng/pipelines/linux-sdk-staging.sh clean
bash eng/pipelines/linux-disk-usage.sh "After SDK staging cleanup"
displayName: Clean Linux SDK download and extraction staging
condition: succeededOrFailed()
- script: eng/common/build.sh
--configuration $(_BuildConfig)
--prepareMachine
--restore --build --test --pack --ci
name: Build
displayName: Build
condition: succeeded()
- bash: bash eng/pipelines/linux-disk-usage.sh "After build"
displayName: Measure Linux disk usage after build
condition: succeededOrFailed()

- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}:
- stage: integration
Expand All @@ -198,4 +216,3 @@ stages:
parameters:
buildConfig: Release
poolVmImage: windows-latest

14 changes: 14 additions & 0 deletions eng/pipelines/linux-disk-usage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail

echo "Disk usage: $1"
df -h / "$BUILD_SOURCESDIRECTORY" "$AGENT_TEMPDIRECTORY"
for path in \
"$BUILD_SOURCESDIRECTORY/.dotnet" \
"$BUILD_SOURCESDIRECTORY/artifacts" \
"${NUGET_PACKAGES:-$HOME/.nuget/packages}" \
"$AGENT_TEMPDIRECTORY"; do
if [[ -e "$path" ]]; then
du -sh "$path"
fi
done
45 changes: 45 additions & 0 deletions eng/pipelines/linux-sdk-staging.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env bash
set -euo pipefail

snapshot="$PIPELINE_WORKSPACE/scaffolding-sdk-temp-before.txt"

case "${1:-}" in
snapshot)
find "$AGENT_TEMPDIRECTORY" -mindepth 1 -maxdepth 1 -printf '%f\n' | sort > "$snapshot"
;;
clean)
if [[ ! -f "$snapshot" ]]; then
echo "Missing SDK staging snapshot: $snapshot" >&2
exit 1
fi

after="$(mktemp "$PIPELINE_WORKSPACE/scaffolding-sdk-temp-after.XXXXXX")"
new_entries="$(mktemp "$PIPELINE_WORKSPACE/scaffolding-sdk-temp-new.XXXXXX")"
trap 'rm -f -- "$after" "$new_entries"' EXIT
find "$AGENT_TEMPDIRECTORY" -mindepth 1 -maxdepth 1 -printf '%f\n' | sort > "$after"
comm -13 "$snapshot" "$after" > "$new_entries"

while IFS= read -r name; do
[[ "$name" =~ ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ ]] || continue
path="$AGENT_TEMPDIRECTORY/$name"
if [[ -d "$path" ]]; then
[[ -d "$path/sdk" && -d "$path/shared/Microsoft.NETCore.App" ]] || continue
sdk_dir="$(find "$path/sdk" -mindepth 1 -maxdepth 1 -type d \( -name '8.*' -o -name '9.*' -o -name '10.*' \) -print -quit)"
[[ -n "$sdk_dir" ]] || continue
elif [[ -f "$path" ]]; then
[[ "$(file -b --mime-type "$path")" == application/gzip ]] || continue
tar --force-local -tzf "$path" | awk '/(^|\/)sdk\/(8|9|10)\./ { found = 1 } END { exit !found }' || continue
else
continue
fi

du -sh -- "$path"
rm -rf -- "$path"
done < "$new_entries"
rm -f -- "$snapshot"
;;
*)
echo "Usage: $0 snapshot|clean" >&2
exit 1
;;
esac
Loading