From 7ffe461facf58aa0bd2a27b848d7a655679f9ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Moreno?= Date: Thu, 10 Apr 2025 17:24:29 +0200 Subject: [PATCH] inline linux snap (#246076) * inline linux snap * hm * no need for tar * hm * hm * debug * hm * :lipstick: --- build/azure-pipelines/linux/build-snap.sh | 23 +++++++ .../linux/product-build-linux.yml | 34 +++++++--- .../linux/snap-build-linux.yml | 64 ------------------- build/azure-pipelines/product-build.yml | 17 ----- 4 files changed, 49 insertions(+), 89 deletions(-) create mode 100755 build/azure-pipelines/linux/build-snap.sh delete mode 100644 build/azure-pipelines/linux/snap-build-linux.yml diff --git a/build/azure-pipelines/linux/build-snap.sh b/build/azure-pipelines/linux/build-snap.sh new file mode 100755 index 00000000000..144f41cae86 --- /dev/null +++ b/build/azure-pipelines/linux/build-snap.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +set -e + +# Get snapcraft version +snapcraft --version + +# Make sure we get latest packages +sudo apt-get update +sudo apt-get upgrade -y +sudo apt-get install -y curl apt-transport-https ca-certificates + +# Define variables +SNAP_ROOT="$(pwd)/.build/linux/snap/$VSCODE_ARCH" + +# Create snap package +BUILD_VERSION="$(date +%s)" +SNAP_FILENAME="code-$VSCODE_QUALITY-$VSCODE_ARCH-$BUILD_VERSION.snap" +SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME" +case $VSCODE_ARCH in + x64) SNAPCRAFT_TARGET_ARGS="" ;; + *) SNAPCRAFT_TARGET_ARGS="--target-arch $VSCODE_ARCH" ;; +esac +(cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft snap $SNAPCRAFT_TARGET_ARGS --output "$SNAP_PATH") diff --git a/build/azure-pipelines/linux/product-build-linux.yml b/build/azure-pipelines/linux/product-build-linux.yml index 6c2853ade3b..8dee6c3daa8 100644 --- a/build/azure-pipelines/linux/product-build-linux.yml +++ b/build/azure-pipelines/linux/product-build-linux.yml @@ -329,14 +329,30 @@ steps: echo "##vso[task.setvariable variable=RPM_PATH]$(ls .build/linux/rpm/*/*.rpm)" displayName: Build rpm package + - task: Docker@1 + inputs: + azureSubscriptionEndpoint: vscode + azureContainerRegistry: vscodehub.azurecr.io + command: login + displayName: Login to Container Registry + - script: | set -e npm run gulp "vscode-linux-$(VSCODE_ARCH)-prepare-snap" - ARCHIVE_PATH=".build/linux/snap-tarball/snap-$(VSCODE_ARCH).tar.gz" - mkdir -p $(dirname $ARCHIVE_PATH) - tar -czf $ARCHIVE_PATH -C .build/linux snap - echo "##vso[task.setvariable variable=SNAP_PATH]$ARCHIVE_PATH" - displayName: Prepare snap package + sudo -E docker run -e VSCODE_ARCH -e VSCODE_QUALITY -v $(pwd):/work -w /work vscodehub.azurecr.io/vscode-linux-build-agent:snapcraft-x64 /bin/bash -c "./build/azure-pipelines/linux/build-snap.sh" + + SNAP_ROOT="$(pwd)/.build/linux/snap/$(VSCODE_ARCH)" + SNAP_EXTRACTED_PATH=$(find $SNAP_ROOT -maxdepth 1 -type d -name 'code-*') + SNAP_PATH=$(find $SNAP_ROOT -maxdepth 1 -type f -name '*.snap') + + # SBOM tool doesn't like recursive symlinks + sudo find $SNAP_EXTRACTED_PATH -type l -delete + + echo "##vso[task.setvariable variable=SNAP_EXTRACTED_PATH]$SNAP_EXTRACTED_PATH" + echo "##vso[task.setvariable variable=SNAP_PATH]$SNAP_PATH" + env: + VSCODE_ARCH: $(VSCODE_ARCH) + displayName: Build snap package - task: UseDotNet@2 inputs: @@ -441,7 +457,9 @@ steps: - task: 1ES.PublishPipelineArtifact@1 inputs: targetPath: $(SNAP_PATH) - artifactName: $(ARTIFACT_PREFIX)snap-$(VSCODE_ARCH) - sbomEnabled: false + artifactName: vscode_client_linux_$(VSCODE_ARCH)_snap + sbomBuildDropPath: $(SNAP_EXTRACTED_PATH) + sbomPackageName: "VS Code Linux $(VSCODE_ARCH) SNAP" + sbomPackageVersion: $(Build.SourceVersion) condition: and(succeededOrFailed(), ne(variables['SNAP_PATH'], '')) - displayName: Publish snap pre-package + displayName: Publish snap package diff --git a/build/azure-pipelines/linux/snap-build-linux.yml b/build/azure-pipelines/linux/snap-build-linux.yml deleted file mode 100644 index 4d0d26411c3..00000000000 --- a/build/azure-pipelines/linux/snap-build-linux.yml +++ /dev/null @@ -1,64 +0,0 @@ -steps: - - task: NodeTool@0 - inputs: - versionSource: fromFile - versionFilePath: .nvmrc - nodejsMirror: https://github.com/joaomoreno/node-mirror/releases/download - - - task: DownloadPipelineArtifact@2 - displayName: "Download Pipeline Artifact" - inputs: - artifact: snap-$(VSCODE_ARCH) - path: .build/linux/snap-tarball - - - script: | - set -e - - # Get snapcraft version - snapcraft --version - - # Make sure we get latest packages - sudo apt-get update - sudo apt-get upgrade -y - sudo apt-get install -y curl apt-transport-https ca-certificates - - # Define variables - SNAP_ROOT="$(pwd)/.build/linux/snap/$(VSCODE_ARCH)" - - # Unpack snap tarball artifact, in order to preserve file perms - (cd .build/linux && tar -xzf snap-tarball/snap-$(VSCODE_ARCH).tar.gz) - - # Create snap package - BUILD_VERSION="$(date +%s)" - SNAP_FILENAME="code-$VSCODE_QUALITY-$(VSCODE_ARCH)-$BUILD_VERSION.snap" - SNAP_PATH="$SNAP_ROOT/$SNAP_FILENAME" - case $(VSCODE_ARCH) in - x64) SNAPCRAFT_TARGET_ARGS="" ;; - *) SNAPCRAFT_TARGET_ARGS="--target-arch $(VSCODE_ARCH)" ;; - esac - (cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft snap $SNAPCRAFT_TARGET_ARGS --output "$SNAP_PATH") - displayName: Prepare for publish - - - script: | - set -e - SNAP_ROOT="$(pwd)/.build/linux/snap/$(VSCODE_ARCH)" - SNAP_EXTRACTED_PATH=$(find $SNAP_ROOT -maxdepth 1 -type d -name 'code-*') - SNAP_PATH=$(find $SNAP_ROOT -maxdepth 1 -type f -name '*.snap') - - # SBOM tool doesn't like recursive symlinks - sudo find $SNAP_EXTRACTED_PATH -type l -delete - - echo "##vso[task.setvariable variable=SNAP_EXTRACTED_PATH]$SNAP_EXTRACTED_PATH" - echo "##vso[task.setvariable variable=SNAP_PATH]$SNAP_PATH" - target: - container: host - displayName: Find host snap path & prepare for SBOM - - - task: 1ES.PublishPipelineArtifact@1 - inputs: - targetPath: $(SNAP_PATH) - artifactName: vscode_client_linux_$(VSCODE_ARCH)_snap - sbomBuildDropPath: $(SNAP_EXTRACTED_PATH) - sbomPackageName: "VS Code Linux $(VSCODE_ARCH) SNAP" - sbomPackageVersion: $(Build.SourceVersion) - displayName: Publish snap package diff --git a/build/azure-pipelines/product-build.yml b/build/azure-pipelines/product-build.yml index f0e51ca4d96..f50ceb8d842 100644 --- a/build/azure-pipelines/product-build.yml +++ b/build/azure-pipelines/product-build.yml @@ -185,8 +185,6 @@ extends: sourceAnalysisPool: 1es-windows-2022-x64 createAdoIssuesForJustificationsForDisablement: false containers: - snapcraft: - image: vscodehub.azurecr.io/vscode-linux-build-agent:snapcraft-x64 ubuntu-2004-arm64: image: onebranch.azurecr.io/linux/ubuntu-2004-arm64:latest stages: @@ -499,21 +497,6 @@ extends: VSCODE_RUN_BROWSER_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }} VSCODE_RUN_REMOTE_TESTS: ${{ eq(parameters.VSCODE_STEP_ON_IT, false) }} - - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX, true)) }}: - - job: LinuxSnap - dependsOn: - - Linuxx64 - container: snapcraft - variables: - VSCODE_ARCH: x64 - templateContext: - authenticatedContainerRegistries: - - registry: onebranch.azurecr.io - tenant: AME - identity: 1ESPipelineIdentity - steps: - - template: build/azure-pipelines/linux/snap-build-linux.yml@self - - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_LINUX_ARMHF, true)) }}: - job: LinuxArmhf variables: