From 4b734cf8919de62d4f48533b02171d17157760c0 Mon Sep 17 00:00:00 2001 From: Sarath chandra Bussa Date: Mon, 16 Mar 2026 12:50:51 +0530 Subject: [PATCH 1/3] Remove orphaned vsts/ pipelines, dead build scripts, and stub workflow Audit findings: - vsts/ folder: No ADO pipeline definitions point to GitHub Oryx's vsts/. All active ADO pipelines run against the internal AAPT-Antares-Oryx repo with OneBranch .pipelines/ YAML files. The entire vsts/ folder (66 files) is orphaned legacy code from the pre-OneBranch era. - build/buildBuildImageBases.sh: Zero pipeline or workflow callers. Only referenced in (now-updated) documentation. - build/buildBuildpacksImages.sh: Zero pipeline or workflow callers. Note: the buildpack CLI code in src/ and images/pack-builder/ are kept as they are part of the active product. - .github/workflows/monitor-versions.yaml: Stub 'Hello World' placeholder that was never implemented. The corresponding ADO pipeline 'Monitor-versions.yml' is also disabled (last run Oct 2024). Fixes: - Created build/generateConstants.sh which is referenced by the active automationTemplate.yaml GH Actions workflow but was missing from the repo. This script invokes SharedCodeGenerator to regenerate C#, Shell, and Go constant files from build/constants.yaml. - Updated Oryx.sln to remove vsts solution folder references. - Updated doc/architecture.md, doc/base_images.md, build/Readme.md to remove broken links and outdated vsts references. - Fixed SharedCodeGenerator README path reference. ADO pipeline status (AAPT-Antares-Oryx repo): Active: Buddy, Official, Publish-Binaries-Buddy, Publish-To-Prod, Publish-To-Stage, OryxTests Disabled: Antares-Oryx-Release-Binaries, Monitor-versions.yml, PRValidator (in \delete folder) --- .github/workflows/monitor-versions.yaml | 32 -- Oryx.sln | 25 +- build/Readme.md | 11 +- build/buildBuildImageBases.sh | 62 ---- build/buildBuildpacksImages.sh | 45 --- build/generateConstants.sh | 19 ++ build/tools/SharedCodeGenerator/README.md | 2 +- doc/architecture.md | 6 +- doc/base_images.md | 3 +- vsts/Readme.md | 20 -- vsts/nugetpackages.signproj | 19 -- .../pipelines/PlatformBinaries/dotnetcore.yml | 77 ----- vsts/pipelines/PlatformBinaries/golang.yml | 90 ------ vsts/pipelines/PlatformBinaries/java.yml | 142 --------- vsts/pipelines/PlatformBinaries/node.yml | 103 ------- vsts/pipelines/PlatformBinaries/php.yml | 78 ----- vsts/pipelines/PlatformBinaries/python.yml | 103 ------- vsts/pipelines/PlatformBinaries/ruby.yml | 90 ------ vsts/pipelines/agentCleanUp.yml | 25 -- vsts/pipelines/baseImages/dotnetcore.yml | 54 ---- vsts/pipelines/baseImages/node.yml | 52 ---- vsts/pipelines/baseImages/php-fpm.yml | 54 ---- vsts/pipelines/baseImages/php.yml | 54 ---- vsts/pipelines/baseImages/python.yml | 44 --- vsts/pipelines/ci-detector.yml | 115 ------- vsts/pipelines/ci.yml | 285 ------------------ vsts/pipelines/ciDebug.yml | 196 ------------ vsts/pipelines/copyAllBlobsToProd.yml | 54 ---- .../copySdksFromProdToStorageAccount.yml | 62 ---- vsts/pipelines/nightly.yml | 235 --------------- vsts/pipelines/publishSdkToProd.yml | 75 ----- .../templates/_agentCleanUpJobTemplate.yml | 13 - vsts/pipelines/templates/_buildTemplate.yml | 274 ----------------- .../templates/_buildTemplateDetector.yml | 52 ---- vsts/pipelines/templates/_builderTemplate.yml | 58 ---- .../templates/_buildimageBasesJobTemplate.yml | 71 ----- .../templates/_cleanImageCacheTemplate.yml | 18 -- .../templates/_copyImgFromDevToTest.yml | 246 --------------- .../templates/_integrationJobTemplate.yml | 25 -- .../_platformBinariesReleaseTemplate.yml | 30 -- .../templates/_platformBinariesTemplate.yml | 26 -- .../_releaseBaseImagesJobTemplate.yml | 61 ---- .../_releaseBaseImagesStepTemplate.yml | 69 ----- .../templates/_releaseJobTemplate.yml | 69 ----- .../templates/_releaseStepTemplate.yml | 150 --------- vsts/pipelines/templates/_securityChecks.yml | 84 ------ vsts/pipelines/templates/_setReleaseTag.yml | 19 -- vsts/pipelines/templates/_signBinary.yml | 111 ------- .../templates/_signBinaryDetector.yml | 71 ----- .../_dotnetcoreIntegrationJobTemplate.yml | 52 ---- .../_golangIntegrationJobTemplate.yml | 51 ---- .../_nodeIntegrationJobTemplate.yml | 50 --- .../_phpIntegrationJobTemplate.yml | 60 ---- .../_pythonIntegrationJobTemplate.yml | 58 ---- vsts/pipelines/testACRImgUpload.yml | 28 -- vsts/pipelines/validation-detector.yml | 22 -- vsts/pipelines/validation.yml | 171 ----------- vsts/scripts/cleanDevAcr.sh | 40 --- vsts/scripts/cleanDocker.sh | 93 ------ .../copyAllBlobsToProdStorageAccount.sh | 110 ------- .../copySdksFromProdToStorageAccount.sh | 121 -------- vsts/scripts/createReleaseTag.sh | 39 --- vsts/scripts/generateReleaseNotes.sh | 42 --- vsts/scripts/publishFilesToAzureStorage.sh | 85 ------ ...blishSdksFromSourceToDestStorageAccount.sh | 162 ---------- ...lishSdksFromStagingToProdStorageAccount.sh | 160 ---------- vsts/scripts/pullAndTag.sh | 170 ----------- vsts/scripts/pushBaseImagesToRegistry.sh | 42 --- vsts/scripts/pushImagesToRegistry.sh | 23 -- vsts/scripts/removeDockerArtifacts.sh | 31 -- vsts/scripts/tagBaseImagesForRelease.sh | 112 ------- vsts/scripts/tagBuildImagesForRelease.sh | 59 ---- vsts/scripts/tagBuilderImagesForRelease.sh | 56 ---- vsts/scripts/tagBuildpacksImagesForRelease.sh | 41 --- vsts/scripts/tagCliImagesForRelease.sh | 79 ----- vsts/scripts/tagRunTimeImagesForRelease.sh | 95 ------ 76 files changed, 32 insertions(+), 5699 deletions(-) delete mode 100644 .github/workflows/monitor-versions.yaml delete mode 100755 build/buildBuildImageBases.sh delete mode 100755 build/buildBuildpacksImages.sh create mode 100644 build/generateConstants.sh delete mode 100644 vsts/Readme.md delete mode 100644 vsts/nugetpackages.signproj delete mode 100644 vsts/pipelines/PlatformBinaries/dotnetcore.yml delete mode 100644 vsts/pipelines/PlatformBinaries/golang.yml delete mode 100644 vsts/pipelines/PlatformBinaries/java.yml delete mode 100644 vsts/pipelines/PlatformBinaries/node.yml delete mode 100644 vsts/pipelines/PlatformBinaries/php.yml delete mode 100644 vsts/pipelines/PlatformBinaries/python.yml delete mode 100644 vsts/pipelines/PlatformBinaries/ruby.yml delete mode 100644 vsts/pipelines/agentCleanUp.yml delete mode 100644 vsts/pipelines/baseImages/dotnetcore.yml delete mode 100644 vsts/pipelines/baseImages/node.yml delete mode 100644 vsts/pipelines/baseImages/php-fpm.yml delete mode 100644 vsts/pipelines/baseImages/php.yml delete mode 100644 vsts/pipelines/baseImages/python.yml delete mode 100644 vsts/pipelines/ci-detector.yml delete mode 100644 vsts/pipelines/ci.yml delete mode 100644 vsts/pipelines/ciDebug.yml delete mode 100644 vsts/pipelines/copyAllBlobsToProd.yml delete mode 100644 vsts/pipelines/copySdksFromProdToStorageAccount.yml delete mode 100644 vsts/pipelines/nightly.yml delete mode 100644 vsts/pipelines/publishSdkToProd.yml delete mode 100644 vsts/pipelines/templates/_agentCleanUpJobTemplate.yml delete mode 100644 vsts/pipelines/templates/_buildTemplate.yml delete mode 100644 vsts/pipelines/templates/_buildTemplateDetector.yml delete mode 100644 vsts/pipelines/templates/_builderTemplate.yml delete mode 100644 vsts/pipelines/templates/_buildimageBasesJobTemplate.yml delete mode 100644 vsts/pipelines/templates/_cleanImageCacheTemplate.yml delete mode 100644 vsts/pipelines/templates/_copyImgFromDevToTest.yml delete mode 100644 vsts/pipelines/templates/_integrationJobTemplate.yml delete mode 100644 vsts/pipelines/templates/_platformBinariesReleaseTemplate.yml delete mode 100644 vsts/pipelines/templates/_platformBinariesTemplate.yml delete mode 100644 vsts/pipelines/templates/_releaseBaseImagesJobTemplate.yml delete mode 100644 vsts/pipelines/templates/_releaseBaseImagesStepTemplate.yml delete mode 100644 vsts/pipelines/templates/_releaseJobTemplate.yml delete mode 100644 vsts/pipelines/templates/_releaseStepTemplate.yml delete mode 100644 vsts/pipelines/templates/_securityChecks.yml delete mode 100644 vsts/pipelines/templates/_setReleaseTag.yml delete mode 100644 vsts/pipelines/templates/_signBinary.yml delete mode 100644 vsts/pipelines/templates/_signBinaryDetector.yml delete mode 100644 vsts/pipelines/templates/integrationTests/_dotnetcoreIntegrationJobTemplate.yml delete mode 100644 vsts/pipelines/templates/integrationTests/_golangIntegrationJobTemplate.yml delete mode 100644 vsts/pipelines/templates/integrationTests/_nodeIntegrationJobTemplate.yml delete mode 100644 vsts/pipelines/templates/integrationTests/_phpIntegrationJobTemplate.yml delete mode 100644 vsts/pipelines/templates/integrationTests/_pythonIntegrationJobTemplate.yml delete mode 100644 vsts/pipelines/testACRImgUpload.yml delete mode 100644 vsts/pipelines/validation-detector.yml delete mode 100644 vsts/pipelines/validation.yml delete mode 100755 vsts/scripts/cleanDevAcr.sh delete mode 100644 vsts/scripts/cleanDocker.sh delete mode 100644 vsts/scripts/copyAllBlobsToProdStorageAccount.sh delete mode 100644 vsts/scripts/copySdksFromProdToStorageAccount.sh delete mode 100755 vsts/scripts/createReleaseTag.sh delete mode 100644 vsts/scripts/generateReleaseNotes.sh delete mode 100755 vsts/scripts/publishFilesToAzureStorage.sh delete mode 100644 vsts/scripts/publishSdksFromSourceToDestStorageAccount.sh delete mode 100644 vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh delete mode 100644 vsts/scripts/pullAndTag.sh delete mode 100755 vsts/scripts/pushBaseImagesToRegistry.sh delete mode 100755 vsts/scripts/pushImagesToRegistry.sh delete mode 100644 vsts/scripts/removeDockerArtifacts.sh delete mode 100644 vsts/scripts/tagBaseImagesForRelease.sh delete mode 100644 vsts/scripts/tagBuildImagesForRelease.sh delete mode 100644 vsts/scripts/tagBuilderImagesForRelease.sh delete mode 100644 vsts/scripts/tagBuildpacksImagesForRelease.sh delete mode 100644 vsts/scripts/tagCliImagesForRelease.sh delete mode 100644 vsts/scripts/tagRunTimeImagesForRelease.sh diff --git a/.github/workflows/monitor-versions.yaml b/.github/workflows/monitor-versions.yaml deleted file mode 100644 index 11b2e3558a..0000000000 --- a/.github/workflows/monitor-versions.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# This is a basic workflow that is manually triggered - -name: Manual workflow - -# Controls when the action will run. Workflow runs when manually triggered using the UI -# or API. -on: - workflow_dispatch: - # Inputs the workflow accepts. - inputs: - name: - # Friendly description to be shown in the UI instead of 'name' - description: 'Person to greet' - # Default value if no value is explicitly provided - default: 'World' - # Input has to be provided for the workflow to run - required: true - # The data type of the input - type: string - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "greet" - greet: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Runs a single command using the runners shell - - name: Send greeting - run: echo "Hello ${{ inputs.name }}" diff --git a/Oryx.sln b/Oryx.sln index 3b26065982..44ac1ceab6 100644 --- a/Oryx.sln +++ b/Oryx.sln @@ -23,9 +23,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oryx.BuildImage.Tests", "te EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{0FEBE7DD-10C0-4650-89E4-69DDB0930C56}" ProjectSection(SolutionItems) = preProject - build\buildBuildImageBases.sh = build\buildBuildImageBases.sh build\buildBuildImages.sh = build\buildBuildImages.sh - build\buildBuildpacksImages.sh = build\buildBuildpacksImages.sh build\buildRunTimeImageBases.sh = build\buildRunTimeImageBases.sh build\buildRunTimeImages.sh = build\buildRunTimeImages.sh build\buildSln.sh = build\buildSln.sh @@ -52,26 +50,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oryx.Tests.Common", "tests\ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oryx.RuntimeImage.Tests", "tests\Oryx.RuntimeImage.Tests\Oryx.RuntimeImage.Tests.csproj", "{2A6CBF09-2040-4FE2-BD60-0BB43B43E2E9}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vsts", "vsts", "{D7D9E386-B13E-45FA-8AE6-8FC20CB84974}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pipelines", "pipelines", "{BDB3B191-6F72-4EC8-BD74-D2DEEFDAC99D}" - ProjectSection(SolutionItems) = preProject - vsts\pipelines\buildImageBases.yml = vsts\pipelines\buildImageBases.yml - vsts\pipelines\ci.yml = vsts\pipelines\ci.yml - vsts\pipelines\nightly.yml = vsts\pipelines\nightly.yml - vsts\pipelines\validation.yml = vsts\pipelines\validation.yml - EndProjectSection -EndProject + Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildScriptGenerator.Tests", "tests\BuildScriptGenerator.Tests\BuildScriptGenerator.Tests.csproj", "{8D7BC3E8-37BE-4E59-8694-1364E314285A}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BuildScriptGeneratorCli.Tests", "tests\BuildScriptGeneratorCli.Tests\BuildScriptGeneratorCli.Tests.csproj", "{16C061C3-3F6E-43C2-A9CC-3E905322E443}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{4885C6A7-0C9A-406C-89E9-D06A3A03C52D}" - ProjectSection(SolutionItems) = preProject - vsts\scripts\cleanDocker.sh = vsts\scripts\cleanDocker.sh - vsts\scripts\removeDockerArtifacts.sh = vsts\scripts\removeDockerArtifacts.sh - EndProjectSection -EndProject + Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CommonFiles", "CommonFiles", "{7475604B-12AC-4765-9259-505BF742FDEF}" ProjectSection(SolutionItems) = preProject src\CommonFiles\AssemblyVersion.proj = src\CommonFiles\AssemblyVersion.proj @@ -196,11 +180,10 @@ Global {D6446227-8F24-4EDC-B170-0A732C071D03} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} {7F1935EF-4F1D-4A08-A1FD-AF2508ADFB53} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} {2A6CBF09-2040-4FE2-BD60-0BB43B43E2E9} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} - {D7D9E386-B13E-45FA-8AE6-8FC20CB84974} = {45542CEB-0A3B-42DF-95AE-D13A673D3183} - {BDB3B191-6F72-4EC8-BD74-D2DEEFDAC99D} = {D7D9E386-B13E-45FA-8AE6-8FC20CB84974} + {8D7BC3E8-37BE-4E59-8694-1364E314285A} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} {16C061C3-3F6E-43C2-A9CC-3E905322E443} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} - {4885C6A7-0C9A-406C-89E9-D06A3A03C52D} = {D7D9E386-B13E-45FA-8AE6-8FC20CB84974} + {7475604B-12AC-4765-9259-505BF742FDEF} = {C0150C21-3EC8-4973-B57C-26BC27A4ED57} {A563B2F8-26B1-4114-AE1C-C9E078BC7754} = {7515BF2B-C485-43A0-AB2F-DC761B6AB151} {A7605A5F-9C7E-4BAF-BF13-949467DA9351} = {2AA826A1-5647-46B2-9885-20E89050653F} diff --git a/build/Readme.md b/build/Readme.md index 35a457a413..e9cd6923f8 100644 --- a/build/Readme.md +++ b/build/Readme.md @@ -1,14 +1,13 @@ ## Why so many scripts? -The scripts in this folder are broken down into different layers to enable a good development as a well as CI experience. -So if a user wants to just build and test build images, they can do so by running its respective script. -These scripts are actually called in VSTS pipelines too (Check the `vsts/pipelines/templates/_buildTemplate.yml` file). +The scripts in this folder are broken down into different layers to enable a good development as well as CI experience. +If a user wants to just build and test build images, they can do so by running the respective script. +These scripts are called from GitHub Actions workflows (see `.github/workflows/`) and the OneBranch pipelines in ADO. ## Artifact files Building build and runtime images can conceptually be viewed as building a .NET repo's 'src' folder where after successfully -building the output is written to a artifacts folder. In a similar way, after building build/runtime images, we write out +building the output is written to an artifacts folder. In a similar way, after building build/runtime images, we write out the names of the images that were built to files '/artifacts/images/build-images.txt' and '/artifacts/images/runtime-images.txt'. -This is the same experience if the images were built locally on a dev machine or a CI agent. The idea is that in case of CI agent, -when a VSTS task needs to push images to a docker registry, it can just consume these artifact files to figure out which images to push. +This is the same experience if the images were built locally on a dev machine or a CI agent. ## Untagging images Taggig a docker image is actually tagging or pinning docker layers. Since a CI agent can go through several builds a day we would be diff --git a/build/buildBuildImageBases.sh b/build/buildBuildImageBases.sh deleted file mode 100755 index ff176fb5fe..0000000000 --- a/build/buildBuildImageBases.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- -# -# This script builds some base images that are needed for the build image: -# - Python binaries -# - PHP binaries -# - -set -ex - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) - -# Load all variables -source $REPO_DIR/build/__variables.sh - -ImageDebianFlavor="$2" - -# Example: dontetcore, python -IMAGE_DIR_TO_BUILD="$1" -UNIQUE_TAG="" -if [ ! -z "$BUILD_NUMBER" ]; then - UNIQUE_TAG="-$BUILD_NUMBER" -fi - -BUILD_IMAGES_DIR="$REPO_DIR/images/build" -# NOTE: We create a unique artifacts file per image directory here since they are going to be built in parallel on CI -ARTIFACTS_FILE="$BASE_IMAGES_ARTIFACTS_FILE_PREFIX/$IMAGE_DIR_TO_BUILD-buildimage-bases-$ImageDebianFlavor.txt" - -# Clean artifacts -mkdir -p `dirname $ARTIFACTS_FILE` -> $ARTIFACTS_FILE - -function buildImages() { - local dirName="$1" - local dockerFiles=$(find "$BUILD_IMAGES_DIR/$dirName" -type f -name "Dockerfile") - for dockerFile in $dockerFiles; do - versionDir=$(dirname "${dockerFile}") - versionDirName=$(basename $versionDir) - imageName="$BASE_IMAGES_PUBLIC_REPO:$dirName-build-$versionDirName$UNIQUE_TAG" - docker build -f $dockerFile -t "$imageName" $REPO_DIR - echo "$imageName" >> $ARTIFACTS_FILE - done -} - -case $IMAGE_DIR_TO_BUILD in - 'python') - echo "Building Python base images" - echo - - docker build -f $BUILD_IMAGES_DIR/python/prereqs/Dockerfile -t "oryxdevmcr.azurecr.io/private/oryx/python-build-prereqs" $REPO_DIR - buildImages "python" - ;; - *) echo "Unknown image directory";; -esac - -echo -echo "List of images built (from '$ARTIFACTS_FILE'):" -cat $ARTIFACTS_FILE -echo diff --git a/build/buildBuildpacksImages.sh b/build/buildBuildpacksImages.sh deleted file mode 100755 index f08b21020f..0000000000 --- a/build/buildBuildpacksImages.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -ex - -if [ -z $REPO_DIR ]; then - declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) -fi - -if [ -z $_LOADED_COMMON_VARIABLES ]; then - source $REPO_DIR/build/__variables.sh -fi - -if [ -n "$BUILD_BUILDIMAGES_USING_NOCACHE" ]; then - echo - echo "Building buildpack runner image with NO cache..." - noCacheFlag='--no-cache' -else - echo - echo "Building buildpack runner image..." -fi - -labels="--label com.microsoft.oryx.git-commit=$GIT_COMMIT" -labels="$labels --label com.microsoft.oryx.build-number=$BUILD_NUMBER" -labels="$labels --label com.microsoft.oryx.release-tag-name=$RELEASE_TAG_NAME" -labels="$labels --label pack-tool-version=$PACK_TOOL_VERSION" - -# Build an image that runs `pack` -echo "-> Building pack runner image: $ACR_PACK_IMAGE_REPO" -echo -cd "$BUILD_IMAGES_BUILD_CONTEXT_DIR" -docker build -f "$PACK_IMAGE_DOCKERFILE" $noCacheFlag \ - $labels \ - -t $ACR_PACK_IMAGE_REPO:latest \ - . - -if [ "$AGENT_BUILD" == "true" ]; then - BUILD_SUFFIX="$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" - - docker tag "$ACR_PACK_IMAGE_REPO:latest" "$ACR_PACK_IMAGE_REPO:$BUILD_SUFFIX" - echo "$ACR_PACK_IMAGE_REPO:$BUILD_SUFFIX" >> $ACR_BUILD_IMAGES_ARTIFACTS_FILE -fi diff --git a/build/generateConstants.sh b/build/generateConstants.sh new file mode 100644 index 0000000000..ab06fd1044 --- /dev/null +++ b/build/generateConstants.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# -------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT license. +# -------------------------------------------------------------------------------------------- + +# Regenerates shared constant files (C#, Shell, Go) from build/constants.yaml +# using the SharedCodeGenerator tool. + +set -e + +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +echo "Generating constants from ${REPO_DIR}/build/constants.yaml ..." +dotnet run --project "${REPO_DIR}/build/tools/SharedCodeGenerator/SharedCodeGenerator.csproj" \ + "${REPO_DIR}/build/constants.yaml" \ + "${REPO_DIR}" + +echo "Constants generated successfully." diff --git a/build/tools/SharedCodeGenerator/README.md b/build/tools/SharedCodeGenerator/README.md index 231b0ed638..4fc1d511a0 100644 --- a/build/tools/SharedCodeGenerator/README.md +++ b/build/tools/SharedCodeGenerator/README.md @@ -10,4 +10,4 @@ For example configuration, read `build/build-constants.yaml`. ## Running the tool -The easiest way to run this tool and regenerate the output files it by running the script `/build/generate-constants.sh`. \ No newline at end of file +The easiest way to run this tool and regenerate the output files it by running the script `/build/generateConstants.sh`. \ No newline at end of file diff --git a/doc/architecture.md b/doc/architecture.md index 25c72e785d..67c1acef30 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -30,8 +30,7 @@ or have a TypeScript frontend for their Python app. You can take a look at its [Dockerfile](../images/build/Dockerfiles/Dockerfile) to better understand its contents. Note that some layers of this build image come from yet another set of images, which we build independently for -modularization and for faster build times. You can see what are those images and how they are built in their -[build script](../build/buildBuildImageBases.sh). +modularization and for faster build times. To help the user select which version they want for each platform, they can use the `benv` script pre-installed in the build image. For example, `source benv python=3.6 node=8` will make Python 3.6 and the latest supported @@ -203,10 +202,9 @@ The *Run* images are published to MCR (mcr.microsoft.com/oryx/<platform>). * `build`: scripts for building the script generator and build and runtime images * `images`: Dockerfiles for the build and runtime images -* `platforms`:platform SDK versions to be built +* `platforms`: platform SDK versions to be built * `src`: source code for the build and startup script generators * `tests`: tests. -* `vsts`: CI/CD configuration. ## Prerequisites diff --git a/doc/base_images.md b/doc/base_images.md index 7075438386..2e76f64d1b 100644 --- a/doc/base_images.md +++ b/doc/base_images.md @@ -3,8 +3,7 @@ The Oryx [build image][] layers on Docker's [`buildpack-deps`][library/buildpack-deps:stable] image, itself layered on Docker's basic [debian][library/debian:stable] image. -The build image copies some required platforms from separate intermediate images, -which can be built locally using the [`buildBuildImageBases.sh`](../build/buildBuildImageBases.sh) script. +The build image copies some required platforms from separate intermediate images. [build image]: https://hub.docker.com/_/microsoft-oryx-images [library/buildpack-deps:stable]: https://hub.docker.com/_/buildpack-deps diff --git a/vsts/Readme.md b/vsts/Readme.md deleted file mode 100644 index b2361a804d..0000000000 --- a/vsts/Readme.md +++ /dev/null @@ -1,20 +0,0 @@ -The content in this folder is specific to any VSTS related stuff. - -## Pipelines -They represent the build pipelines for this repository. -- 'validation.yml': - This is used for validating branches for which pull requests were sent. - In this pipeline both build and runtime images are built and tested but they are NOT pushed. - -- 'nightly.yml': - Pipeline which builds and tests build and runtime images every night. - -- 'ci.yml': - Pipeline which builds, tests and pushes build images and runtime images. - This pipeline, by default, gets triggered for check-ins into 'main' branch. - Also it has a scheduled build for releasing signed binaries to images on Saturday mornings. -### PlatformBinaries -The pipelines for each platform to build and publish platform binaries to Azure Blob Storage. - -## Scripts -This folder contains scripts that are used in VSTS pipelines. diff --git a/vsts/nugetpackages.signproj b/vsts/nugetpackages.signproj deleted file mode 100644 index 2a5a311122..0000000000 --- a/vsts/nugetpackages.signproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - $(MSBuildThisFileDirectory).. - $(RepoRoot)\artifacts\packages - $(RepoRoot)\build\FinalPublicKey.snk - - - - - - - NuGet - - - - \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/dotnetcore.yml b/vsts/pipelines/PlatformBinaries/dotnetcore.yml deleted file mode 100644 index 793826cd1c..0000000000 --- a/vsts/pipelines/PlatformBinaries/dotnetcore.yml +++ /dev/null @@ -1,77 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: DotNetCore_Bookworm - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'dotnet' - debianFlavor: 'bookworm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: DotNetCore_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'dotnet' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: DotNetCore_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'dotnet' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/dotnet - - vsts/PlatformBinaries/dotnetcore.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/golang.yml b/vsts/pipelines/PlatformBinaries/golang.yml deleted file mode 100644 index 4fc974d8a4..0000000000 --- a/vsts/pipelines/PlatformBinaries/golang.yml +++ /dev/null @@ -1,90 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Golang_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'golang' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Golang_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'golang' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Golang_Stretch - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'golang' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Golang_Ubuntu - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'golang' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/golang - - vsts/PlatformBinaries/golang.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/java.yml b/vsts/pipelines/PlatformBinaries/java.yml deleted file mode 100644 index 01c262e715..0000000000 --- a/vsts/pipelines/PlatformBinaries/java.yml +++ /dev/null @@ -1,142 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Java_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'java' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Java_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'java' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Java_Stretch - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'java' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Java_Ubuntu - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'java' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Maven_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'maven' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Maven_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'maven' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Maven_Stretch - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'maven' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Maven_Ubuntu - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'maven' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/java - - vsts/PlatformBinaries/java.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/node.yml b/vsts/pipelines/PlatformBinaries/node.yml deleted file mode 100644 index 906b086d40..0000000000 --- a/vsts/pipelines/PlatformBinaries/node.yml +++ /dev/null @@ -1,103 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Node_Bookworm - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'nodejs' - debianFlavor: 'bookworm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Node_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'nodejs' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Node_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'nodejs' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Node_Stretch - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'nodejs' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Node_Ubuntu - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'nodejs' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/nodejs - - vsts/PlatformBinaries/node.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/php.yml b/vsts/pipelines/PlatformBinaries/php.yml deleted file mode 100644 index 27194d8526..0000000000 --- a/vsts/pipelines/PlatformBinaries/php.yml +++ /dev/null @@ -1,78 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Php_Bookworm_SDK - timeoutInMinutes: 1440 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'php' - debianFlavor: 'bookworm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Php_Bullseye_SDK - timeoutInMinutes: 1440 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'php' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - - job: Php_Buster_SDK - timeoutInMinutes: 1440 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'php' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/php - - vsts/PlatformBinaries/php.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/python.yml b/vsts/pipelines/PlatformBinaries/python.yml deleted file mode 100644 index 48378035cf..0000000000 --- a/vsts/pipelines/PlatformBinaries/python.yml +++ /dev/null @@ -1,103 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Python_Bookworm_SDK - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'python' - debianFlavor: 'bookworm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Python_Bullseye_SDK - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'python' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Python_Buster_SDK - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'python' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Python_Stretch_SDK - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'python' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Python_Ubuntu_SDK - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'python' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/python - - vsts/PlatformBinaries/python.yml \ No newline at end of file diff --git a/vsts/pipelines/PlatformBinaries/ruby.yml b/vsts/pipelines/PlatformBinaries/ruby.yml deleted file mode 100644 index 8405f9d8bb..0000000000 --- a/vsts/pipelines/PlatformBinaries/ruby.yml +++ /dev/null @@ -1,90 +0,0 @@ -variables: - - group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksstaging - -stages: -- stage: Build - jobs: - - job: Ruby_Bullseye - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'ruby' - debianFlavor: 'bullseye' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Ruby_Buster - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'ruby' - debianFlavor: 'buster' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Ruby_Stretch - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'ruby' - debianFlavor: 'stretch' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - - - job: Ruby_Ubuntu - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesTemplate.yml - parameters: - platformName: 'ruby' - debianFlavor: 'focal-scm' - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -- stage: Release - dependsOn: Build - jobs: - - job: Publish_Platform_Binaries - timeoutInMinutes: 250 - displayName: Publish to Azure Blob Storage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_platformBinariesReleaseTemplate.yml - parameters: - destinationSdkStorageAccountName: '${{ parameters.destinationStorageAccountName }}' - -trigger: - batch: true - branches: - include: - - main - paths: - exclude: - - /* - include: - - platforms/ruby - - vsts/PlatformBinaries/ruby.yml \ No newline at end of file diff --git a/vsts/pipelines/agentCleanUp.yml b/vsts/pipelines/agentCleanUp.yml deleted file mode 100644 index 379f067a0e..0000000000 --- a/vsts/pipelines/agentCleanUp.yml +++ /dev/null @@ -1,25 +0,0 @@ -parameters: -- name: poolName - displayName: Pool Name - type: string - default: Azure Pipelines - values: - - Azure Pipelines -- name: agentName - displayName: Agent Name - type: string - -variables: - skipComponentGovernanceDetection: true - -stages: -- stage: CleanAgents - displayName: Clean Oryx Agents - jobs: - - template: templates/_agentCleanUpJobTemplate.yml - parameters: - agentName: ${{ parameters.agentName }} - poolName: ${{ parameters.poolName }} - -# trigger is set using vsts UI, cleanup build will run every sundays 10 PM PST/PDT -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/baseImages/dotnetcore.yml b/vsts/pipelines/baseImages/dotnetcore.yml deleted file mode 100644 index e2022cfc13..0000000000 --- a/vsts/pipelines/baseImages/dotnetcore.yml +++ /dev/null @@ -1,54 +0,0 @@ -variables: -- group: Oryx -- name: ascName - value: oryx-new-service-connection -- name: acrName - value: oryxdevmcr.azurecr.io -- name: skipComponentGovernanceDetection - value: true -- name: Packaging.EnableSBOMSigning - value: true - -jobs: -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build DotNetCore runtime buster base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: dotnetcore - imageDebianFlavor: buster - artifactsFileName: dotnetcore-runtimeimage-bases-buster.txt - jobName: Build_DotNetCore_BaseImage_Buster - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build DotNetCore runtime bullseye base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: dotnetcore - imageDebianFlavor: bullseye - artifactsFileName: dotnetcore-runtimeimage-bases-bullseye.txt - jobName: Build_DotNetCore_BaseImage_Bullseye - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build DotNetCore runtime bookworm base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: dotnetcore - imageDebianFlavor: bookworm - artifactsFileName: dotnetcore-runtimeimage-bases-bookworm.txt - jobName: Build_DotNetCore_BaseImage_Bookworm - -- job: Release_DotNetCoreRuntimeBaseImage - dependsOn: - - Build_DotNetCore_BaseImage_Buster - - Build_DotNetCore_BaseImage_Bullseye - - Build_DotNetCore_BaseImage_Bookworm - displayName: Push images to MCR - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'dotnetcore' \ No newline at end of file diff --git a/vsts/pipelines/baseImages/node.yml b/vsts/pipelines/baseImages/node.yml deleted file mode 100644 index d89ce545ba..0000000000 --- a/vsts/pipelines/baseImages/node.yml +++ /dev/null @@ -1,52 +0,0 @@ -variables: -- group: Oryx -- name: ascName - value: oryx-new-service-connection -- name: acrName - value: oryxdevmcr.azurecr.io -- name: skipComponentGovernanceDetection - value: true -- name: Packaging.EnableSBOMSigning - value: true - -jobs: -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build Node runtime buster based images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: node - imageDebianFlavor: buster - artifactsFileName: node-runtimeimage-bases-buster.txt - jobName: Build_Buster_BaseImages - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build Node runtime bullseye base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: node - imageDebianFlavor: bullseye - artifactsFileName: node-runtimeimage-bases-bullseye.txt - jobName: Build_Bullseye_BaseImages - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build Node runtime bookworm base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: node - imageDebianFlavor: bookworm - artifactsFileName: node-runtimeimage-bases-bookworm.txt - jobName: Build_Bookworm_BaseImages - -- job: Release_NodeRuntimeBaseImage - dependsOn: - - Build_Buster_BaseImages - displayName: Push images to MCR - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'node' diff --git a/vsts/pipelines/baseImages/php-fpm.yml b/vsts/pipelines/baseImages/php-fpm.yml deleted file mode 100644 index f2bf16197a..0000000000 --- a/vsts/pipelines/baseImages/php-fpm.yml +++ /dev/null @@ -1,54 +0,0 @@ -variables: -- group: Oryx -- name: ascName - value: oryx-new-service-connection -- name: acrName - value: oryxdevmcr.azurecr.io -- name: skipComponentGovernanceDetection - value: true -- name: Packaging.EnableSBOMSigning - value: true - -jobs: -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php buster runtime base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php-fpm - imageDebianFlavor: buster - artifactsFileName: php-fpm-runtimeimage-bases-buster.txt - jobName: Build_PHP_FPM_Buster_Base - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php bullseye runtime base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php-fpm - imageDebianFlavor: bullseye - artifactsFileName: php-fpm-runtimeimage-bases-bullseye.txt - jobName: Build_PHP_Fpm_Bullseye_Base - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php bookworm runtime base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php-fpm - imageDebianFlavor: bookworm - artifactsFileName: php-fpm-runtimeimage-bases-bookworm.txt - jobName: Build_PHP_Fpm_Bookworm_Base - -- job: Release_PhpRuntimeBaseImage - dependsOn: - - Build_Php_Fpm_Buster_Base - - Build_PHP_Fpm_Bullseye_Base - - Build_PHP_Fpm_Bookworm_Base - displayName: Push images to MCR - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'php-fpm' diff --git a/vsts/pipelines/baseImages/php.yml b/vsts/pipelines/baseImages/php.yml deleted file mode 100644 index 78944bd174..0000000000 --- a/vsts/pipelines/baseImages/php.yml +++ /dev/null @@ -1,54 +0,0 @@ -variables: -- group: Oryx -- name: ascName - value: oryx-new-service-connection -- name: acrName - value: oryxdevmcr.azurecr.io -- name: skipComponentGovernanceDetection - value: true -- name: Packaging.EnableSBOMSigning - value: true - -jobs: -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php runtime buster base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php - imageDebianFlavor: buster - artifactsFileName: php-runtimeimage-bases-buster.txt - jobName: Build_Buster_BaseImages - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php runtime bullseye base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php - imageDebianFlavor: bullseye - artifactsFileName: php-runtimeimage-bases-bullseye.txt - jobName: Build_Bullseye_BaseImages - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build php runtime bookworm base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: php - imageDebianFlavor: bookworm - artifactsFileName: php-runtimeimage-bases-bookworm.txt - jobName: Build_Bookworm_BaseImages - -- job: Release_PhpRuntimeBaseImage - dependsOn: - - Build_Buster_BaseImages - - Build_Bullseye_BaseImages - - Build_Bookworm_BaseImages - displayName: Push images to MCR - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'php' diff --git a/vsts/pipelines/baseImages/python.yml b/vsts/pipelines/baseImages/python.yml deleted file mode 100644 index 1d29aba81f..0000000000 --- a/vsts/pipelines/baseImages/python.yml +++ /dev/null @@ -1,44 +0,0 @@ -variables: -- group: Oryx -- name: ascName - value: oryx-new-service-connection -- name: acrName - value: oryxdevmcr.azurecr.io -- name: skipComponentGovernanceDetection - value: true -- name: Packaging.EnableSBOMSigning - value: true - -jobs: -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build python runtime bullseye base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: python - imageDebianFlavor: bullseye - artifactsFileName: python-runtimeimage-bases-bullseye.txt - jobName: Build_Bullseye_BaseImages - -- template: ../templates/_buildimageBasesJobTemplate.yml - parameters: - displayName: Build python runtime bookworm base images - scriptPath: ./build/buildRunTimeImageBases.sh - imageDir: python - imageDebianFlavor: bookworm - artifactsFileName: python-runtimeimage-bases-bookworm.txt - jobName: Build_Bookworm_BaseImages - -- job: Release_PythonRuntimeBaseImage - dependsOn: - - Build_Bullseye_BaseImages - - Build_Bookworm_BaseImages - displayName: Push images to MCR - timeoutInMinutes: 250 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: ../templates/_releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'python' diff --git a/vsts/pipelines/ci-detector.yml b/vsts/pipelines/ci-detector.yml deleted file mode 100644 index 39220d3c54..0000000000 --- a/vsts/pipelines/ci-detector.yml +++ /dev/null @@ -1,115 +0,0 @@ -resources: -- repo: self - -variables: -- group: Oryx - -stages: - - stage: ValidatePipeline - displayName: Validate Pipeline - jobs: - - job: ValidatePipeline - displayName: Validate pipeline - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - script: | - set -x - if [ "$(Build.Reason)" != "Manual" ]; then - echo - echo "Invalid configuration." - echo "Build should be Manual" - exit 1 - fi - if [ "$(Build.DefinitionName)" != "Oryx-Detector-CI" ]; then - echo - echo "Invalid configuration." - echo "Build definition name should be Oryx-Detector-CI." - exit 1 - fi - if [[ "$(Build.SourceBranch)" != "refs/heads/main" ]] \ - && [[ "$(Build.SourceBranch)" != refs/heads/patch* ]] \ - && [[ "$(Build.SourceBranch)" != refs/heads/exp* ]]; then - echo - echo "Invalid configuration." - echo 'Only 'main', 'patch/*' and 'exp/*' branches are allowed.' - exit 1 - fi - displayName: 'Validate pipeline run' - - - stage: Build - displayName: Build Stage - dependsOn: ValidatePipeline - jobs: - - job: Job_SignBinariesAndPackages - displayName: Sign Detector Binaries and NuGet packages - pool: - name: VSEngSS-MicroBuild2022-1ES - demands: - - msbuild - - visualstudio - variables: - skipComponentGovernanceDetection: true - steps: - - template: templates/_signBinaryDetector.yml - - job: Job_BuildAndTestDetector - displayName: Build and test detector - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - template: templates/_buildTemplateDetector.yml - - - stage: Release - displayName: Release Stage - dependsOn: Build - jobs: - - job: Release_GitHub - displayName: Create GitHub release - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - checkout: self - clean: true - - task: DownloadPipelineArtifact@2 - displayName: 'Download artifacts to publish to release' - inputs: - artifactName: 'detector_signed' - path: $(Build.ArtifactStagingDirectory)/detector_signed - - bash: | - . build/detector/__detectorNugetPackagesVersions.sh - echo "Setting release name to '$releaseName'..." - echo "##vso[task.setvariable variable=RELEASE_NAME;]$VERSION" - displayName: 'Set relase name environment variable' - - bash: | - dotnet nuget push \ - $(Build.ArtifactStagingDirectory)/detector_signed/packages/*.nupkg \ - -s https://api.nuget.org/v3/index.json \ - --api-key $NUGETORG_API_KEY - env: - # Map the value that we got from keyvault/variablegroup to environment variable - NUGETORG_API_KEY: $(NUGETORG-API-KEY) - displayName: 'Push nuget packages to nuget.org' - - task: GitHubRelease@0 - displayName: 'GitHub release (create)' - inputs: - gitHubConnection: 'Oryx-GitHub' - repositoryName: microsoft/oryx - tagSource: manual - tag: '$(RELEASE_NAME)' - assets: $(Build.ArtifactStagingDirectory)/detector_signed/packages/*.nupkg -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/ci.yml b/vsts/pipelines/ci.yml deleted file mode 100644 index fdab6281c9..0000000000 --- a/vsts/pipelines/ci.yml +++ /dev/null @@ -1,285 +0,0 @@ -parameters: - - name: storageAccountUrl - displayName: SDK storage account URL for production images and testing - type: string - default: https://oryx-cdn.microsoft.io - values: - - https://oryx-cdn.microsoft.io - - name: buildImages - type: object - default: - - - key: Latest - value: latest - - - key: Jamstack - value: jamstack - - - key: GithubActions - value: githubactions - - - key: Full - value: full - - - key: Cli - value: cli-stretch - - - key: CliBuster - value: cli-buster - - - key: CliBullseye - value: cli-bullseye - - - key: CliBuilderBullseye - value: cli-builder-bullseye - - - key: Buildpack - value: buildpack - -resources: -- repo: self - -variables: - group: Oryx - Packaging.EnableSBOMSigning: true - -stages: - - stage: CreateReleaseTag - jobs: - - job: CreateReleaseTag - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - checkout: self - clean: true - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: ShellScript@2 - inputs: - scriptPath: ./vsts/scripts/createReleaseTag.sh - displayName: 'Create release tag' - - script: | - set -ex - sourcesArtifactsDir="$(Build.SourcesDirectory)/artifacts" - mkdir -p "$sourcesArtifactsDir" - echo "$(RELEASE_TAG_NAME)" > "$sourcesArtifactsDir/releaseTag.txt" - displayName: 'Write release tag name to an artifact file' - - task: PublishPipelineArtifact@1 - displayName: 'Publish artifact file having the release tag name' - inputs: - targetPath: $(Build.SourcesDirectory)/artifacts/releaseTag.txt - artifactName: releaseTag - - - stage: Build - displayName: Build Stage - jobs: - - job: Job_Security - displayName: Security - condition: succeeded() - pool: - name: Azure Pipelines - vmImage: windows-2022 - steps: - - template: templates/_securityChecks.yml - - - job: Job_SignBinaries - displayName: Sign Oryx Binaries - pool: - name: VSEngSS-MicroBuild2022-1ES - demands: - - msbuild - - visualstudio - variables: - SignType: 'test' - skipComponentGovernanceDetection: true - steps: - - task: DownloadPipelineArtifact@2 - displayName: 'Download artifact file having release tag name' - inputs: - targetPath: $(Build.SourcesDirectory)/artifacts/releaseTag - artifactName: 'releaseTag' - - powershell: | - $file = "$env:BUILD_SOURCESDIRECTORY\artifacts\releaseTag\releaseTag.txt" - if (Test-Path $file) { - $tagName = [IO.File]::ReadAllText($file) - Write-Host "Content is $tagName" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$tagName" - } - displayName: 'Set release tag name as environment variable' - - template: templates/_signBinary.yml - - # Job loop for BuildImages - - ${{ each buildImage in parameters.buildImages }}: - - job: Job_BuildImage_${{ buildImage.key }} - displayName: 'Build & Test ${{ buildImage.key }} Build image' - #dependsOn: Job_SignBinaries - condition: succeeded() - timeoutInMinutes: 480 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: $[ dependencies.Job_SignBinaries.outputs['setSignTypeVariable.SignType'] ] # map in the signtype variable - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]true" - echo "##vso[task.setvariable variable=TestBuildImages;]true" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushBuildImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - if [[ "${{ buildImage.value }}" =~ "cli-builder" ]]; then - echo "##vso[task.setvariable variable=PushBuilderImages;]true" - fi - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: ${{ buildImage.value }} - - - job: Job_Buster_RuntimeImages - displayName: Build and Test Buster Runtime Images - dependsOn: Job_SignBinaries - condition: succeeded() - timeoutInMinutes: 480 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: $[ dependencies.Job_SignBinaries.outputs['setSignTypeVariable.SignType'] ] # map in the signtype variable - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: buster - - - job: Job_Bullseye_RuntimeImages - displayName: Build and Test Bullseye Runtime Images - dependsOn: Job_SignBinaries - condition: succeeded() - timeoutInMinutes: 480 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: $[ dependencies.Job_SignBinaries.outputs['setSignTypeVariable.SignType'] ] # map in the signtype variable - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: bullseye - - - job: Job_Bookworm_RuntimeImages - displayName: Build and Test Bookworm Runtime Images - dependsOn: Job_SignBinaries - condition: succeeded() - timeoutInMinutes: 480 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: $[ dependencies.Job_SignBinaries.outputs['setSignTypeVariable.SignType'] ] # map in the signtype variable - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: bookworm - - - template: templates/_integrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} - - - job: Job_ProductionStorageAccountTest - displayName: Test Production Storage Account - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: 'Test production storage account' - env: - ORYX_TEST_SDK_STORAGE_URL: ${{ parameters.storageAccountUrl }} - inputs: - scriptPath: ./build/testIntegration.sh - args: StorageAccountTests=Prod - - - stage: Release - displayName: Release Stage - dependsOn: Build - condition: > - and(succeeded(), or(eq(variables['Build.SourceBranch'], 'refs/heads/main'), - startsWith(variables['Build.SourceBranch'],'refs/heads/patch/'), - startsWith(variables['Build.SourceBranch'],'refs/heads/exp/'))) - - jobs: - - template: templates/_releaseJobTemplate.yml - -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/ciDebug.yml b/vsts/pipelines/ciDebug.yml deleted file mode 100644 index 8ddcbcd0a2..0000000000 --- a/vsts/pipelines/ciDebug.yml +++ /dev/null @@ -1,196 +0,0 @@ -resources: -- repo: self - -variables: -- group: Oryx - -stages: - - stage: CreateReleaseTag - jobs: - - job: CreateReleaseTag - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - task: ShellScript@2 - inputs: - scriptPath: ./vsts/scripts/createReleaseTag.sh - displayName: 'Create release tag' - - script: | - set -ex - sourcesArtifactsDir="$(Build.SourcesDirectory)/artifacts" - mkdir -p "$sourcesArtifactsDir" - echo "$(RELEASE_TAG_NAME)" > "$sourcesArtifactsDir/releaseTag.txt" - displayName: 'Write release tag name to an artifact file' - - task: PublishPipelineArtifact@1 - displayName: 'Publish artifact file having the release tag name' - inputs: - targetPath: $(Build.SourcesDirectory)/artifacts/releaseTag.txt - artifactName: releaseTag - - - stage: Build - displayName: Build Stage - jobs: - - job: Job_Security - displayName: Security - condition: succeeded() - pool: - name: Azure Pipelines - vmImage: windows-2022 - steps: - - template: templates/_securityChecks.yml - - - job: Job_BuildImage - displayName: Build and Test Build Image - timeoutInMinutes: 300 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: 'test' - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]true" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushBuildImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - - - job: Job_Buster_RuntimeImages - displayName: Build and Test Buster Runtime Images - timeoutInMinutes: 300 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: 'test' - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: buster - - - job: Job_Bullseye_RuntimeImages - displayName: Build and Test Bullseye Runtime Images - timeoutInMinutes: 300 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: 'test' - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: bullseye - - - job: Job_Bookworm_RuntimeImages - displayName: Build and Test Bookworm Runtime Images - timeoutInMinutes: 300 - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - SignType: 'test' - skipComponentGovernanceDetection: true - - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - displayName: 'Set variables' - - - template: templates/_setReleaseTag.yml - - - template: templates/_buildTemplate.yml - parameters: - imageType: bookworm - - - stage: Release - displayName: Release Stage - dependsOn: Build - condition: succeeded() - - jobs: - - job: Release_BuildImage - displayName: Push Build Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=ReleaseBuildImages;]true" - echo "##vso[task.setvariable variable=ReleaseRuntimeImages;]false" - displayName: 'Set variables' - - - template: templates/_releaseStepTemplate.yml - - - job: Release_RuntimeImages - displayName: Push Runtime Images to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 400 - steps: - - script: | - echo "##vso[task.setvariable variable=ReleaseBuildImages;]false" - echo "##vso[task.setvariable variable=ReleaseRuntimeImages;]true" - displayName: 'Set variables' - - - template: templates/_releaseStepTemplate.yml - -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/copyAllBlobsToProd.yml b/vsts/pipelines/copyAllBlobsToProd.yml deleted file mode 100644 index 01151a1d48..0000000000 --- a/vsts/pipelines/copyAllBlobsToProd.yml +++ /dev/null @@ -1,54 +0,0 @@ -variables: -- group: Oryx - -parameters: -- name: sourceStorageAccount - displayName: Source Storage Account - type: string - default: https://oryxsdkssandbox.blob.core.windows.net - values: - - https://oryxsdkssandbox.blob.core.windows.net - - https://oryxsdksstaging.blob.core.windows.net -- name: dryRun - displayName: Dry Run? - type: boolean - default: true - -trigger: none - -jobs: - - job: CreateReleaseTag - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - checkout: self - clean: true - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: 'Copy all blobs from a source storage account to the prod storage account' - env: - DEV_STORAGE_SAS_TOKEN: $(DEV-STORAGE-SAS-TOKEN) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - SANDBOX_STORAGE_SAS_TOKEN: $(SANDBOX-STORAGE-SAS-TOKEN) - PROD_STORAGE_SAS_TOKEN: $(PROD-STORAGE-SAS-TOKEN) - inputs: - scriptPath: ./vsts/scripts/copyAllBlobsToProdStorageAccount.sh - args: ${{ parameters.sourceStorageAccount }} ${{ parameters.dryRun }} - - - task: ShellScript@2 - displayName: 'Test Prod storage account' - inputs: - scriptPath: ./build/testIntegration.sh - args: StorageAccountTests=Prod \ No newline at end of file diff --git a/vsts/pipelines/copySdksFromProdToStorageAccount.yml b/vsts/pipelines/copySdksFromProdToStorageAccount.yml deleted file mode 100644 index 75de2dbc92..0000000000 --- a/vsts/pipelines/copySdksFromProdToStorageAccount.yml +++ /dev/null @@ -1,62 +0,0 @@ -variables: -- group: Oryx - -parameters: -- name: destinationStorageAccountName - displayName: Destination Storage Account Name - type: string - default: oryxsdksprodbackup -- name: dryRun - displayName: Dry Run? - type: boolean - default: false -# If overwrite is false, the only time SDKs will be copied is when the destination -# account does not have the existing container (e.g. dotnet, nodejs, ruby) -- name: overwrite - displayName: Copy new SDKs to existing containers? - type: boolean - default: true - -jobs: - - job: CopySDKsToStorageAccount - timeoutInMinutes: 300 # sometimes copying a fresh storage account takes longer than the default 60 minute timeout - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - checkout: self - clean: true - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: 'Copy SDKs from the prod storage account to a destination storage account' - env: - DEV_STORAGE_SAS_TOKEN: $(DEV-STORAGE-SAS-TOKEN) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - SANDBOX_STORAGE_SAS_TOKEN: $(SANDBOX-STORAGE-SAS-TOKEN) - PROD_STORAGE_SAS_TOKEN: $(PROD-STORAGE-SAS-TOKEN) - PROD_BACKUP_STORAGE_SAS_TOKEN: $(PROD-BACKUP-STORAGE-SAS-TOKEN) - PERSONAL_STORAGE_SAS_TOKEN: $(${{ upper(parameters.destinationStorageAccountName) }}-PERSONAL-STORAGE-SAS-TOKEN) - inputs: - scriptPath: ./vsts/scripts/copySdksFromProdToStorageAccount.sh - args: ${{ parameters.destinationStorageAccountName }} ${{ parameters.dryRun }} ${{ parameters.overwrite }} - -trigger: none -pr: none -schedules: -- cron: "0 12 * * 0" - displayName: Weekly Sunday Copy to Backup Prod - branches: - include: - - main - always: true # whether to always run the pipeline even if there have been source code changes since the last run \ No newline at end of file diff --git a/vsts/pipelines/nightly.yml b/vsts/pipelines/nightly.yml deleted file mode 100644 index cbef3404df..0000000000 --- a/vsts/pipelines/nightly.yml +++ /dev/null @@ -1,235 +0,0 @@ -parameters: - - name: storageAccountUrl - displayName: SDK storage account URL for testing - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: buildImages - type: object - default: - - - key: Latest - value: latest - - - key: LtsVersions - value: ltsversions - - - key: Jamstack - value: jamstack - - - key: GithubActions - value: githubactions - - - key: VsoFocal - value: vso-focal - - - key: VsoBullseye - value: vso-bullseye - - - key: Full - value: full - - - key: Cli - value: cli-stretch - - - key: CliBuster - value: cli-buster - - - key: CliBullseye - value: cli-bullseye - - - key: CliBuilderBullseye - value: cli-builder-bullseye - - - key: Buildpack - value: buildpack - -resources: -- repo: self - fetchDepth: 15 - -variables: - group: Oryx - Packaging.EnableSBOMSigning: true - -stages: - - stage: CreateReleaseTag - jobs: - - job: CreateReleaseTag - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - task: ShellScript@2 - inputs: - scriptPath: ./vsts/scripts/createReleaseTag.sh - displayName: 'Create release tag' - - script: | - set -ex - sourcesArtifactsDir="$(Build.SourcesDirectory)/artifacts" - mkdir -p "$sourcesArtifactsDir" - echo "$(RELEASE_TAG_NAME)" > "$sourcesArtifactsDir/releaseTag.txt" - displayName: 'Write release tag name to an artifact file' - - task: PublishPipelineArtifact@1 - displayName: 'Publish artifact file having the release tag name' - inputs: - targetPath: $(Build.SourcesDirectory)/artifacts/releaseTag.txt - artifactName: releaseTag - - - stage: Build - displayName: Build Stage - jobs: - - job: Job_Security - displayName: Security - condition: succeeded() - pool: - name: Azure Pipelines - vmImage: windows-2022 - steps: - - template: templates/_securityChecks.yml - - # Job loop for BuildImages - - ${{ each buildImage in parameters.buildImages }}: - - job: Job_BuildImage_${{ buildImage.key }} - displayName: 'Build & Test ${{ buildImage.key }} Build image' - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]true" - echo "##vso[task.setvariable variable=TestBuildImages;]true" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=PushBuildImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - if [[ "${{ buildImage.value }}" =~ "cli-builder" ]]; then - echo "##vso[task.setvariable variable=PushBuilderImages;]true" - fi - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: ${{ buildImage.value }} - -# commented out temporarily - # - job: Job_BuilderImages - # displayName: Build Builder Images - # pool: - # name: AzurePipelines-EO - # demands: - # - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - # timeoutInMinutes: 480 - # steps: - # - template: templates/_builderTemplate.yml - # dependsOn: Job_BuildImage_CliBuilderBullseye - - - job: Job_Buster_RuntimeImages - displayName: Build and Test Buster Runtime Images - condition: succeeded() - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - # Building runtime images can take a long time due to our PHP images - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: buster - - - job: Job_Bullseye_RuntimeImages - displayName: Build and Test Bullseye Runtime Images - condition: succeeded() - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - # Building runtime images can take a long time due to our PHP images - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: bullseye - - - job: Job_Bookworm_RuntimeImages - displayName: Build and Test Bookworm Runtime Images - condition: succeeded() - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - # Building runtime images can take a long time due to our PHP images - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: bookworm - - - template: templates/_integrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} - - - job: Job_StagingStorageAccountTest - displayName: Test Staging Storage Account - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - steps: - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: 'Test staging storage account' - env: - ORYX_TEST_SDK_STORAGE_URL: ${{ parameters.storageAccountUrl }} - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - inputs: - scriptPath: ./build/testIntegration.sh - args: StorageAccountTests=Staging - -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/publishSdkToProd.yml b/vsts/pipelines/publishSdkToProd.yml deleted file mode 100644 index a983e52417..0000000000 --- a/vsts/pipelines/publishSdkToProd.yml +++ /dev/null @@ -1,75 +0,0 @@ -variables: -- group: Oryx - -stages: - - stage: DryRun - jobs: - - job: DryRun - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - steps: - - checkout: self - clean: true - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: '(Dry run) Publish SDKs from dev to prod storage account' - env: - DEV_STORAGE_SAS_TOKEN: $(DEV-STORAGE-SAS-TOKEN) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - PROD_STORAGE_SAS_TOKEN: $(PROD-STORAGE-SAS-TOKEN) - inputs: - scriptPath: ./vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh - args: True # dry run - - - stage: PublishSDKsToProduction - jobs: - - deployment: PublishSDKsToProduction - environment: oryx-prod # maps to the oryx-prod ADO environment, which requires manual approval to begin this stage - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - strategy: - runOnce: - deploy: - steps: - - checkout: self - clean: true - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - - - task: ShellScript@2 - displayName: 'Publish SDKs from dev to prod storage account' - env: - DEV_STORAGE_SAS_TOKEN: $(DEV-STORAGE-SAS-TOKEN) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - PROD_STORAGE_SAS_TOKEN: $(PROD-STORAGE-SAS-TOKEN) - inputs: - scriptPath: ./vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh - args: False # no dry run - - - task: ShellScript@2 - displayName: 'Test prod storage account' - inputs: - scriptPath: ./build/testIntegration.sh - args: StorageAccountTests=Prod \ No newline at end of file diff --git a/vsts/pipelines/templates/_agentCleanUpJobTemplate.yml b/vsts/pipelines/templates/_agentCleanUpJobTemplate.yml deleted file mode 100644 index 5e01904f8e..0000000000 --- a/vsts/pipelines/templates/_agentCleanUpJobTemplate.yml +++ /dev/null @@ -1,13 +0,0 @@ -parameters: - agentName: '' - -jobs: -- job: Cleaning_${{ parameters.agentName }} - displayName: ${{ parameters.agentName }} - pool: - name: ${{ parameters.poolName }} - demands: - - agent.name -equals ${{ parameters.agentName }} - timeoutInMinutes: 50 - steps: - - template: _cleanImageCacheTemplate.yml diff --git a/vsts/pipelines/templates/_buildTemplate.yml b/vsts/pipelines/templates/_buildTemplate.yml deleted file mode 100644 index db47fbd943..0000000000 --- a/vsts/pipelines/templates/_buildTemplate.yml +++ /dev/null @@ -1,274 +0,0 @@ -parameters: - ascName: oryx-new-service-connection - acrName: oryxdevmcr.azurecr.io - imageName: oryxdevmcr.azurecr.io/public/oryx - imageType: null - -steps: -- script: | - if [ "$(BuildBuildImages)" != "true" ] && [ "$(BuildRuntimeImages)" != "true" ] && [ "$(TestIntegration)" != "true" ] - then - echo "Invalid configuration." - echo "Variable 'BuildBuildImages' or 'BuildRuntimeImages' needs to be 'true' to run this build." - exit 1 - fi - displayName: 'Validate pipeline run' - -- script: | - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - docker images && docker system prune -fa && docker images && echo - displayName: 'clean docker images' - condition: or(eq(variables['TestBuildImages'], 'true'), eq(variables['TestRuntimeImages'], 'true')) - -- checkout: self - clean: true - -- task: DownloadPipelineArtifact@0 - displayName: 'Download Pipeline Artifact' - inputs: - pipelineId: 'Oryx-CI' - artifactName: 'signed_binaries' - targetPath: '$(Build.SourcesDirectory)' - condition: > - and(succeeded(), - or(in(variables['SIGNTYPE'], 'real', 'Real'), in(variables['SignType'], 'real', 'Real')), - or(startsWith(variables['Build.SourceBranch'], 'refs/heads/main'), - startsWith(variables['Build.SourceBranch'],'refs/heads/patch/'), - startsWith(variables['Build.SourceBranch'],'refs/heads/exp/'))) - -- task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - -- script: | - dotnet --version && dotnet msbuild -version && echo - displayName: 'Print dotnet and msbuild version' - -- task: ShellScript@2 - displayName: 'Build Oryx.sln' - inputs: - scriptPath: ./build/buildSln.sh - args: Oryx.sln - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- task: Docker@1 - displayName: Container registry logout - inputs: - command: logout - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - -- task: Docker@1 - displayName: Container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - -- script: | - docker images && docker system prune -fa && df -h && echo - displayName: 'Free up space for oryx layers' - -- task: ShellScript@2 - displayName: 'Test build script generator' - inputs: - scriptPath: ./build/testBuildScriptGenerator.sh - condition: and(succeeded(), eq(variables['TestBuildImages'], 'true')) - -- task: ShellScript@2 - displayName: 'Test startup script generators' - inputs: - scriptPath: ./build/testStartupScriptGenerators.sh - condition: and(succeeded(), eq(variables['TestRuntimeImages'], 'true')) - -- task: ShellScript@2 - displayName: 'Build build images' - env: - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - inputs: - scriptPath: ./build/buildBuildImages.sh - args: -t ${{ parameters.imageType }} -s $(storageAccountUrl) - condition: and(succeeded(), eq(variables['BuildBuildImages'], 'true')) - -- task: ShellScript@2 - displayName: 'Build runtime images' - env: - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - inputs: - scriptPath: ./build/buildRunTimeImages.sh - args: -s $(storageAccountUrl) ${{ parameters.imageType }} - condition: and(succeeded(), eq(variables['BuildRuntimeImages'], 'true')) - - -- script: | - docker images && docker system prune -f && df -h && echo - displayName: 'clean docker unknown layers' - -- script: | - docker -v - echo "Installing Docker CE version 24.0.5................" - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt update - sudo apt-get install docker-ce=5:24.0.5~3-0~ubuntu-focal docker-ce-cli=5:24.0.5~3-0~ubuntu-focal containerd.io - echo "After installing ................" - docker -v - displayName: 'Install Docker 24.0.5' - condition: true - -- task: ShellScript@2 - displayName: 'Test build images' - env: - ORYX_TEST_SDK_STORAGE_URL: $(storageAccountUrl) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - inputs: - scriptPath: ./build/testBuildImages.sh - args: skipBuildingImages ${{ parameters.imageName }} $(Build.DefinitionName).$(RELEASE_TAG_NAME) ${{ parameters.imageType }} - condition: and(succeeded(), eq(variables['TestBuildImages'], 'true')) - -- task: ShellScript@2 - displayName: 'Test runtime images' - env: - ORYX_TEST_SDK_STORAGE_URL: $(storageAccountUrl) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - inputs: - scriptPath: ./build/testRunTimeImages.sh - args: skipBuildingImages ${{ parameters.imageName }} $(Build.DefinitionName).$(RELEASE_TAG_NAME) category=runtime-${{ parameters.imageType }} - condition: and(succeeded(), eq(variables['TestRuntimeImages'], 'true')) - -- task: DownloadBuildArtifacts@0 - displayName: 'Download Build Artifacts' - inputs: - artifactName: drop - condition: and(succeeded(), eq(variables['TestIntegration'], 'true')) - -- task: Shellpp@0 - displayName: 'Pull and Retag recently built oryx build and runtime images' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/pullAndTag.sh - args: $(System.ArtifactsDirectory)/drop/images/build-images-acr.txt - condition: and(succeeded(), eq(variables['TestIntegration'], 'true')) - -- task: Shellpp@0 - displayName: 'Build a build image for tests' - inputs: - type: FilePath - scriptPath: ./build/buildTestBuildImages.sh - condition: and(succeeded(), eq(variables['TestIntegration'], 'true')) - -- task: ShellScript@2 - displayName: 'Test integration' - inputs: - scriptPath: ./build/testIntegration.sh - args: $(TestIntegrationCaseFilter) ${{ parameters.imageName }} $(Build.DefinitionName).$(RELEASE_TAG_NAME) - env: - SQLSERVER_DATABASE_HOST: $(SQLSERVER-DATABASE-HOST) - SQLSERVER_DATABASE_NAME: $(SQLSERVER-DATABASE-NAME) - SQLSERVER_DATABASE_USERNAME: $(SQLSERVER-DATABASE-USERNAME) - SQLSERVER_DATABASE_PASSWORD: $(SQLSERVER-DATABASE-PASSWORD) - ORYX_TEST_SDK_STORAGE_URL: $(storageAccountUrl) - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - condition: and(succeeded(), eq(variables['TestIntegration'], 'true')) - -- task: CopyFiles@2 - displayName: 'Copy source projects output to artifacts folder' - inputs: - sourceFolder: $(Build.SourcesDirectory) - contents: src/**/bin/**/*.* - targetFolder: $(Build.ArtifactStagingDirectory) - cleanTargetFolder: true - overWrite: true - flattenFolders: true - condition: true - -- task: CopyFiles@2 - displayName: 'Copy artifacts from source repo to agent artifacts folder' - inputs: - sourceFolder: '$(Build.SourcesDirectory)/artifacts' - contents: '**/*.*' - targetFolder: $(Build.ArtifactStagingDirectory) - overWrite: true - condition: true - -- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: Generate Software Bill of Materials (SBOM) - inputs: - BuildDropPath: '$(Build.ArtifactStagingDirectory)' - AdditionalComponentDetectorArgs: '--DirectoryExclusionList **/SampleApps/**' - -- task: PublishTestResults@2 - inputs: - testRunner: 'xUnit' - testResultsFiles: '$(Build.ArtifactStagingDirectory)/testResults/*.xml' - mergeTestResults: true - condition: true - -- task: Docker@1 - displayName: 'Push build images to ACR' - inputs: - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - command: 'Push an image' - pushMultipleImages: true - imageNamesPath: '$(Build.ArtifactStagingDirectory)/images/build-images-acr.txt' - includeLatestTag: false - enforceDockerNamingConvention: false - condition: and(succeeded(), or(eq(variables['PushBuildImages'], 'true'), eq(variables['PushBuilderImages'], 'true')), eq(variables['BuildBuildImages'], 'true')) - -- task: Docker@1 - displayName: 'Push runtime images to ACR' - inputs: - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - command: 'Push an image' - pushMultipleImages: true - imageNamesPath: '$(Build.ArtifactStagingDirectory)/images/runtime-images-acr.${{ parameters.imageType }}.txt' - includeLatestTag: false - enforceDockerNamingConvention: false - condition: and(succeeded(), eq(variables['PushRuntimeImages'], 'true'), eq(variables['BuildRuntimeImages'], 'true')) - -- task: ShellScript@2 - displayName: 'Clean up Docker containers and images' - inputs: - scriptPath: ./vsts/scripts/cleanDocker.sh - condition: or(eq(variables['TestBuildImages'], 'true'), eq(variables['TestRuntimeImages'], 'true'), eq(variables['TestIntegration'], 'true')) - -- task: ShellScript@2 - displayName: 'Clean up Docker mounted directories' - inputs: - scriptPath: ./vsts/scripts/removeDockerArtifacts.sh - condition: or(eq(variables['TestBuildImages'], 'true'), eq(variables['TestRuntimeImages'], 'true'), eq(variables['TestIntegration'], 'true')) - -- script: | - docker images && docker system prune -fa && df -h && docker images && echo - displayName: 'clean docker images and stopped containers' - -- task: ShellScript@2 - displayName: 'Generate release notes' - inputs: - scriptPath: ./vsts/scripts/generateReleaseNotes.sh - condition: and(succeeded(), eq(variables['PushBuildImages'], 'true'), eq(variables['BuildBuildImages'], 'true')) - -- task: ArchiveFiles@2 - displayName: 'Archive docker files and scripts for Oryx build and runtime images' - inputs: - rootFolderOrFile: images - archiveFile: '$(Build.ArtifactStagingDirectory)/images/dockerFiles.zip' - condition: true - -- task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: drop' - condition: true - -- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3 - displayName: 'Clean Agent Directories' - condition: true diff --git a/vsts/pipelines/templates/_buildTemplateDetector.yml b/vsts/pipelines/templates/_buildTemplateDetector.yml deleted file mode 100644 index bb554f5fbd..0000000000 --- a/vsts/pipelines/templates/_buildTemplateDetector.yml +++ /dev/null @@ -1,52 +0,0 @@ -steps: -- checkout: self - clean: true - -- task: UseDotNet@2 - displayName: 'Use .NET Core SDK 7.x' - inputs: - version: 7.0.306 - -- task: ShellScript@2 - displayName: 'Build Detector.sln' - inputs: - scriptPath: ./build/buildSln.sh - args: Detector.sln - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- task: ShellScript@2 - displayName: 'Testing Detector' - inputs: - scriptPath: ./build/testDetector.sh - -- task: CopyFiles@2 - displayName: 'Copy content from artifacts folder in repo to agent artifacts folder' - inputs: - sourceFolder: '$(Build.SourcesDirectory)/artifacts' - contents: '**/*.*' - targetFolder: $(Build.ArtifactStagingDirectory) - overWrite: true - condition: succeededOrFailed() - -- task: PublishTestResults@2 - displayName: 'Publish test results' - inputs: - testRunner: 'xUnit' - testResultsFiles: '$(Build.ArtifactStagingDirectory)/testResults/*.xml' - mergeTestResults: true - condition: succeededOrFailed() - -- task: PublishBuildArtifacts@1 - displayName: 'Publish build artifacts' - inputs: - pathToPublish: $(Build.ArtifactStagingDirectory) - artifactName: 'detector' - condition: succeededOrFailed() - -- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3 - displayName: 'Clean Agent Directories' - condition: succeededOrFailed() \ No newline at end of file diff --git a/vsts/pipelines/templates/_builderTemplate.yml b/vsts/pipelines/templates/_builderTemplate.yml deleted file mode 100644 index 57af09174d..0000000000 --- a/vsts/pipelines/templates/_builderTemplate.yml +++ /dev/null @@ -1,58 +0,0 @@ -parameters: - ascName: oryx-new-service-connection - acrName: oryxdevmcr.azurecr.io - -steps: -- script: | - curl -sSL "https://github.com/buildpacks/pack/releases/download/v0.28.0/pack-v0.28.0-linux.tgz" | tar -C /usr/local/bin/ --no-same-owner -xzv pack - displayName: 'Install Pack CLI' - condition: true - -- task: Docker@1 - displayName: Container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - -- task: ShellScript@2 - displayName: 'Build base builder images' - inputs: - scriptPath: ./builders/base/buildBaseBuilder.sh - args: -f ${{ parameters.acrName }} -r "public/oryx/builder" -v $(Build.DefinitionName).$(Build.BuildNumber) - -- task: ShellScript@2 - displayName: 'Build container apps builder images' - inputs: - scriptPath: ./builders/container-apps/buildCappsBuilder.sh - args: -f ${{ parameters.acrName }} -r "public/oryx/builder" -t "capps-$(Build.DefinitionName).$(Build.BuildNumber)" -b "${{ parameters.acrName }}/public/oryx/builder:$(Build.DefinitionName).$(Build.BuildNumber)" - -- task: CopyFiles@2 - displayName: 'Copy artifacts from source repo to agent artifacts folder' - inputs: - sourceFolder: '$(Build.SourcesDirectory)/artifacts' - contents: '**/*.*' - targetFolder: $(Build.ArtifactStagingDirectory) - overWrite: true - -- task: Docker@1 - displayName: 'Push base build images to ACR' - inputs: - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - command: 'Push an image' - pushMultipleImages: true - imageNamesPath: '$(Build.ArtifactStagingDirectory)/images/builder-images-acr.txt' - includeLatestTag: false - enforceDockerNamingConvention: false - -- task: Docker@1 - displayName: 'Push container apps builder images to ACR' - inputs: - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrName }} - command: 'Push an image' - pushMultipleImages: true - imageNamesPath: '$(Build.ArtifactStagingDirectory)/images/capps-builder-images-acr.txt' - includeLatestTag: false - enforceDockerNamingConvention: false \ No newline at end of file diff --git a/vsts/pipelines/templates/_buildimageBasesJobTemplate.yml b/vsts/pipelines/templates/_buildimageBasesJobTemplate.yml deleted file mode 100644 index 701537907a..0000000000 --- a/vsts/pipelines/templates/_buildimageBasesJobTemplate.yml +++ /dev/null @@ -1,71 +0,0 @@ -parameters: - displayName: '' - imageDir: '' - imageDebianFlavor: '' - scriptPath: '' - artifactsFileName: '' - jobName: '' - -jobs: -- job: ${{ parameters.jobName }} - displayName: ${{ parameters.displayName }} - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 250 - steps: - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - task: ShellScript@2 - displayName: Build images - inputs: - scriptPath: ${{ parameters.scriptPath }} - args: ${{ parameters.imageDir }} ${{ parameters.imageDebianFlavor }} - env: - ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: $(ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN) - DOTNET_PRIVATE_STORAGE_ACCOUNT_ACCESS_TOKEN: $(DotnetPrivateStorageAccountAccessToken) - - - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 - displayName: Generate Software Bill of Materials (SBOM) - inputs: - BuildDropPath: '$(Build.ArtifactStagingDirectory)' - AdditionalComponentDetectorArgs: '--DirectoryExclusionList **/SampleApps/**' - - - task: CopyFiles@2 - displayName: Copy artifacts to staging directory - inputs: - sourceFolder: '$(Build.SourcesDirectory)/artifacts' - contents: '**/*.*' - targetFolder: $(Build.ArtifactStagingDirectory) - overWrite: true - condition: true - - - task: Docker@1 - displayName: Push built base images to dev ACR - inputs: - command: push - azureSubscriptionEndpoint: $(ascName) - azureContainerRegistry: $(acrName) - pushMultipleImages: true - imageNamesPath: '$(Build.ArtifactStagingDirectory)/images/${{ parameters.artifactsFileName }}' - enforceDockerNamingConvention: false - - - task: ShellScript@2 - displayName: 'Clean up Docker containers and images' - inputs: - scriptPath: ./vsts/scripts/cleanDocker.sh - - - task: PublishBuildArtifacts@1 - displayName: Publish build artifacts - inputs: - pathtoPublish: $(Build.ArtifactStagingDirectory) - - - task: ShellScript@2 - displayName: 'Clean up Docker containers and images' - inputs: - scriptPath: ./vsts/scripts/cleanDocker.sh - condition: true diff --git a/vsts/pipelines/templates/_cleanImageCacheTemplate.yml b/vsts/pipelines/templates/_cleanImageCacheTemplate.yml deleted file mode 100644 index fe96f9f98e..0000000000 --- a/vsts/pipelines/templates/_cleanImageCacheTemplate.yml +++ /dev/null @@ -1,18 +0,0 @@ -steps: -- script: | - echo "List of containers dead/alive ..." - docker ps -a - echo "List of images ..." - docker images - echo "Cleaning containers and images ..." - docker system prune -af - echo "List of containers dead/alive ..." - docker ps -a - echo "List of images ..." - docker images - displayName: 'Remove all existing docker images from machine' - -- script: | - echo "Restarting in 1 minutes" - sudo shutdown -r +1 - displayName: 'Restart machine after cleaning up' diff --git a/vsts/pipelines/templates/_copyImgFromDevToTest.yml b/vsts/pipelines/templates/_copyImgFromDevToTest.yml deleted file mode 100644 index 030e22230f..0000000000 --- a/vsts/pipelines/templates/_copyImgFromDevToTest.yml +++ /dev/null @@ -1,246 +0,0 @@ -parameters: - - name: ascName - type: string - default: oryx-new-service-connection - - name: acrDevName - type: string - default: oryxdevmcr.azurecr.io - - name: acrTestName - type: string - default: oryxtestmcr.azurecr.io - - name: testImageName - type: string - default: oryxtestmcr.azurecr.io/public/oryx - - name: acrDevContainerName - type: string - default: oryxdevmcr.azurecr.io/public/oryx - - name: acrTestContainerName - type: string - default: oryxtestmcr.azurecr.io/public/oryx - - name: nightlyTag - type: string - - name: cliImages - type: object - default: - - name: 'cli-buster' - sourceTag: 'debian-buster-Oryx-Nightly' - destinationTag: 'debian-buster' - - name: 'cli-bullseye' - sourceTag: 'debian-bullseye-Oryx-Nightly' - destinationTag: 'debian-bullseye' - - name: 'cli-stretch' - sourceTag: 'debian-stretch-Oryx-Nightly' - destinationTag: 'debian-stretch' - - name: ltsImages - type: object - default: - - name: 'lts-buster' - sourceTag: 'lts-versions-debian-buster-Oryx-Nightly' - destinationTag: 'lts-versions-debian-buster' - - name: 'lts-stretch' - sourceTag: 'lts-versions-debian-stretch-Oryx-Nightly' - destinationTag: 'lts-versions-debian-stretch' - - name: vsoImages - type: object - default: - - name: 'vso-ubuntu' - sourceTag: 'vso-ubuntu-focal-Oryx-Nightly' - destinationTag: 'vso-ubuntu-focal' - - name: 'vso-bullseye' - sourceTag: 'vso-debian-bullseye-Oryx-Nightly' - destinationTag: 'vso-debian-bullseye' - - name: fullImages - type: object - default: - - name: 'full-buster' - sourceTag: 'full-debian-buster-Oryx-Nightly' - destinationTag: 'full-debian-buster' - - name: 'full-bullseye' - sourceTag: 'full-debian-bullseye-Oryx-Nightly' - destinationTag: 'full-debian-bullseye' - - name: githubActions - type: object - default: - - name: 'github-actions-bookworm' - sourceTag: 'github-actions-debian-bookworm-Oryx-Nightly' - destinationTag: 'github-actions-debian-bookworm' - - name: 'github-actions-bullseye' - sourceTag: 'github-actions-debian-bullseye-Oryx-Nightly' - destinationTag: 'github-actions-debian-bullseye' - - name: 'github-actions-buster' - sourceTag: 'github-actions-debian-buster-Oryx-Nightly' - destinationTag: 'github-actions-debian-buster' - - name: 'github-actions-stretch' - sourceTag: 'github-actions-debian-stretch-Oryx-Nightly' - destinationTag: 'github-actions-debian-stretch' - - name: dotnet - type: object - default: - - name: '3.0-debian-buster' - sourceTag: '3.0-debian-buster-Oryx-Nightly' - destinationTag: '3.0-debian-buster' - - name: '3.1-debian-buster' - sourceTag: '3.1-debian-buster-Oryx-Nightly' - destinationTag: '3.1-debian-buster' - - name: '5.0-debian-buster' - sourceTag: '5.0-debian-buster-Oryx-Nightly' - destinationTag: '5.0-debian-buster' - - name: '6.0-debian-buster' - sourceTag: '6.0-debian-buster-Oryx-Nightly' - destinationTag: '6.0-debian-buster' - - name: '7.0-debian-buster' - sourceTag: '7.0-debian-buster-Oryx-Nightly' - destinationTag: '7.0-debian-buster' - - name: node - type: object - default: - - name: '18-debian-bullseye' - sourceTag: '18-debian-bullseye-Oryx-Nightly' - destinationTag: '18-debian-bullseye' - - name: '16-debian-buster' - sourceTag: '16-debian-buster-Oryx-Nightly' - destinationTag: '16-debian-buster' - - name: '14-debian-buster' - sourceTag: '14-debian-buster-Oryx-Nightly' - destinationTag: '14-debian-buster' - - name: python - type: object - default: - - name: '3.7-debian-bullseye' - sourceTag: '3.7-debian-bullseye-Oryx-Nightly' - destinationTag: '3.7-debian-bullseye' - - name: '3.8-debian-bullseye' - sourceTag: '3.8-debian-bullseye-Oryx-Nightly' - destinationTag: '3.8-debian-bullseye' - - name: '3.9-debian-buster' - sourceTag: '3.9-debian-buster-Oryx-Nightly' - destinationTag: '3.9-debian-buster' - - name: '3.10-debian-bullseye' - sourceTag: '3.10-debian-bullseye-Oryx-Nightly' - destinationTag: '3.10-debian-bullseye' - - name: '3.11-debian-bullseye' - sourceTag: '3.11-debian-bullseye-Oryx-Nightly' - destinationTag: '3.11-debian-bullseye' - - - -steps: - -- checkout: self - clean: true - -- task: Docker@1 - displayName: Dev container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrDevName }} - -- ${{ each image in parameters.cliImages }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/cli:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/cli:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/cli:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull CLI Images and Retag' - -- ${{ each image in parameters.ltsImages }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag lts Images' - -- ${{ each image in parameters.vsoImages }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag Vso Images' - -- ${{ each image in parameters.fullImages }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag Full Images' - -- ${{ each image in parameters.githubActions }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/build:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag Github Action Images' - -- ${{ each image in parameters.dotnet }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/dotnetcore:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/dotnetcore:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/dotnetcore:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag dotnet Images' - -- ${{ each image in parameters.node }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/node:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/node:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/node:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag Node Images' - -- ${{ each image in parameters.python }}: - - script: | - docker pull "${{ parameters.acrDevContainerName }}/python:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" - docker tag "${{ parameters.acrDevContainerName }}/python:${{ image.sourceTag }}.${{ parameters.nightlyTag }}" "${{ parameters.acrTestContainerName }}/python:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Pull and Retag Python Images' - -- task: Docker@1 - displayName: Dev Container registry logout - inputs: - command: logout - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrDevName }} - -- task: Docker@1 - displayName: Test container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrTestName }} - -- ${{ each image in parameters.cliImages }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/cli:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push CLI Images to Test ACR' - -- ${{ each image in parameters.ltsImages }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push lts Images to Test ACR' - -- ${{ each image in parameters.vsoImages }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push Vso Images to Test ACR' - -- ${{ each image in parameters.fullImages }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push Full Images to Test ACR' - -- ${{ each image in parameters.githubActions }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/build:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push Github Action Images to Test ACR' - -- ${{ each image in parameters.dotnet }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/dotnetcore:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push dotnet Images to Test ACR' - -- ${{ each image in parameters.node }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/node:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push Node Images to Test ACR' - -- ${{ each image in parameters.python }}: - - script: | - docker push "${{ parameters.acrTestContainerName }}/python:${{ image.destinationTag }}.${{ parameters.nightlyTag }}" - displayName: 'Push Python Images to Test ACR' - -- task: Docker@1 - displayName: Test Container registry logout - inputs: - command: logout - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrTestName }} diff --git a/vsts/pipelines/templates/_integrationJobTemplate.yml b/vsts/pipelines/templates/_integrationJobTemplate.yml deleted file mode 100644 index 6d3edee76c..0000000000 --- a/vsts/pipelines/templates/_integrationJobTemplate.yml +++ /dev/null @@ -1,25 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - -jobs: -# Python integration tests -- template: integrationTests/_pythonIntegrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} - -# DotNetCore integration tests -- template: integrationTests/_dotnetcoreIntegrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} - -# NodeJS integration tests -- template: integrationTests/_nodeIntegrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} - -# PHP integration tests -- template: integrationTests/_phpIntegrationJobTemplate.yml - parameters: - storageAccountUrl: ${{ parameters.storageAccountUrl }} \ No newline at end of file diff --git a/vsts/pipelines/templates/_platformBinariesReleaseTemplate.yml b/vsts/pipelines/templates/_platformBinariesReleaseTemplate.yml deleted file mode 100644 index 7192ab76df..0000000000 --- a/vsts/pipelines/templates/_platformBinariesReleaseTemplate.yml +++ /dev/null @@ -1,30 +0,0 @@ -parameters: - - name: sourceFolder - type: string - - name: storageAccountName - type: string - - name: subscription - type: string - -steps: - -- task: AzureCLI@2 - displayName: Upload files to Azure Storage - inputs: - azureSubscription: ${{ parameters.subscription }} - scriptPath: ${{ parameters.sourceFolder }}/vsts/scripts/publishFilesToAzureStorage.sh - arguments: ${{ parameters.storageAccountName }} - scriptType: 'bash' - -- task: UseDotNet@2 - displayName: 'Use .NET Core SDK 7.x' - inputs: - version: 7.x - -- task: ShellScript@2 - displayName: 'Test Dev storage account' - env: - ORYX_TEST_SDK_STORAGE_URL: https://${{ parameters.storageAccountName }}.blob.core.windows.net - inputs: - scriptPath: ${{ parameters.sourceFolder }}/build/testIntegration.sh - args: StorageAccountTests=Dev \ No newline at end of file diff --git a/vsts/pipelines/templates/_platformBinariesTemplate.yml b/vsts/pipelines/templates/_platformBinariesTemplate.yml deleted file mode 100644 index dc90994067..0000000000 --- a/vsts/pipelines/templates/_platformBinariesTemplate.yml +++ /dev/null @@ -1,26 +0,0 @@ -parameters: - - name: platformName - type: string - - name: debianFlavor - type: string - - name: sourceFolder - type: string - - name: storageAccountName - type: string - - name: dotnetPrivateStorageSasToken - type: string - default: '' - -steps: -- task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.x - -- task: ShellScript@2 - displayName: 'Building platform binaries' - env: - DOTNET_PRIVATE_STORAGE_ACCOUNT_ACCESS_TOKEN: ${{ parameters.dotnetPrivateStorageSasToken }} - inputs: - scriptPath: ${{ parameters.sourceFolder }}/build/buildPlatformBinaries.sh - args: ${{ parameters.platformName }} ${{ parameters.debianFlavor }} https://${{ parameters.storageAccountName }}.blob.core.windows.net diff --git a/vsts/pipelines/templates/_releaseBaseImagesJobTemplate.yml b/vsts/pipelines/templates/_releaseBaseImagesJobTemplate.yml deleted file mode 100644 index 0c231482a6..0000000000 --- a/vsts/pipelines/templates/_releaseBaseImagesJobTemplate.yml +++ /dev/null @@ -1,61 +0,0 @@ -jobs: -- job: Release_PhpRuntimeBaseImage - displayName: Push PHP Runtime Base Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 250 - steps: - - template: _releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'php' - -- job: Release_PhpFpmNginxRuntimeBaseImage - displayName: Push PHP-FPM Runtime Base Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 250 - steps: - - template: _releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'php-fpm' - -- job: Release_DotNetCoreRuntimeBaseImage - displayName: Push DotNetCore Runtime Base Images to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 250 - steps: - - template: _releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'dotnetcore' - -- job: Release_NodeBaseImage - displayName: Push Node Base Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 300 - steps: - - template: _releaseBaseImagesStepTemplate.yml - parameters: - baseImageName: 'node' - -- job: Release_RubyBaseImage - displayName: Push Ruby Base Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 300 - - steps: - - template: _releaseBaseImagesStepTemplate.yml - parameters: - aseImageName: 'ruby' \ No newline at end of file diff --git a/vsts/pipelines/templates/_releaseBaseImagesStepTemplate.yml b/vsts/pipelines/templates/_releaseBaseImagesStepTemplate.yml deleted file mode 100644 index 145a846779..0000000000 --- a/vsts/pipelines/templates/_releaseBaseImagesStepTemplate.yml +++ /dev/null @@ -1,69 +0,0 @@ -parameters: - ascName: oryx-new-service-connection - acrDevName: oryxdevmcr - acrProdName: oryxmcr - acrPmeProdName: oryxprodmcr - acrPmeProdSrvConnection: Oryx-PME-ACR-Production - baseImageName: '' # defaults - baseImageRepository: public/oryx/base - -steps: -- checkout: self - clean: true - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- task: Docker@1 - displayName: Container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrDevName }}.azurecr.io - -- task: DownloadBuildArtifacts@0 - displayName: 'Download Artifacts for release' - inputs: - artifactName: drop - -- task: CopyFiles@2 - displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)' - inputs: - SourceFolder: '$(System.ArtifactsDirectory)' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - -- task: Shellpp@0 - displayName: 'Pull and create release tags for PME staging ACR' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/tagBaseImagesForRelease.sh - args: '${{ parameters.baseImageName }} ${{ parameters.acrPmeProdName }}' - -- task: Docker@2 - displayName: Login to production PME ACR - inputs: - command: login - containerRegistry: ${{ parameters.acrPmeProdSrvConnection }} - -- script: echo base image is ${{ parameters.baseImageName }} and repository is ${{ parameters.baseImageRepository }} - -- task: Shellpp@0 - displayName: 'Push images to PME staging ACR' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/pushBaseImagesToRegistry.sh - args: '$(Build.ArtifactStagingDirectory)/drop/images/${{ parameters.baseImageName }}/${{ parameters.acrPmeProdName }}' - -- task: Docker@2 - displayName: Logout from PME ACR - inputs: - command: logout - containerRegistry: ${{ parameters.acrPmeProdSrvConnection }} - -- task: ShellScript@2 - displayName: 'Clean up Docker containers and images' - inputs: - scriptPath: ./vsts/scripts/cleanDocker.sh - condition: true \ No newline at end of file diff --git a/vsts/pipelines/templates/_releaseJobTemplate.yml b/vsts/pipelines/templates/_releaseJobTemplate.yml deleted file mode 100644 index 4064b0cd6e..0000000000 --- a/vsts/pipelines/templates/_releaseJobTemplate.yml +++ /dev/null @@ -1,69 +0,0 @@ -jobs: -- job: Release_BuildImages - displayName: Push Build Image to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=ReleaseBuildImages;]true" - echo "##vso[task.setvariable variable=ReleaseRuntimeImages;]false" - displayName: 'Set variables' - - - template: _releaseStepTemplate.yml - -- job: Release_RuntimeImages - displayName: Push Runtime Images to MCR - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 400 - steps: - - script: | - echo "##vso[task.setvariable variable=ReleaseBuildImages;]false" - echo "##vso[task.setvariable variable=ReleaseRuntimeImages;]true" - displayName: 'Set variables' - - - template: _releaseStepTemplate.yml - -- job: Release_GitHub - displayName: Create GitHub release - dependsOn: - - Release_BuildImages - - Release_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - - steps: - - task: DownloadPipelineArtifact@2 - displayName: 'Download Oryx binaries to publish to release' - inputs: - artifactName: 'signed_binaries' - path: $(Build.SourcesDirectory)/artifacts - - - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - - - template: _setReleaseTag.yml - - - task: GitHubRelease@0 - displayName: 'GitHub release (create)' - inputs: - gitHubConnection: 'Oryx-GitHub' - repositoryName: Microsoft/Oryx - tagSource: manual - tag: '$(RELEASE_TAG_NAME)' - assets: $(Build.SourcesDirectory)/artifacts/oryx_linux_x64.tar.gz \ No newline at end of file diff --git a/vsts/pipelines/templates/_releaseStepTemplate.yml b/vsts/pipelines/templates/_releaseStepTemplate.yml deleted file mode 100644 index 5288df3fe1..0000000000 --- a/vsts/pipelines/templates/_releaseStepTemplate.yml +++ /dev/null @@ -1,150 +0,0 @@ -parameters: - ascName: oryx-new-service-connection - acrDevName: oryxdevmcr.azurecr.io - acrProdName: oryxmcr - acrPmeProdName: oryxprodmcr - acrPmeProdSrvConnection: Oryx-PME-ACR-Production - prodImageName: oryxmcr.azurecr.io/public/oryx - -steps: - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- script: | - if [ "$(ReleaseBuildImages)" != "true" ] && [ "$(ReleaseRuntimeImages)" != "true" ] - then - echo "Invalid configuration." - echo "Variable 'ReleaseBuildImages' or 'ReleaseRuntimeImages' needs to be 'true' to run this" - exit 1 - fi - displayName: 'Validate release pipeline run' - -- script: | - docker -v - echo "Installing Docker CE version 24.0.5................" - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt update - sudo apt-get install docker-ce=5:24.0.5~3-0~ubuntu-focal docker-ce-cli=5:24.0.5~3-0~ubuntu-focal containerd.io - echo "After installing ................" - docker -v - displayName: 'Install Docker 24.0.5' - condition: true - -- script: | - sudo rm -rf /usr/share/dotnet - sudo rm -rf /opt/ghc - sudo rm -rf "/usr/local/share/boost" - sudo rm -rf "$AGENT_TOOLSDIRECTORY" - docker images && docker system prune -fa && docker images && echo - displayName: 'clean docker images' - -- script: | - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - sudo apt update - sudo apt-get install docker-ce=5:24.0.5~3-0~ubuntu-focal docker-ce-cli=5:24.0.5~3-0~ubuntu-focal containerd.io - docker -v - displayName: 'Install Docker 24.0.5' - -- checkout: self - clean: true - -- task: Docker@1 - displayName: Container registry login - inputs: - command: login - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrDevName }} - -- task: DownloadBuildArtifacts@0 - displayName: 'Download Artifacts for release' - inputs: - artifactName: drop - -- task: CopyFiles@2 - displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)' - inputs: - SourceFolder: '$(System.ArtifactsDirectory)' - TargetFolder: '$(Build.ArtifactStagingDirectory)' - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- template: _setReleaseTag.yml - -- task: Shellpp@0 - displayName: 'Pull and create release tags for build images' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/tagBuildImagesForRelease.sh - args: - condition: and(succeeded(), eq(variables['ReleaseBuildImages'], 'true')) - -- task: Shellpp@0 - displayName: 'Pull and create release tags for runtime images' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/tagRunTimeImagesForRelease.sh - condition: and(succeeded(), eq(variables['ReleaseRuntimeImages'], 'true')) - -- task: Shellpp@0 - displayName: 'Pull and create release tags for CLI images' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/tagCliImagesForRelease.sh - condition: and(succeeded(), eq(variables['ReleaseBuildImages'], 'true')) - -- task: Docker@1 - displayName: Dev Container registry logout - inputs: - command: logout - azureSubscriptionEndpoint: ${{ parameters.ascName }} - azureContainerRegistry: ${{ parameters.acrDevName }} - -- task: Docker@2 - displayName: Login to PME ACR - inputs: - command: login - containerRegistry: ${{ parameters.acrPmeProdSrvConnection }} - -- task: Shellpp@0 - displayName: 'Push build images to PME staging ACR' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/pushImagesToRegistry.sh - args: '$(Build.ArtifactStagingDirectory)/drop/images/${{ parameters.acrPmeProdName }}-build-images-mcr.txt' - condition: and(succeeded(), eq(variables['ReleaseBuildImages'], 'true')) - -- task: Shellpp@0 - displayName: 'Push CLI image to PME staging ACR' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/pushImagesToRegistry.sh - args: '$(Build.ArtifactStagingDirectory)/drop/images/${{ parameters.acrPmeProdName }}-cli-images-mcr.txt' - condition: and(succeeded(), eq(variables['ReleaseBuildImages'], 'true')) - -- task: Shellpp@0 - displayName: 'Push runtime images to PME staging ACR' - inputs: - type: FilePath - scriptPath: ./vsts/scripts/pushImagesToRegistry.sh - args: '$(Build.ArtifactStagingDirectory)/drop/images/${{ parameters.acrPmeProdName }}-runtime-images-mcr.txt' - condition: and(succeeded(), eq(variables['ReleaseRuntimeImages'], 'true')) - -- task: Docker@2 - displayName: Logout from PME ACR - inputs: - command: logout - containerRegistry: '${{ parameters.acrPmeProdSrvConnection }}' - -- task: ShellScript@2 - displayName: 'Clean up Docker containers and images' - inputs: - scriptPath: ./vsts/scripts/cleanDocker.sh - condition: true \ No newline at end of file diff --git a/vsts/pipelines/templates/_securityChecks.yml b/vsts/pipelines/templates/_securityChecks.yml deleted file mode 100644 index e5ab02583a..0000000000 --- a/vsts/pipelines/templates/_securityChecks.yml +++ /dev/null @@ -1,84 +0,0 @@ -steps: -- checkout: self - clean: true - -- task: securedevelopmentteam.vss-secure-development-tools.build-task-policheck.PoliCheck@1 - displayName: 'Run PoliCheck' - inputs: - targetType: F - condition: always() - -- task: securedevelopmentteam.vss-secure-development-tools.build-task-credscan.CredScan@2 - displayName: 'Run CredScan' - inputs: - debugMode: false - condition: always() - -- task: NuGetToolInstaller@1 - inputs: - versionSpec: 5.8.x - -- task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - -- script: | - dotnet --version && dotnet msbuild -version && echo - displayName: 'Print dotnet and msbuild version' - -- task: NuGetCommand@2 - displayName: 'Run "nuget restore" on Oryx solution' - inputs: - command: 'restore' - restoreSolution: '$(Build.SourcesDirectory)\Oryx.sln' - -- task: VSBuild@1 - displayName: 'Build the Oryx solution' - inputs: - solution: '$(Build.SourcesDirectory)\Oryx.sln' - configuration: 'debug' - createLogFile: true - logFileVerbosity: diagnostic - -- task: PowerShell@2 - displayName: 'Wait 30 seconds after building solution' - inputs: - targetType: 'inline' - script: 'Start-Sleep -Seconds 30' - -- task: securedevelopmentteam.vss-secure-development-tools.build-task-roslynanalyzers.RoslynAnalyzers@2 - displayName: 'Run Roslyn Analyzers' - condition: always() - -- task: securedevelopmentteam.vss-secure-development-tools.build-task-binskim.BinSkim@3 - displayName: 'Run BinSkim ' - inputs: - arguments: 'analyze Microsoft.Oryx*.dll --recurse --output $(Build.BinariesDirectory)\binskim.sarif --verbose' - condition: always() - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- task: securedevelopmentteam.vss-secure-development-tools.build-task-postanalysis.PostAnalysis@1 - displayName: 'Post Analysis' - inputs: - BinSkim: true - CredScan: true - PoliCheck: true - RoslynAnalyzers: true - continueOnError: false - -- task: AntiMalware@3 - displayName: 'Run Antimalware Scan' - inputs: - InputType: 'Basic' - ScanType: 'CustomScan' - EnableServices: true - TreatSignatureUpdateFailureAs: 'Warning' - SupportLogOnError: false - FileDirPath: '$(Build.StagingDirectory)' - SignatureFreshness: 'UpToDate' - TreatStaleSignatureAs: 'Warning' \ No newline at end of file diff --git a/vsts/pipelines/templates/_setReleaseTag.yml b/vsts/pipelines/templates/_setReleaseTag.yml deleted file mode 100644 index e08e805b14..0000000000 --- a/vsts/pipelines/templates/_setReleaseTag.yml +++ /dev/null @@ -1,19 +0,0 @@ -steps: -- task: DownloadPipelineArtifact@2 - displayName: 'Download artifact file having release tag name' - inputs: - targetPath: $(Build.SourcesDirectory)/artifacts/releaseTag - artifactName: 'releaseTag' - -- script: | - set -e - file="$(Build.SourcesDirectory)/artifacts/releaseTag/releaseTag.txt" - echo "Release tag name is:" - cat "$file" - tagName="$(Build.BuildNumber)" - if [ -f "$file" ]; then - tagName=`cat $file` - fi - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$tagName" - displayName: 'Read release tag name from artifact file and set it as environment variable' - name: setReleaseTag \ No newline at end of file diff --git a/vsts/pipelines/templates/_signBinary.yml b/vsts/pipelines/templates/_signBinary.yml deleted file mode 100644 index bd27bef72e..0000000000 --- a/vsts/pipelines/templates/_signBinary.yml +++ /dev/null @@ -1,111 +0,0 @@ -steps: -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- powershell: | - Write-Host "##vso[task.setvariable variable=SignType;isOutput=true]real" - name: setSignTypeVariable - displayName: 'Set sign binary variable' - condition: > - and(in(variables['Build.Reason'], 'Schedule', 'Manual'), eq(variables['Build.DefinitionName'], 'Oryx-CI'), - or( - startsWith(variables['Build.SourceBranch'], 'refs/heads/main'), - startsWith(variables['Build.SourceBranch'], 'refs/heads/patch/'), - startsWith(variables['Build.SourceBranch'],'refs/heads/exp/' ))) - -- script: | - echo $(setSignTypeVariable.SignType) - name: SignType - -- task: NuGetToolInstaller@0 - displayName: 'Use NuGet 4.6.2' - inputs: - versionSpec: 4.6.2 - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 - displayName: 'Install Signing Plugin' - inputs: - signType: '$(setSignTypeVariable.SignType)' - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: UseDotNet@2 - displayName: 'Use .NET Core sdk 7.x' - inputs: - version: 7.0.306 - -- powershell: | - Write-Host "Setting up git_commit and build_number as env variable" - $env:GIT_COMMIT=$(git rev-parse HEAD) - $env:BUILD_NUMBER=$env:BUILD_BUILDNUMBER - dotnet publish -r linux-x64 -c Release src\BuildScriptGeneratorCLI\BuildScriptGeneratorCli.csproj - dotnet publish -r linux-x64 -c Release src\BuildServer\BuildServer.csproj - displayName: 'dotnet publish and after setting git_commit and build_number as env variable' - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: VSBuild@1 - displayName: 'Sign Oryx Binaries' - inputs: - solution: 'src/BuildScriptGeneratorCli/Oryx_sign.signproj' - msbuildArgs: '/t:SignFiles /p:RuntimeIdentifier=linux-x64 /p:MicroBuild_SigningEnabled=true' - configuration: '$(BuildConfiguration)' - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: VSBuild@1 - displayName: 'Sign Oryx Build Server Binaries' - inputs: - solution: 'src/BuildServer/BuildServer.signproj' - msbuildArgs: '/t:SignFiles /p:RuntimeIdentifier=linux-x64 /p:MicroBuild_SigningEnabled=true' - configuration: '$(BuildConfiguration)' - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: ArchiveFiles@2 - displayName: 'Create compressed file of Oryx binaries' - inputs: - rootFolderOrFile: 'src\BuildScriptGeneratorCli\bin\$(BuildConfiguration)\linux-x64\publish' - includeRootFolder: false - archiveType: tar - tarCompression: 'gz' - archiveFile: '$(Build.ArtifactStagingDirectory)/oryx_linux_x64.tar.gz' - replaceExistingArchive: true - verbose: true - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: ArchiveFiles@2 - displayName: 'Create compressed file of Oryx Build Server binaries' - inputs: - rootFolderOrFile: 'src\BuildServer\bin\$(BuildConfiguration)\linux-x64\publish' - includeRootFolder: false - archiveType: tar - tarCompression: 'gz' - archiveFile: '$(Build.ArtifactStagingDirectory)/oryx_buildServer_linux_x64.tar.gz' - replaceExistingArchive: true - verbose: true - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: CopyFiles@2 - displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/binaries' - inputs: - SourceFolder: 'src/BuildScriptGeneratorCli/bin/$(BuildConfiguration)/linux-x64/publish' - Contents: '**\*' - TargetFolder: '$(Build.ArtifactStagingDirectory)/binaries' - CleanTargetFolder: true - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: CopyFiles@2 - displayName: 'Copy BuildServer Files to: $(Build.ArtifactStagingDirectory)/binaries' - inputs: - SourceFolder: 'src/BuildServer/bin/$(BuildConfiguration)/linux-x64/publish' - Contents: '**\*' - TargetFolder: '$(Build.ArtifactStagingDirectory)/binaries' - CleanTargetFolder: false - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) - -- task: PublishPipelineArtifact@0 - displayName: 'Publish Pipeline Artifact' - inputs: - artifactName: 'signed_binaries' - targetPath: '$(Build.ArtifactStagingDirectory)' - condition: and(succeeded(), eq(variables['setSignTypeVariable.SignType'], 'real')) \ No newline at end of file diff --git a/vsts/pipelines/templates/_signBinaryDetector.yml b/vsts/pipelines/templates/_signBinaryDetector.yml deleted file mode 100644 index 368d021982..0000000000 --- a/vsts/pipelines/templates/_signBinaryDetector.yml +++ /dev/null @@ -1,71 +0,0 @@ -steps: -- checkout: self - clean: true - -- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 - displayName: 'Component Detection - OSS Compliance' - inputs: - ignoreDirectories: '$(Build.SourcesDirectory)/tests' - -- task: ms-vseng.MicroBuildTasks.30666190-6959-11e5-9f96-f56098202fef.MicroBuildSigningPlugin@1 - displayName: 'Install Signing Plugin' - inputs: - signType: 'Real' - -- task: UseDotNet@2 - displayName: 'Use .NET Core SDK 7.x' - inputs: - version: 7.0.306 - -- powershell: | - Write-Host "Setting up git_commit and build_number as env variable" - $env:GIT_COMMIT=$(git rev-parse HEAD) - $env:BUILD_NUMBER=$env:BUILD_BUILDNUMBER - $projectFile="src\Detector\Detector.csproj" - - $env:SIGN_PACKAGE="true" - dotnet build Detector.sln -c Release - dotnet restore src\Detector\Detector.signproj - displayName: 'Build Detector.sln' - -- task: VSBuild@1 - displayName: 'Sign Oryx Binaries' - inputs: - solution: 'src/Detector/Detector.signproj' - msbuildArgs: '/t:SignFiles /p:MicroBuild_SigningEnabled=true' - configuration: '$(BuildConfiguration)' - -- powershell: | - Write-Host "Running 'dotnet pack'..." - dotnet pack --no-build --include-symbols -c Release src\Detector\Detector.csproj - displayName: 'Re-package already generated NuGet packages with signed binaries' - -- task: VSBuild@1 - displayName: 'Sign NuGet packages' - inputs: - solution: 'vsts/nugetpackages.signproj' - msbuildArgs: '/t:SignFiles /p:MicroBuild_SigningEnabled=true' - -- task: NuGetToolInstaller@1 - inputs: - versionSpec: '5.6' - -- powershell: | - . $(Build.SourcesDirectory)\build\detector\__detectorNugetPackagesVersions.ps1 - cd "artifacts\packages" - nuget verify -signature ` - -CertificateFingerprint 3F9001EA83C560D712C24CF213C3D312CB3BFF51EE89435D3430BD06B5D0EECE ` - Microsoft.Oryx.Detector.$VERSION.nupkg ` - -verbosity detailed - displayName: 'Verify nuget packages' - -- powershell: | - Copy-Item -Path artifacts\packages -Destination $(Build.ArtifactStagingDirectory)\packages -Recurse - displayName: 'Copying nuget packages to artifact staging directory' - -- task: PublishPipelineArtifact@0 - displayName: 'Publish Pipeline Artifact' - inputs: - artifactName: 'detector_signed' - targetPath: '$(Build.ArtifactStagingDirectory)' - \ No newline at end of file diff --git a/vsts/pipelines/templates/integrationTests/_dotnetcoreIntegrationJobTemplate.yml b/vsts/pipelines/templates/integrationTests/_dotnetcoreIntegrationJobTemplate.yml deleted file mode 100644 index 55a82b60bd..0000000000 --- a/vsts/pipelines/templates/integrationTests/_dotnetcoreIntegrationJobTemplate.yml +++ /dev/null @@ -1,52 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: testMappings - type: object - default: - - category: '6.0' - buildTag: 'debian-buster' - - category: '6.0' - buildTag: 'github-actions-debian-buster' - - category: '7.0' - buildTag: 'github-actions-debian-buster' - - category: '8.0' - buildTag: 'github-actions-debian-bookworm' - - category: 'dynamic' - buildTag: 'debian-buster' - - category: 'dynamic' - buildTag: 'github-actions-debian-buster' - -jobs: -- ${{ each mapping in parameters.testMappings }}: - - job: - displayName: 'Run .NET Core ${{ mapping.category }} Integration Tests using build image tag ${{ mapping.buildTag }}' - dependsOn: - - Job_BuildImage_Latest - - Job_BuildImage_GithubActions - - Job_Buster_RuntimeImages - - Job_Bullseye_RuntimeImages - - Job_Bookworm_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestIntegrationCaseFilter;]category=dotnetcore-${{ mapping.category }}&build-image=${{ mapping.buildTag }}" - echo "##vso[task.setvariable variable=TestIntegration;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]false" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: ../_setReleaseTag.yml - - template: ../_buildTemplate.yml \ No newline at end of file diff --git a/vsts/pipelines/templates/integrationTests/_golangIntegrationJobTemplate.yml b/vsts/pipelines/templates/integrationTests/_golangIntegrationJobTemplate.yml deleted file mode 100644 index 2c620f7126..0000000000 --- a/vsts/pipelines/templates/integrationTests/_golangIntegrationJobTemplate.yml +++ /dev/null @@ -1,51 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: testMappings - type: object - default: - - category: '1.17' - buildTag: 'full-debian-buster' - - category: '1.17' - buildTag: 'full-debian-bullseye' - - category: '1.18' - buildTag: 'full-debian-buster' - - category: '1.18' - buildTag: 'full-debian-bullseye' - - category: '1.19' - buildTag: 'full-debian-buster' - - category: '1.19' - buildTag: 'full-debian-bullseye' - -jobs: -- ${{ each mapping in parameters.testMappings }}: - - job: - displayName: 'Run Golang ${{ mapping.category }} Integration Tests using build image tag ${{ mapping.buildTag }}' - dependsOn: - - Job_BuildImage_Full - - Job_Buster_RuntimeImages - - Job_Bullseye_RuntimeImages - - Job_Bookworm_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestIntegrationCaseFilter;]category=golang-${{ mapping.category }}&build-image=${{ mapping.buildTag }}" - echo "##vso[task.setvariable variable=TestIntegration;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]false" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: ../_setReleaseTag.yml - - template: ../_buildTemplate.yml \ No newline at end of file diff --git a/vsts/pipelines/templates/integrationTests/_nodeIntegrationJobTemplate.yml b/vsts/pipelines/templates/integrationTests/_nodeIntegrationJobTemplate.yml deleted file mode 100644 index cc99344a3d..0000000000 --- a/vsts/pipelines/templates/integrationTests/_nodeIntegrationJobTemplate.yml +++ /dev/null @@ -1,50 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: testMappings - type: object - default: - - category: '14-gh-buster' - buildTag: 'github-actions-debian-buster' - - category: '16' - buildTag: 'debian-buster' - - category: '18' - buildTag: 'github-actions-debian-bullseye' - - category: '20' - buildTag: 'github-actions-debian-bookworm' - - category: '20-bullseye' - buildTag: 'github-actions-debian-bullseye' - -jobs: -- ${{ each mapping in parameters.testMappings }}: - - job: - displayName: 'Run Node ${{ mapping.category }} Integration Tests using build image tag ${{ mapping.buildTag }}' - dependsOn: - - Job_BuildImage_Latest - - Job_BuildImage_GithubActions - - Job_Buster_RuntimeImages - - Job_Bullseye_RuntimeImages - - Job_Bookworm_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestIntegrationCaseFilter;]category=node-${{ mapping.category }}&build-image=${{ mapping.buildTag }}" - echo "##vso[task.setvariable variable=TestIntegration;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]false" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: ../_setReleaseTag.yml - - template: ../_buildTemplate.yml \ No newline at end of file diff --git a/vsts/pipelines/templates/integrationTests/_phpIntegrationJobTemplate.yml b/vsts/pipelines/templates/integrationTests/_phpIntegrationJobTemplate.yml deleted file mode 100644 index 4b0c85605f..0000000000 --- a/vsts/pipelines/templates/integrationTests/_phpIntegrationJobTemplate.yml +++ /dev/null @@ -1,60 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: testMappings - type: object - default: - - category: '7.4' - buildTag: 'github-actions-debian-buster' - - category: '8.0' - buildTag: 'github-actions-debian-buster' - - category: '8.0' - buildTag: 'github-actions-debian-bullseye' - - category: '8.1' - buildTag: 'github-actions-debian-buster' - - category: '8.1' - buildTag: 'github-actions-debian-bullseye' - - category: '8.2' - buildTag: 'github-actions-debian-buster' - - category: '8.2' - buildTag: 'github-actions-debian-bullseye' - - category: '8.3' - buildTag: 'github-actions-debian-buster' - - category: '8.3' - buildTag: 'github-actions-debian-bullseye' - - category: '8.3' - buildTag: 'github-actions-debian-bookworm' - -jobs: -- ${{ each mapping in parameters.testMappings }}: - - job: - displayName: 'Run PHP ${{ mapping.category }} Integration Tests using build image tag ${{ mapping.buildTag }}' - dependsOn: - - Job_BuildImage_Latest - - Job_BuildImage_GithubActions - - Job_Buster_RuntimeImages - - Job_Bullseye_RuntimeImages - - Job_Bookworm_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestIntegrationCaseFilter;]category=php-${{ mapping.category }}&build-image=${{ mapping.buildTag }}" - echo "##vso[task.setvariable variable=TestIntegration;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]false" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: ../_setReleaseTag.yml - - template: ../_buildTemplate.yml \ No newline at end of file diff --git a/vsts/pipelines/templates/integrationTests/_pythonIntegrationJobTemplate.yml b/vsts/pipelines/templates/integrationTests/_pythonIntegrationJobTemplate.yml deleted file mode 100644 index 4361135a71..0000000000 --- a/vsts/pipelines/templates/integrationTests/_pythonIntegrationJobTemplate.yml +++ /dev/null @@ -1,58 +0,0 @@ -parameters: - - name: storageAccountUrl - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: testMappings - type: object - default: - - category: '3.7' - buildTag: 'github-actions-debian-bullseye' - - category: '3.8' - buildTag: 'github-actions-debian-bullseye' - - category: '3.9' - buildTag: 'debian-buster' - - category: '3.9' - buildTag: 'github-actions-debian-buster' - - category: '3.10' - buildTag: 'github-actions-debian-bullseye' - - category: '3.11' - buildTag: 'github-actions-debian-bullseye' - - category: '3.11' - buildTag: 'github-actions-debian-bookworm' - - category: '3.12' - buildTag: 'github-actions-debian-bullseye' - - category: '3.12' - buildTag: 'github-actions-debian-bookworm' - -jobs: -- ${{ each mapping in parameters.testMappings }}: - - job: - displayName: 'Run Python ${{ mapping.category }} Integration Tests using build image tag ${{ mapping.buildTag }}' - dependsOn: - - Job_BuildImage_Latest - - Job_BuildImage_GithubActions - - Job_Buster_RuntimeImages - - Job_Bullseye_RuntimeImages - - Job_Bookworm_RuntimeImages - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - skipComponentGovernanceDetection: true - timeoutInMinutes: 300 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]false" - echo "##vso[task.setvariable variable=BuildRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestBuildImages;]false" - echo "##vso[task.setvariable variable=TestRuntimeImages;]false" - echo "##vso[task.setvariable variable=TestIntegrationCaseFilter;]category=python-${{ mapping.category }}&build-image=${{ mapping.buildTag }}" - echo "##vso[task.setvariable variable=TestIntegration;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]false" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: ../_setReleaseTag.yml - - template: ../_buildTemplate.yml \ No newline at end of file diff --git a/vsts/pipelines/testACRImgUpload.yml b/vsts/pipelines/testACRImgUpload.yml deleted file mode 100644 index ff79d03797..0000000000 --- a/vsts/pipelines/testACRImgUpload.yml +++ /dev/null @@ -1,28 +0,0 @@ -parameters: - - name: nightlyTagName - displayName: The tag of image built by nightly pipeline - - name: containerRegistryName - displayName: Container registry name for pushing built image - type: string - default: oryxtestmcr.azurecr.io - -resources: -- repo: self - fetchDepth: 15 - -variables: - group: Oryx - Packaging.EnableSBOMSigning: true - -stages: - - stage: Copy - displayName: Copy Stage - - jobs: - - job: Start_Copy - steps: - - template: templates/_copyImgFromDevToTest.yml - parameters: - nightlyTag: ${{ parameters.nightlyTagName }} - -trigger: none \ No newline at end of file diff --git a/vsts/pipelines/validation-detector.yml b/vsts/pipelines/validation-detector.yml deleted file mode 100644 index 3cd46a4153..0000000000 --- a/vsts/pipelines/validation-detector.yml +++ /dev/null @@ -1,22 +0,0 @@ -# specific branch -pr: - paths: - exclude: - - /* - include: - - Detector.sln - - src/Detector/* - - tests/Detector.Tests/* - - vsts/nugetpackages.signproj - - vsts/pipelines/validation-detector.yml - -jobs: -- job: Job_Detector - displayName: Detector Validation - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - timeoutInMinutes: 480 - steps: - - template: templates/_buildTemplateDetector.yml \ No newline at end of file diff --git a/vsts/pipelines/validation.yml b/vsts/pipelines/validation.yml deleted file mode 100644 index a7afdcede7..0000000000 --- a/vsts/pipelines/validation.yml +++ /dev/null @@ -1,171 +0,0 @@ -parameters: - - name: storageAccountUrl - displayName: SDK storage account URL for testing - type: string - default: https://oryxsdksstaging.blob.core.windows.net - - name: buildImages - type: object - default: - - - key: Latest - value: latest - - - key: LtsVersions - value: ltsversions - - - key: Jamstack - value: jamstack - - - key: GithubActions - value: githubactions - - - key: VsoFocal - value: vso-focal - - - key: VsoBullseye - value: vso-bullseye - - - key: Full - value: full - - - key: Cli - value: cli-stretch - - - key: CliBuster - value: cli-buster - - - key: CliBullseye - value: cli-bullseye - - - key: CliBuilderBullseye - value: cli-builder-bullseye - - - key: Buildpack - value: buildpack - -resources: -- repo: self - fetchDepth: 15 - -variables: - group: Oryx - Packaging.EnableSBOMSigning: true - -jobs: -- job: Job_Security - displayName: Security - pool: - name: Azure Pipelines - vmImage: windows-2022 - steps: - - template: templates/_securityChecks.yml - -- ${{ each buildImage in parameters.buildImages }}: - - job: Job_BuildImage_${{ buildImage.key }} - displayName: Build and Test Build ${{ buildImage.key }} Image - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - - group: Oryx - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildBuildImages;]true" - echo "##vso[task.setvariable variable=TestBuildImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - if [[ "${{ buildImage.value }}" =~ "cli-builder" ]]; then - echo "##vso[task.setvariable variable=PushBuilderImages;]true" - fi - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: ${{ buildImage.value }} - -# commented out temporarily -# - job: Job_BuilderImages -# displayName: Build Builder Images -# pool: -# name: AzurePipelines-EO -# demands: -# - ImageOverride -equals AzurePipelinesUbuntu20.04compliant -# timeoutInMinutes: 480 -# steps: -# - template: templates/_builderTemplate.yml -# dependsOn: Job_BuildImage_CliBuilderBullseye - -- job: Job_Buster_RuntimeImages - displayName: Build and Test Buster Runtime Images - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - - group: Oryx - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: buster - -- job: Job_Bullseye_RuntimeImages - displayName: Build and Test Bullseye Runtime Images - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - - group: Oryx - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: bullseye - -- job: Job_Bookworm_RuntimeImages - displayName: Build and Test Bookworm Runtime Images - pool: - name: AzurePipelines-EO - demands: - - ImageOverride -equals AzurePipelinesUbuntu20.04compliant - variables: - - group: Oryx - timeoutInMinutes: 480 - steps: - - script: | - echo "##vso[task.setvariable variable=BuildRuntimeImages;]true" - echo "##vso[task.setvariable variable=TestRuntimeImages;]true" - echo "##vso[task.setvariable variable=PushBuildImages;]false" - echo "##vso[task.setvariable variable=PushRuntimeImages;]false" - echo "##vso[task.setvariable variable=EmbedBuildContextInImages;]true" - echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$(Build.BuildNumber)" - echo "##vso[task.setvariable variable=storageAccountUrl;]${{ parameters.storageAccountUrl }}" - displayName: 'Set variables' - - template: templates/_buildTemplate.yml - parameters: - imageType: bookworm - -trigger: none \ No newline at end of file diff --git a/vsts/scripts/cleanDevAcr.sh b/vsts/scripts/cleanDevAcr.sh deleted file mode 100755 index 21a6a123c2..0000000000 --- a/vsts/scripts/cleanDevAcr.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r ACR_NAME='oryxdevmcr' -declare -r AZ_NAME_OUTPUT_PARAMS="--name $ACR_NAME --output tsv" - -if [[ "$1" == "--yes" ]]; then - YES="$1" -fi - -# Prepare an array with all repository names in the registry -echo "Active subscription: `az account show --query 'name'`" -REPOS=(`az acr repository list $AZ_NAME_OUTPUT_PARAMS`) -echo "Found ${#REPOS[@]} repositories in ACR instance '$ACR_NAME'" -echo - -datecmd='date' -if [[ "$OSTYPE" == "darwin"* ]]; then datecmd='gdate'; fi - -tsLimit=`$datecmd --iso-8601=seconds -d '2 months ago'` -declare -r azQuery="[?timestamp<=\`$tsLimit\`].digest" - -for repo in "${REPOS[@]}" -do - echo "Fetching manifests in repository '$repo'..." - digests=(`az acr repository show-manifests $AZ_NAME_OUTPUT_PARAMS --repository $repo --orderby time_asc --query "$azQuery"`) - - echo "Deleting ${#digests[@]} images created before '$tsLimit' in repository '$repo'..." - for digest in "${digests[@]}" - do - az acr repository delete --name $ACR_NAME --image "$repo@$digest" $YES - echo "> Deleted $digest" - done - echo -done diff --git a/vsts/scripts/cleanDocker.sh b/vsts/scripts/cleanDocker.sh deleted file mode 100644 index 4a6c2dbadf..0000000000 --- a/vsts/scripts/cleanDocker.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -declare -r BUILD_NUMBER="$BUILD_BUILDNUMBER" -declare -r DOCKER_SYSTEM_PRUNE="${ORYX_DOCKER_SYSTEM_PRUNE:-false}" - -echo -echo "Printing all running containers and stopped containers" -echo -docker ps -a -echo -echo "Kill all running containers and delete all stopped containers" -echo -docker kill $(docker ps -q) -docker rm -f $(docker ps -a -q) - -function UntagImages() { - local imagePattern=$1 - local imagesToUntag=$(docker images --filter=reference="$imagePattern" --format "{{.Repository}}:{{.Tag}}") - - echo - echo "Found following images having the pattern '$imagePattern'. Untagging them ..." - echo $imagesToUntag - echo - - if [ ! -z "$imagesToUntag" ] - then - docker rmi -f $imagesToUntag - fi -} - -echo -echo "Current list of docker images:" -echo -docker images - -# An image that is built in our pipelines is tagged with 'latest' and 'build number'. -# The following is to untag an image with the 'build number' tag so that when the next time -# images are built, the older images can become dangled which can later be cleaned up. -# -# **NOTE** -# - We still keep the tags of the following pattern because we still need some cache so that next builds are faster -# a. oryxdevmcr.azurecr.io/public/oryx/*:latest -# - We should untag these images only after they have been pushed to a remote repository. -UntagImages "alpine" -UntagImages "test-*" -UntagImages "oryxdevms/*:*.*" -UntagImages "oryxdevms/*:latest" -UntagImages "oryxtests/*:latest" -UntagImages "oryxprod/*:latest" -UntagImages "oryxprod/*:*.*" -UntagImages "terrapindev.azurecr.io/*" -UntagImages "terraprodwus2registry.azurecr.io/*" -UntagImages "oryxmcr.azurecr.io/public/oryx/*:latest" -UntagImages "oryxmcr.azurecr.io/public/oryx/*:*.*" -UntagImages "mcr.microsoft.com/oryx/*:20190417.1" -UntagImages "mcr.microsoft.com/oryx/*:20190506.1" -UntagImages "mcr.microsoft.com/oryx/*:20190506.2" -UntagImages "mcr.microsoft.com/oryx/*:20190506.3" -UntagImages "mcr.microsoft.com/oryx/*:20190506.4" -UntagImages node:4.4.7 -UntagImages node:4.5.0 -UntagImages node:4.8.7 -UntagImages node:6.2.2 -UntagImages node:6.6.0 -UntagImages node:6.9.5 -UntagImages node:6.10.3 -UntagImages node:6.11.5 -UntagImages node:8.0.0 -UntagImages node:8.1.4 -UntagImages node:8.2.1 -UntagImages node:8.8.1 -UntagImages node:8.9.4 - -echo -echo "Updated list of docker images:" -echo -docker images - -echo -echo "Cleanup: Run 'docker system prune': $DOCKER_SYSTEM_PRUNE" -if [ "$DOCKER_SYSTEM_PRUNE" == "true" ] -then - docker system prune -f - - echo - echo "Updated list of docker images:" - echo - docker images -fi \ No newline at end of file diff --git a/vsts/scripts/copyAllBlobsToProdStorageAccount.sh b/vsts/scripts/copyAllBlobsToProdStorageAccount.sh deleted file mode 100644 index 7b440b82e2..0000000000 --- a/vsts/scripts/copyAllBlobsToProdStorageAccount.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -ex - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/platforms/__common.sh - -azCopyDir="/tmp/azcopy-tool" - -function blobContainerExistsInProd() { - local containerName="$1" - local exitCode=1 - curl -I "$PROD_SDK_STORAGE_BASE_URL/$containerName?restype=container" 2> /tmp/curlError.txt 1> /tmp/curlOut.txt - grep "HTTP/1.1 200 OK" /tmp/curlOut.txt &> /dev/null - exitCode=$? - rm -f /tmp/curlOut.txt - rm -f /tmp/curlError.txt - if [ $exitCode -eq 0 ]; then - return 0 - else - return 1 - fi -} - -function copyBlobContainerToProd() { - set +x - local platformName="$1" - - if shouldOverwriteSdk || shouldOverwritePlatformSdk $platformName; then - echo - echo "Overwriting blob container '$platformName' in storage account '$destinationSdk'." - # azcopy copy [source] [destination] [flags] - if [ $dryRun == "False" ] ; then - "$azCopyDir/azcopy" copy \ - "$sourceSdk/$platformName$sasToken" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" --overwrite true --recursive - else - "$azCopyDir/azcopy" copy \ - "$sourceSdk/$platformName$sasToken" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" --overwrite true --recursive --dry-run - fi - elif blobContainerExistsInProd $platformName; then - echo - echo "Blob container '$platformName' already exists in Prod storage account. Skipping copying it..." - else - echo - echo "Blob container '$platformName' does not exist in Prod. Copying it from $sourceSdk..." - # azcopy copy [source] [destination] [flags] - if [ $dryRun == "False" ] ; then - "$azCopyDir/azcopy" copy \ - "$sourceSdk/$platformName$sasToken" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" --overwrite false --recursive - else - "$azCopyDir/azcopy" copy \ - "$sourceSdk/$platformName$sasToken" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" --overwrite false --recursive --dry-run - fi - fi - set -x -} - -if [ ! -f "$azCopyDir/azcopy" ]; then - curl -SL https://aka.ms/downloadazcopy-v10-linux -o /tmp/azcopy_download.tar.gz - tar -xvf /tmp/azcopy_download.tar.gz -C /tmp - rm -rf /tmp/azcopy_download.tar.gz - mkdir -p $azCopyDir - cp /tmp/azcopy_linux_amd64_*/azcopy $azCopyDir - - echo "Version of azcopy tool being used:" - $azCopyDir/azcopy --version -fi - -sourceSdk="" -sasToken="" - -if [ "$1" = $SANDBOX_SDK_STORAGE_BASE_URL ]; then - sourceSdk=$SANDBOX_SDK_STORAGE_BASE_URL - sasToken=$SANDBOX_STORAGE_SAS_TOKEN -elif [ "$1" = $DEV_SDK_STORAGE_BASE_URL ]; then - sourceSdk=$DEV_SDK_STORAGE_BASE_URL - sasToken=$DEV_STORAGE_SAS_TOKEN -elif [ "$1" = $PRIVATE_STAGING_SDK_STORAGE_BASE_URL ]; then - sourceSdk=$PRIVATE_STAGING_SDK_STORAGE_BASE_URL - set +x - sasToken=$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN - set -x -else - echo "Error: $1 is an invalid source storage account url." - exit 1 -fi - -dryRun=$2 -if [ $dryRun != "True" ] && [ $dryRun != "False" ]; then - echo "Error: Dry run must be True or False. Was: '$dryRun'" - exit 1 -fi - -copyBlobContainerToProd "dotnet" -copyBlobContainerToProd "python" -copyBlobContainerToProd "nodejs" -copyBlobContainerToProd "php" -copyBlobContainerToProd "php-composer" -copyBlobContainerToProd "ruby" -copyBlobContainerToProd "java" -copyBlobContainerToProd "maven" -copyBlobContainerToProd "golang" diff --git a/vsts/scripts/copySdksFromProdToStorageAccount.sh b/vsts/scripts/copySdksFromProdToStorageAccount.sh deleted file mode 100644 index aa31a758d8..0000000000 --- a/vsts/scripts/copySdksFromProdToStorageAccount.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -ex - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/platforms/__common.sh - -azCopyDir="/tmp/azcopy-tool" - -function blobContainerExistsInDestination() { - local containerName="$1" - local exitCode=1 - curl -I "$destinationSdkUrl/$containerName?restype=container" 2> /tmp/curlError.txt 1> /tmp/curlOut.txt - grep "HTTP/1.1 200 OK" /tmp/curlOut.txt &> /dev/null - exitCode=$? - rm -f /tmp/curlOut.txt - rm -f /tmp/curlError.txt - if [ $exitCode -eq 0 ]; then - return 0 - else - return 1 - fi -} - -function copyBlobContainerFromProdToDestination() { - set +x - local platformName="$1" - - if [ $overwrite == "True" ] ; then - echo - echo "Overwriting blob container '$platformName' in storage account '$destinationSdkUrl'." - # azcopy copy [source] [destination] [flags] - if [ $dryRun == "False" ] ; then - "$azCopyDir/azcopy" copy \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" \ - "$destinationSdkUrl/$platformName$sasToken" --overwrite true --recursive - else - "$azCopyDir/azcopy" copy \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" \ - "$destinationSdkUrl/$platformName$sasToken" --overwrite true --recursive --dry-run - fi - elif blobContainerExistsInDestination $platformName; then - echo - echo "Blob container '$platformName' already exists in storage account '$destinationSdkUrl'. Skipping copying it..." - else - echo - echo "Blob container '$platformName' does not exist in storage account '$destinationSdkUrl'. Copying it from $PROD_SDK_STORAGE_BASE_URL..." - # azcopy copy [source] [destination] [flags] - if [ $dryRun == "False" ] ; then - "$azCopyDir/azcopy" copy \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" \ - "$destinationSdkUrl/$platformName$sasToken" --overwrite false --recursive - else - "$azCopyDir/azcopy" copy \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName$PROD_STORAGE_SAS_TOKEN" \ - "$destinationSdkUrl/$platformName$sasToken" --overwrite false --recursive --dry-run - fi - fi - set -x -} - -if [ ! -f "$azCopyDir/azcopy" ]; then - curl -SL https://aka.ms/downloadazcopy-v10-linux -o /tmp/azcopy_download.tar.gz - tar -xvf /tmp/azcopy_download.tar.gz -C /tmp - rm -rf /tmp/azcopy_download.tar.gz - mkdir -p $azCopyDir - cp /tmp/azcopy_linux_amd64_*/azcopy $azCopyDir - - echo "Version of azcopy tool being used:" - $azCopyDir/azcopy --version -fi - -destinationSdkUrl="https://$1.blob.core.windows.net" -sasToken="" -set +x - -# case insensitive matching because both secrets and urls are case insensitive -shopt -s nocasematch -if [[ "$destinationSdkUrl" == $SANDBOX_SDK_STORAGE_BASE_URL ]]; then - sasToken=$SANDBOX_STORAGE_SAS_TOKEN -elif [[ "$destinationSdkUrl" == $DEV_SDK_STORAGE_BASE_URL ]]; then - sasToken=$DEV_STORAGE_SAS_TOKEN -elif [[ "$destinationSdkUrl" == $PRIVATE_STAGING_SDK_STORAGE_BASE_URL ]]; then - sasToken=$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN -elif [[ "$destinationSdkUrl" == $PROD_BACKUP_SDK_STORAGE_BASE_URL ]]; then - sasToken=$PROD_BACKUP_STORAGE_SAS_TOKEN -# check if the personal sas token has been found in the oryx key vault -elif [[ "$PERSONAL_STORAGE_SAS_TOKEN" != "\$($1-PERSONAL-STORAGE-SAS-TOKEN)" ]]; then - sasToken=$PERSONAL_STORAGE_SAS_TOKEN -else - echo "Error: $destinationSdkUrl is an invalid destination storage account url." - exit 1 -fi -shopt -u nocasematch -set -x - -dryRun=$2 -if [ $dryRun != "True" ] && [ $dryRun != "False" ]; then - echo "Error: Dry run must be True or False. Was: '$dryRun'" - exit 1 -fi - -overwrite=$3 -if [ $overwrite != "True" ] && [ $overwrite != "False" ]; then - echo "Error: Overwrite must be True or False. Was: '$overwrite'" - exit 1 -fi - -copyBlobContainerFromProdToDestination "dotnet" -copyBlobContainerFromProdToDestination "python" -copyBlobContainerFromProdToDestination "nodejs" -copyBlobContainerFromProdToDestination "php" -copyBlobContainerFromProdToDestination "php-composer" -copyBlobContainerFromProdToDestination "ruby" -copyBlobContainerFromProdToDestination "java" -copyBlobContainerFromProdToDestination "maven" -copyBlobContainerFromProdToDestination "golang" diff --git a/vsts/scripts/createReleaseTag.sh b/vsts/scripts/createReleaseTag.sh deleted file mode 100755 index 97a8c51ff7..0000000000 --- a/vsts/scripts/createReleaseTag.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# branch name is of the format: refs/heads/patch/21090924.1 -replacingText="refs/heads/" -sourceBranch=$(echo "$BUILD_SOURCEBRANCH" | sed -e "s.$replacingText..g") - -tagName="$BUILD_BUILDNUMBER" -if [[ "$sourceBranch" == exp/* ]]; then - tagName="exp-$BUILD_BUILDNUMBER" -elif [[ "$sourceBranch" == patch/* ]]; then - IFS=/ - read -ra branchNameParts <<< "$sourceBranch" - - # Name of the tag which is being patched (ex: 20190730.1) - patchedTagName=${branchNameParts[1]} - - # We want tags for patch releases in the format: 20190730.1-patch1, 20190730.1-patch2 etc. - baseReleaseTagUrl="https://github.com/microsoft/Oryx/releases/tag" - patchNumber=0 - - # Increment patch numbers until we find one for which we have not created a release already - while true; do - patchNumber=$((patchNumber + 1)) - fullPatchTagName="$patchedTagName-patch$patchNumber" - releaseUrl="$baseReleaseTagUrl/$fullPatchTagName" - - curl -I "$releaseUrl" 1> /tmp/createReleaseTag.txt 2> /dev/null - grep "HTTP/1.1 404 Not Found" /tmp/createReleaseTag.txt &> /dev/null - exitCode=$? - rm -f /tmp/createReleaseTag.txt - if [ $exitCode -eq 0 ]; then - tagName="$fullPatchTagName" - break - fi - done -fi - -echo "Setting release tag name to '$tagName'..." -echo "##vso[task.setvariable variable=RELEASE_TAG_NAME;]$tagName" \ No newline at end of file diff --git a/vsts/scripts/generateReleaseNotes.sh b/vsts/scripts/generateReleaseNotes.sh deleted file mode 100644 index 8160fcf3c2..0000000000 --- a/vsts/scripts/generateReleaseNotes.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -# This script reads `./CHANGELOG.md` file and produces a file that is added as a build artifact which -# contains the changes only to a partcular build. -# To achieve this, we use the tags that the release adds to the git repo, and do a `git diff` between the -# changelog file in that tag and HEAD. The output of this diff is later parsed to only output the new lines. -# In order for this script to work, the agent running it should have the full git repo available. - -set -e - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -CHANGELOG_FILE="$DIR/../CHANGELOG.md" - -OUTPUT_FILE=$1 -if [ -z "$OUTPUT_FILE" ]; then - # Create a default file using DevOps' pipeline artifacts directory - OUTPUT_FILE=$BUILD_ARTIFACTSTAGINGDIRECTORY/Release-notes.md -fi - -echo "Release notes will be placed in $OUTPUT_FILE" - -# First, we look for the latest tag that was pushed. Since our builds numbers are lexicographically ordered, -# YYYYMMDD.P, we just take the latest value that starts with a `2` to avoid other tags that might be in the repo. -# Optimistic note: yes, this script will break in year 3000, but we can fix it then. -LAST_TAG=$(git tag --sort=committerdate | tail -n 1) - -if [ -z "$LAST_TAG" ]; then - echo "Couldn't find a base tag, will output the entire file" - # Ignore the lines starting with [//] which we're using as comments. - cat $CHANGELOG_FILE | grep -v -e '^\[//\]' > $OUTPUT_FILE -else - echo "Getting the diff from latest tag, $LAST_TAG" - # Get the diff for the changelog file - # The regex ^+[^+] is used to capture only the added lines, and the [^+], which means "exclude '+', removes the - # lines that git adds to the diff output containing the file name. Finally, we remove the '+' from the beginning - # of the selected lines. - git diff $LAST_TAG HEAD | grep -e ^+[^+] | sed 's/^+//' > $OUTPUT_FILE -fi diff --git a/vsts/scripts/publishFilesToAzureStorage.sh b/vsts/scripts/publishFilesToAzureStorage.sh deleted file mode 100755 index a728016a61..0000000000 --- a/vsts/scripts/publishFilesToAzureStorage.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/platforms/__common.sh -commit=$GIT_COMMIT -storageAccountUrl="$1" - -uploadFiles() { - local platform="$1" - local artifactsDir="$ARTIFACTS_DIR/platformSdks/$platform" - if [ ! -d "$artifactsDir" ]; then - return - fi - - allFiles=$(find $artifactsDir -type f -name '*.tar.gz' -o -name 'defaultVersion.*txt') - for fileToUpload in $allFiles - do - echo "Uploading $fileToUpload to $platform" - fileName=$(basename $fileToUpload) - fileNameWithoutExtension=${fileName%".tar.gz"} - - # Check if there is a metadata file for the corresponding tar.gz file and - # read and upload it along with the blob - fileMetadata="" - metdataFile="$artifactsDir/$fileNameWithoutExtension-metadata.txt" - if [ -f "$metdataFile" ]; then - while IFS= read -r line - do - line=$(echo $line | tr -d '\r') - fileMetadata+=" $line" - done < "$metdataFile" - fi - - checksum=$(sha512sum $fileToUpload | cut -d " " -f 1) - if [ "$platform" == "golang" ];then - checksum=$(sha256sum $fileToUpload | cut -d " " -f 1) - fi - - if shouldOverwriteSdk || shouldOverwritePlatformSdk $platform || [[ "$fileToUpload" == *defaultVersion*txt ]]; then - echo "running az command with override" - az storage blob upload \ - --name $fileName \ - --file "$fileToUpload" \ - --container-name $platform \ - --blob-endpoint $storageAccountUrl \ - --auth-mode login \ - --metadata \ - Buildnumber="$BUILD_BUILDNUMBER" \ - Commit="$commit" \ - Branch="$BUILD_SOURCEBRANCHNAME" \ - Checksum="$checksum" \ - $fileMetadata \ - --overwrite true \ - --verbose - else - echo "running az command without override" - az storage blob upload \ - --name $fileName \ - --file "$fileToUpload" \ - --container-name $platform \ - --blob-endpoint $storageAccountUrl \ - --auth-mode login \ - --metadata \ - Buildnumber="$BUILD_BUILDNUMBER" \ - Commit="$commit" \ - Branch="$BUILD_SOURCEBRANCHNAME" \ - Checksum="$checksum" \ - $fileMetadata \ - --verbose - fi - done -} - - -platforms=("nodejs" "python" "dotnet" "php" "php-composer" "ruby" "java" "maven" "golang") -for platform in "${platforms[@]}" -do - uploadFiles $platform -done diff --git a/vsts/scripts/publishSdksFromSourceToDestStorageAccount.sh b/vsts/scripts/publishSdksFromSourceToDestStorageAccount.sh deleted file mode 100644 index 1ce5466213..0000000000 --- a/vsts/scripts/publishSdksFromSourceToDestStorageAccount.sh +++ /dev/null @@ -1,162 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/platforms/__common.sh - -azCopyDir="/tmp/azcopy-tool" - -dryRun=$1 -if [ $dryRun != "True" ] && [ $dryRun != "False" ]; then - echo "Error: Dry run must be True or False. Was: '$dryRun'" - exit 1 -fi - -export AZCOPY_AUTO_LOGIN_TYPE=AZCLI -export AZCOPY_TENANT_ID=$tenantId - -function blobExistsInProd() { - local containerName="$1" - local blobName="$2" - local statusCode - statusCode=$(curl -s -o /dev/null -w "%{http_code}" -I "$DEST_SDK_STORAGE_BASE_URL/$containerName/$blobName") - - if [ "$statusCode" -eq 200 ]; then - return 0 - else - return 1 - fi -} - -function copyBlob() { - local platformName="$1" - local blobName="$2" - local arg="" - - if shouldOverwriteSdk || shouldOverwritePlatformSdk $platformName || isDefaultVersionFile $blobName; then - echo - echo "Blob '$blobName' exists in Prod storage container '$platformName'. Overwriting it..." - arg=" --overwrite true" - fi - - if blobExistsInProd $platformName $blobName && [ -z "$arg" ]; then - echo - echo "Blob '$blobName' already exists in Prod storage container '$platformName'. Skipping copying it..." - else - echo - echo "Blob '$blobName' does not exist in Prod storage container '$platformName'. Copying it..." - if [ $dryRun == "False" ]; then - "$azCopyDir/azcopy" copy \ - "$SOURCE_SDK_STORAGE_BASE_URL/$platformName/$blobName" \ - "$DEST_SDK_STORAGE_BASE_URL/$platformName/$blobName" $arg --from-to BlobBlob --trusted-microsoft-suffixes *.azurefd.net - else - "$azCopyDir/azcopy" copy \ - "$SOURCE_SDK_STORAGE_BASE_URL/$platformName/$blobName" \ - "$DEST_SDK_STORAGE_BASE_URL/$platformName/$blobName" --dry-run $arg --from-to BlobBlob --trusted-microsoft-suffixes *.azurefd.net - fi - fi -} - -function copyPlatformBlobsToProd() { - local platformName="$1" - copyPlatformBlobsToProdForOsFlavor "$platformName" "stretch" - copyPlatformBlobsToProdForOsFlavor "$platformName" "buster" - copyPlatformBlobsToProdForOsFlavor "$platformName" "bullseye" - copyPlatformBlobsToProdForOsFlavor "$platformName" "bookworm" - copyPlatformBlobsToProdForOsFlavor "$platformName" "focal-scm" - copyPlatformBlobsToProdForOsFlavor "$platformName" "noble" -} - -function copyPlatformBlobsToProdForOsFlavor() { - local platformName="$1" - local osFlavor="$2" - local versionsFile="$REPO_DIR/platforms/$platformName/versions/$osFlavor/versionsToBuild.txt" - local defaultFile="" - local binaryPrefix="" - - if [ "$platformName" == "php-composer" ]; then - versionsFile="$REPO_DIR/platforms/php/composer/versions/$osFlavor/versionsToBuild.txt" - elif [ "$platformName" == "maven" ]; then - versionsFile="$REPO_DIR/platforms/java/maven/versions/$osFlavor/versionsToBuild.txt" - fi - - if [ "$osFlavor" == "stretch" ]; then - defaultFile="defaultVersion.txt" - copyBlob "$platformName" "$defaultFile" - binaryPrefix="$platformName" - else - binaryPrefix="$platformName-$osFlavor" - fi - - # Function to copy platform blobs to production for a specific Os flavor - # Dotnet, nodejs, php and python platforms are currently supporting bookworm. - # Allowed combinations: - # - platformName=dotnet and osFlavor=bookworm - # - platformName=nodejs and osFlavor=bookworm - # - platformName=php and osFlavor=bookworm - # - platformName=python and osFlavor=bookworm - # - platformName=dotnet and osFlavor=noble - # - platformName=python and osFlavor=noble - # Not allowed combinations: - # - Any platformName other than dotnet, node js, python and php with osFlavor=bookworm - # - Any platformName other than dotnet, python, php and node with osFlavor=noble - if [ "$osFlavor" == "bookworm" ] && \ - [ "$platformName" != "dotnet" ] && \ - [ "$platformName" != "nodejs" ] && \ - [ "$platformName" != "php" ] && \ - [ "$platformName" != "php-composer" ] && \ - [ "$platformName" != "python" ]; then - # Do not copy blobs - echo "Copying blobs for platformName=$platformName and osFlavor=$osFlavor is not supported yet." - elif [ "$osFlavor" == "noble" ] && \ - [ "$platformName" != "dotnet" ] && \ - [ "$platformName" != "nodejs" ] && \ - [ "$platformName" != "php" ] && \ - [ "$platformName" != "php-composer" ] && \ - [ "$platformName" != "python" ]; then - # Do not copy blobs - echo "Copying blobs for platformName=$platformName and osFlavor=$osFlavor is not supported yet." - else - defaultFile="defaultVersion.$osFlavor.txt" - copyBlob "$platformName" "$defaultFile" - - # Here '3' is a file descriptor which is specifically used to read the versions file. - # This is used since 'azcopy' command seems to also be using the standard file descriptor for stdin '0' - # which causes some issues when trying to loop through the lines of the file. - while IFS= read -u 3 -r line || [[ -n $line ]] - do - # Ignore whitespace and comments - if [ -z "$line" ] || [[ $line = \#* ]] ; then - continue - fi - - IFS=',' read -ra LINE_INFO <<< "$line" - version=$(echo -e "${LINE_INFO[0]}" | sed -e 's/^[[:space:]]*//') - copyBlob "$platformName" "$binaryPrefix-$version.tar.gz" - done 3< "$versionsFile" - fi -} - -if [ ! -f "$azCopyDir/azcopy" ]; then - curl -SL https://aka.ms/downloadazcopy-v10-linux -o /tmp/azcopy_download.tar.gz - tar -xvf /tmp/azcopy_download.tar.gz -C /tmp - rm -rf /tmp/azcopy_download.tar.gz - mkdir -p $azCopyDir - cp /tmp/azcopy_linux_amd64_*/azcopy $azCopyDir - - echo "Version of azcopy tool being used:" - $azCopyDir/azcopy --version -fi - -copyPlatformBlobsToProd "dotnet" -copyPlatformBlobsToProd "python" -copyPlatformBlobsToProd "nodejs" -copyPlatformBlobsToProd "php" -copyPlatformBlobsToProd "php-composer" -copyPlatformBlobsToProd "ruby" -copyPlatformBlobsToProd "java" -copyPlatformBlobsToProd "maven" -copyPlatformBlobsToProd "golang" diff --git a/vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh b/vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh deleted file mode 100644 index 808bd9ee07..0000000000 --- a/vsts/scripts/publishSdksFromStagingToProdStorageAccount.sh +++ /dev/null @@ -1,160 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/platforms/__common.sh - -azCopyDir="/tmp/azcopy-tool" - -dryRun=$1 -if [ $dryRun != "True" ] && [ $dryRun != "False" ]; then - echo "Error: Dry run must be True or False. Was: '$dryRun'" - exit 1 -fi - -function blobExistsInProd() { - local containerName="$1" - local blobName="$2" - local exitCode=1 - curl -I $PROD_SDK_STORAGE_BASE_URL/$containerName/$blobName 2> /tmp/curlError.txt 1> /tmp/curlOut.txt - grep "HTTP/1.1 200 OK" /tmp/curlOut.txt &> /dev/null - exitCode=$? - rm -f /tmp/curlOut.txt - rm -f /tmp/curlError.txt - if [ $exitCode -eq 0 ]; then - return 0 - else - return 1 - fi -} - -function copyBlob() { - set +x - local platformName="$1" - local blobName="$2" - local isDefaultVersionFile="$3" - - if shouldOverwriteSdk || shouldOverwritePlatformSdk $platformName || isDefaultVersionFile $blobName; then - echo - echo "Blob '$blobName' exists in Prod storage container '$platformName'. Overwriting it..." - if [ $dryRun == "False" ]; then - "$azCopyDir/azcopy" copy \ - "$PRIVATE_STAGING_SDK_STORAGE_BASE_URL/$platformName/$blobName$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName/$blobName$PROD_STORAGE_SAS_TOKEN" --overwrite true - else - "$azCopyDir/azcopy" copy \ - "$PRIVATE_STAGING_SDK_STORAGE_BASE_URL/$platformName/$blobName$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName/$blobName$PROD_STORAGE_SAS_TOKEN" --overwrite true --dry-run - fi - elif blobExistsInProd $platformName $blobName; then - echo - echo "Blob '$blobName' already exists in Prod storage container '$platformName'. Skipping copying it..." - else - echo - echo "Blob '$blobName' does not exist in Prod storage container '$platformName'. Copying it..." - if [ $dryRun == "False" ]; then - "$azCopyDir/azcopy" copy \ - "$PRIVATE_STAGING_SDK_STORAGE_BASE_URL/$platformName/$blobName$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName/$blobName$PROD_STORAGE_SAS_TOKEN" - else - "$azCopyDir/azcopy" copy \ - "$PRIVATE_STAGING_SDK_STORAGE_BASE_URL/$platformName/$blobName$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN" \ - "$PROD_SDK_STORAGE_BASE_URL/$platformName/$blobName$PROD_STORAGE_SAS_TOKEN" --dry-run - fi - fi - set -x -} - -function copyPlatformBlobsToProd() { - local platformName="$1" - copyPlatformBlobsToProdForDebianFlavor "$platformName" "stretch" - copyPlatformBlobsToProdForDebianFlavor "$platformName" "buster" - copyPlatformBlobsToProdForDebianFlavor "$platformName" "bullseye" - copyPlatformBlobsToProdForDebianFlavor "$platformName" "bookworm" - copyPlatformBlobsToProdForDebianFlavor "$platformName" "focal-scm" -} - -function copyPlatformBlobsToProdForDebianFlavor() { - local platformName="$1" - local debianFlavor="$2" - local versionsFile="$REPO_DIR/platforms/$platformName/versions/$debianFlavor/versionsToBuild.txt" - local defaultFile="" - local binaryPrefix="" - - if [ "$platformName" == "php-composer" ]; then - versionsFile="$REPO_DIR/platforms/php/composer/versions/$debianFlavor/versionsToBuild.txt" - elif [ "$platformName" == "maven" ]; then - versionsFile="$REPO_DIR/platforms/java/maven/versions/$debianFlavor/versionsToBuild.txt" - fi - - if [ "$debianFlavor" == "stretch" ]; then - defaultFile="defaultVersion.txt" - copyBlob "$platformName" "$defaultFile" - binaryPrefix="$platformName" - else - binaryPrefix="$platformName-$debianFlavor" - fi - - # Function to copy platform blobs to production for a specific Debian flavor - # Dotnet, nodejs, php and python platforms are currently supporting bookworm. - # Allowed combinations: - # - platformName=dotnet and debianFlavor=bookworm - # - platformName=nodejs and debianFlavor=bookworm - # - platformName=php and debianFlavor=bookworm - # - platformName=python and debianFlavor=bookworm - # Not allowed combinations: - # - Any platformName other than dotnet, node js, python and php with debianFlavor=bookworm - if [ "$debianFlavor" == "bookworm" ] && \ - [ "$platformName" != "dotnet" ] && \ - [ "$platformName" != "nodejs" ] && \ - [ "$platformName" != "php" ] && \ - [ "$platformName" != "php-composer" ] && \ - [ "$platformName" != "python" ]; then - # Do not copy blobs - echo "Copying blobs for platformName=$platformName and debianFlavor=$debianFlavor is not supported yet." - else - defaultFile="defaultVersion.$debianFlavor.txt" - copyBlob "$platformName" "$defaultFile" - - # Here '3' is a file descriptor which is specifically used to read the versions file. - # This is used since 'azcopy' command seems to also be using the standard file descriptor for stdin '0' - # which causes some issues when trying to loop through the lines of the file. - while IFS= read -u 3 -r line || [[ -n $line ]] - do - # Ignore whitespace and comments - if [ -z "$line" ] || [[ $line = \#* ]] ; then - continue - fi - - IFS=',' read -ra LINE_INFO <<< "$line" - version=$(echo -e "${LINE_INFO[0]}" | sed -e 's/^[[:space:]]*//') - copyBlob "$platformName" "$binaryPrefix-$version.tar.gz" - done 3< "$versionsFile" - fi -} - -if [ ! -f "$azCopyDir/azcopy" ]; then - curl -SL https://aka.ms/downloadazcopy-v10-linux -o /tmp/azcopy_download.tar.gz - tar -xvf /tmp/azcopy_download.tar.gz -C /tmp - rm -rf /tmp/azcopy_download.tar.gz - mkdir -p $azCopyDir - cp /tmp/azcopy_linux_amd64_*/azcopy $azCopyDir - - echo "Version of azcopy tool being used:" - $azCopyDir/azcopy --version -fi - -copyPlatformBlobsToProd "dotnet" -copyPlatformBlobsToProd "python" -copyPlatformBlobsToProd "nodejs" -copyPlatformBlobsToProd "php" -copyPlatformBlobsToProd "php-composer" -copyPlatformBlobsToProd "ruby" -copyPlatformBlobsToProd "java" -copyPlatformBlobsToProd "maven" -copyPlatformBlobsToProd "golang" diff --git a/vsts/scripts/pullAndTag.sh b/vsts/scripts/pullAndTag.sh deleted file mode 100644 index c7dd3adae5..0000000000 --- a/vsts/scripts/pullAndTag.sh +++ /dev/null @@ -1,170 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -euo pipefail -# $1 > buildimage-acr.txt -declare imagefilter="oryxdevmcr.azurecr.io/public/oryx" - -function tagBuildImageForIntegrationTest() { - local devbuildImageName="$1" - local devbuildImageType="$2" - local buildImageFilter="$3" - local buildImageTagFilter="$4" - local buildDefName="$BUILD_DEFINITIONNAME" - local buildNumber="$RELEASE_TAG_NAME" - - # Check if a build image filter was provided, and return early if it's not the suffix of the provided build image - if [ -n "$buildImageFilter" ] && [[ "$devbuildImageName" != *"$buildImageFilter" ]];then - return - fi - - # Check if a build tag filter was provided, and return early if it doesn't match the provided build tag - if [ -n "$buildImageTagFilter" ] && [ "$devbuildImageType" != "$buildImageTagFilter" ];then - return - fi - - # Always use specific build number based tag and then use the same tag to create a 'latest' tag and push it - if [ -z "$devbuildImageType" ]; then - buildImage=$devbuildImageName:$buildDefName.$buildNumber - # Trim the build number tag and append the '':latest' to end of it - newtag=$devbuildImageName:latest - else - buildImage=$devbuildImageName:$devbuildImageType-$buildDefName.$buildNumber - newtag=$devbuildImageName:$devbuildImageType - fi - - echo "Pulling the build image $buildImage ..." - docker pull "$buildImage" | sed 's/^/ /' - - echo - echo "Tagging the source image with tag $newtag ..." - - docker tag "$buildImage" "$newtag" | sed 's/^/ /' - echo - echo ------------------------------------------------------------------------------- - -} - -buildImageFilter="" -buildImageTagFilter="" -platformFilter="" -platformVersionFilter="" - -if [ -n "$TESTINTEGRATIONCASEFILTER" ];then - IFS='&' - read -a splitArr <<< "$TESTINTEGRATIONCASEFILTER" - for val in "${splitArr[@]}"; - do - if [[ "$val" == "category="* ]];then - categoryPrefix="category=" - strippedVal=${val#"$categoryPrefix"} - IFS='-' - read -a tempSplitArr <<< "$strippedVal" - len=${#tempSplitArr[@]} - platformFilter="${tempSplitArr[0]}" - if [[ $len -gt 1 ]];then - platformVersionFilter="${tempSplitArr[1]}" - fi - fi - - if [[ "$val" == "build-image="* ]];then - buildImagePrefix="build-image=" - strippedVal=${val#"$buildImagePrefix"} - buildImageFilter="build" - buildImageTagFilter="$strippedVal" - if [[ "$strippedVal" == "cli-debian-stretch" ]];then - buildImageFilter="cli" - buildImageTagFilter="debian-stretch" - elif [[ "$strippedVal" == "cli-debian-buster" ]];then - buildImageFilter="cli" - buildImageTagFilter="debian-buster" - elif [[ "$strippedVal" == "cli-debian-bullseye" ]];then - buildImageFilter="cli" - buildImageTagFilter="debian-bullseye" - elif [[ "$strippedVal" == "cli-builder-debian-bullseye" ]];then - buildImageFilter="cli" - buildImageTagFilter="builder-debian-bullseye" - fi - fi - done -fi - -echo "Build image filter is set for '$buildImageFilter:$buildImageTagFilter'" - -tagBuildImageForIntegrationTest "$imagefilter/build" "azfunc-jamstack-debian-stretch" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "azfunc-jamstack-debian-buster" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "azfunc-jamstack-debian-bullseye" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "github-actions-debian-buster" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "github-actions-debian-bullseye" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "github-actions-debian-bookworm" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "full-debian-buster" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/build" "full-debian-bullseye" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/cli" "debian-stretch" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/cli" "debian-buster" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/cli" "debian-bullseye" "$buildImageFilter" "$buildImageTagFilter" -tagBuildImageForIntegrationTest "$imagefilter/cli" "builder-debian-bullseye" "$buildImageFilter" "$buildImageTagFilter" - - -# Extract language string from string (e.g extract 'python' from 'category=python', 'debian-stretch' from 'build-image=debian-stretch') -if [ -n "$TESTINTEGRATIONCASEFILTER" ];then - # For DB tests we want only the build images to be present at the agent machine - if [[ "$platformFilter" != "db" ]];then - - # Always convert filter for runtime images to lower case - echo "Runtime image filter is set for $platformFilter with version $platformVersionFilter" - - # Create a local file that consolidates the different runtime image files into one to be read from - # Note: we don't write this file to the drop folder as we don't want this file written to for every integration test job - sourceFile="$BUILD_SOURCESDIRECTORY/temp/images/runtime-images-acr.txt" - - if [[ ! -f "$sourceFile" ]]; then - echo "Creating consolidated runtime image file '$sourceFile'..." - mkdir -p "$BUILD_SOURCESDIRECTORY/temp/images" - touch "$sourceFile" - fi - - echo "Consolidating runtime image files into '$sourceFile'..." - - (cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.buster.txt"; echo) >> "$sourceFile" - (cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.bullseye.txt"; echo) >> "$sourceFile" - (cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.bookworm.txt"; echo) >> "$sourceFile" - - echo "Iterating over previously pushed images defined in new '$sourceFile' file..." - - while read sourceImage; do - # Always use specific build number based tag and then use the same tag - # to create a version tag and push it - if [[ "$sourceImage" != *:latest ]]; then - if [[ "$sourceImage" == *"$platformFilter:$platformVersionFilter"* ]]; then - echo "Pulling the runtime image $sourceImage ..." - docker pull "$sourceImage" | sed 's/^/ /' - - # Trim the build number tag and append the version to end of it - image="${sourceImage%:*}" - echo - echo "image $image" - tagName="${sourceImage#$image:*}" - echo "tagName $tagName" - version="${tagName%%-*}" - - if [[ "$tagName" == *-fpm* ]]; then - version="$version"-fpm - fi - - echo "version $version" - newtag="$image:$version" - - echo - echo "Tagging the source image with tag $newtag ..." - docker tag "$sourceImage" "$newtag" | sed 's/^/ /' - echo - echo ------------------------------------------------------------------------------- - fi - fi - done <"$sourceFile" - fi -fi - diff --git a/vsts/scripts/pushBaseImagesToRegistry.sh b/vsts/scripts/pushBaseImagesToRegistry.sh deleted file mode 100755 index 2aac91da2d..0000000000 --- a/vsts/scripts/pushBaseImagesToRegistry.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -euo pipefail -# $1 > file that has all the tags -# e.g. /data/agent/_work/206/a/drop/images/yarn-cache-build/oryxmcr-base-images-mcr.txt - -bookwormBaseImagesFile="$1"-bookworm-base-images-mcr.txt -bullseyeBaseImagesFile="$1"-bullseye-base-images-mcr.txt -busterBaseImagesFile="$1"-buster-base-images-mcr.txt - -echo "base image tag file is in directory: $1" - -if [ -f "$bookwormBaseImagesFile" ]; then - echo "$bookwormBaseImagesFile exists. pushing bookworm image tags ..." - while read imageName; do - # read the tags from file - echo "Pushing image $imageName ..." - docker push "$imageName" - done <"$bookwormBaseImagesFile" -fi - -if [ -f "$bullseyeBaseImagesFile" ]; then - echo "$bullseyeBaseImagesFile exists. pushing bullseye image tags ..." - while read imageName; do - # read the tags from file - echo "Pushing image $imageName ..." - docker push "$imageName" - done <"$bullseyeBaseImagesFile" -fi - -if [ -f "$busterBaseImagesFile" ]; then - echo "$busterBaseImagesFile exists. pushing buster image tags ..." - while read imageName; do - # read the tags from file - echo "Pushing image $imageName ..." - docker push "$imageName" - done <"$busterBaseImagesFile" -fi diff --git a/vsts/scripts/pushImagesToRegistry.sh b/vsts/scripts/pushImagesToRegistry.sh deleted file mode 100755 index f79369d2b0..0000000000 --- a/vsts/scripts/pushImagesToRegistry.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -euo pipefail -# $1 > file that has all the tags - -imagesFile="$1" - -echo "image tag file is in directory: $1" - -if [ -f "$imagesFile" ]; then - echo "$imagesFile exists. pushing image tags ..." - while read imageName; do - # read the tags from file - echo "Pushing image $imageName ..." - docker push "$imageName" - done <"$imagesFile" -fi - - diff --git a/vsts/scripts/removeDockerArtifacts.sh b/vsts/scripts/removeDockerArtifacts.sh deleted file mode 100644 index f173dc0b40..0000000000 --- a/vsts/scripts/removeDockerArtifacts.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -declare -r BUILD_NUMBER="$BUILD_BUILDNUMBER" -declare -r DOCKER_SYSTEM_PRUNE="${ORYX_DOCKER_SYSTEM_PRUNE:-true}" - -# The following code snippet is a hack to workaround the following issue: -# Our CI agents run under a non-root account, but docker containers run under the 'root' account. -# Since a non-root account cannot delete files created by a 'root' account, we try to run a -# docker container and run the clean up command from there using the volume mounted directory trick. -# -# This is required for end-to-end tests to work, where a host's directory is volume mounted to a build -# image and the same host directory is volume mounted to a runtime image too. -# -# Even though Docker has a way to run a container as a non-root (for example, in our case the CI agent account), -# this causes problems in build image where we try to install packages and stuff and we run into permission problems. -# Since that is too intrusive and error prone, this hack allows us to not worry about those permission issues. - -mountedDirs="/tmp/OryxTestsMountedDirs" -echo -echo "Mounted Directory: "$mountedDirs -echo - -if [ -d "$mountedDirs" ]; then - echo - echo "Cleaning up files created by test containers ..." - docker run -v $mountedDirs:/tempDirs alpine /bin/sh -c "rm -rf /tempDirs/* && ls /tempDirs" -fi \ No newline at end of file diff --git a/vsts/scripts/tagBaseImagesForRelease.sh b/vsts/scripts/tagBaseImagesForRelease.sh deleted file mode 100644 index 3eeee31008..0000000000 --- a/vsts/scripts/tagBaseImagesForRelease.sh +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -o pipefail - -declare -r artifactsDir="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images" -declare -r outFileName="base-images-mcr.txt" -declare -r buildNumber=$BUILD_BUILDNUMBER - -function retagImageWithStagingRepository() -{ - echo "Number of arguments passed: $@" - echo "Pulling and retagging bases images from '$1'..." - - # '$1' is the imagetag file name - # '$2' is the image name e.g dotnetcore - # '$3' argument is the debianflavor e.g buster or stretch - - echo "Reading file '$1' to pull images from dev acr ..." - echo "Retagging images for image '$3' based '$2' for registry '$acrProdRepoPrefix'..." - - local artifactsFile="$artifactsDir/$1" - local outFile="$artifactsDir/$2/$acrProdRepoPrefix-$3-$outFileName" - - echo "output tags to be written to: '$outFile'" - - while read sourceImage; do - # Always use specific build number based tag and then use the same tag to create a 'latest' tag and push it - if [[ $sourceImage != *:latest ]]; then - echo "Pulling the source image $sourceImage ..." - docker pull "$sourceImage" | sed 's/^/ /' - - # Following is an example of released tag for this image - # build-yarn-cache:20190621.3 - - newtag=$(echo "$sourceImage" | sed -r 's/oryxdevmcr/'"$acrProdRepoPrefix"'/') - echo - echo "Tagging the source image with tag $newtag ..." - echo "$newtag">>"$outFile" - docker tag "$sourceImage" "$newtag" | sed 's/^/ /' - echo ------------------------------------------------------------------------------- - fi - done <"$artifactsFile" -} - -# first argument to the script is the image name e.g dotnetcore -# second argument to the script is the acrrepoprefix, e.g. oryxmcr - -imageName=$1 -acrProdRepoPrefix="$2" - -if [[ -z $imageName ]]; then - echo - echo "Invalid parameter: imageName cann't be blank" - exit 1 -fi - -echo "Creating release tags for '$imageName' ..." -mkdir -p $artifactsDir/$imageName - -if [ "$imageName" == "node" ] -then - echo "" - retagImageWithStagingRepository node-runtimeimage-bases-buster.txt $imageName buster - retagImageWithStagingRepository node-runtimeimage-bases-bullseye.txt $imageName bullseye - retagImageWithStagingRepository node-runtimeimage-bases-bookworm.txt $imageName bookworm -elif [ "$imageName" == "python-build" ] -then - echo "" - retagImageWithStagingRepository python-buildimage-bases.txt $imageName $acrProdRepoPrefix -elif [ "$imageName" == "python" ] -then - echo "" - echo $imageName - retagImageWithStagingRepository python-runtimeimage-bases-bullseye.txt $imageName bullseye - retagImageWithStagingRepository python-runtimeimage-bases-bookworm.txt $imageName bookworm -elif [ "$imageName" == "php-build" ] -then - echo "" - retagImageWithStagingRepository php-buildimage-bases.txt $imageName $acrProdRepoPrefix -elif [ "$imageName" == "php" ] -then - echo "" - retagImageWithStagingRepository php-runtimeimage-bases-buster.txt $imageName buster - retagImageWithStagingRepository php-runtimeimage-bases-bullseye.txt $imageName bullseye - retagImageWithStagingRepository php-runtimeimage-bases-bookworm.txt $imageName bookworm -elif [ "$imageName" == "php-fpm" ] -then - echo "" - echo $imageName - retagImageWithStagingRepository php-fpm-runtimeimage-bases-buster.txt $imageName buster - retagImageWithStagingRepository php-fpm-runtimeimage-bases-bullseye.txt $imageName bullseye - retagImageWithStagingRepository php-fpm-runtimeimage-bases-bookworm.txt $imageName bookworm -elif [ "$imageName" == "dotnetcore" ] -then - echo "" - echo $imageName - retagImageWithStagingRepository dotnetcore-runtimeimage-bases-buster.txt $imageName buster - retagImageWithStagingRepository dotnetcore-runtimeimage-bases-bullseye.txt $imageName bullseye - retagImageWithStagingRepository dotnetcore-runtimeimage-bases-bookworm.txt $imageName bookworm -elif [ "$imageName" == "ruby" ] -then - echo "" - echo $imageName - retagImageWithStagingRepository ruby-runtimeimage-bases-buster.txt $imageName buster -else - echo "ImageName $imageName is invalid/not supported.. " - exit 1 -fi \ No newline at end of file diff --git a/vsts/scripts/tagBuildImagesForRelease.sh b/vsts/scripts/tagBuildImagesForRelease.sh deleted file mode 100644 index 2ddadf3083..0000000000 --- a/vsts/scripts/tagBuildImagesForRelease.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -x -set -o pipefail - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/build/__variables.sh - -outPmeFileMCR="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/oryxprodmcr-build-images-mcr.txt" - -if [ -f "$outPmeFileMCR" ]; then - rm $outPmeFileMCR -fi - -function tagBuildImage() { - local devRegistryImageName="$1" - local prodRegistryLatestTagName="$2" - local prodRegistrySpecificTagName="$3" - local prodPmeRegistryRepoName="oryxprodmcr.azurecr.io/public/oryx/build" - sourceBranchName=$BUILD_SOURCEBRANCHNAME - - echo "Pulling the source image $devRegistryImageName..." - docker pull "$devRegistryImageName" | sed 's/^/ /' - - echo - echo "Tagging the source image for $prodPmeRegistryRepoName with tag $prodRegistrySpecificTagName..." - prodPmeRegistryImageName="$prodPmeRegistryRepoName:$prodRegistrySpecificTagName" - docker tag "$devRegistryImageName" "$prodPmeRegistryImageName" - echo "$prodPmeRegistryImageName">>"$outPmeFileMCR" - - if [ "$sourceBranchName" == "main" ]; then - echo "Tagging the source image for $prodPmeRegistryRepoName with tag $prodRegistryLatestTagName..." - prodPmeRegistryImageName="$prodPmeRegistryRepoName:$prodRegistryLatestTagName" - docker tag "$devRegistryImageName" "$prodPmeRegistryRepoName:$prodRegistryLatestTagName" - echo "$prodPmeRegistryImageName">>"$outPmeFileMCR" - - else - echo "Not creating 'latest' tag as source branch is not 'main'. Current branch is $sourceBranchName" - fi - - echo ------------------------------------------------------------------------------- -} - -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "latest" "$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:azfunc-jamstack-debian-buster-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "azfunc-jamstack-debian-buster" "azfunc-jamstack-debian-buster-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:azfunc-jamstack-debian-bullseye-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "azfunc-jamstack-debian-bullseye" "azfunc-jamstack-debian-bullseye-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:github-actions-debian-buster-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "github-actions-debian-buster" "github-actions-debian-buster-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:github-actions-debian-bullseye-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "github-actions-debian-bullseye" "github-actions-debian-bullseye-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:github-actions-debian-bookworm-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "github-actions-debian-bookworm" "github-actions-debian-bookworm-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:full-debian-buster-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "full-debian-buster" "full-debian-buster-$RELEASE_TAG_NAME" -tagBuildImage "oryxdevmcr.azurecr.io/public/oryx/build:full-debian-bullseye-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "full-debian-bullseye" "full-debian-bullseye-$RELEASE_TAG_NAME" - -echo "printing pme tags from $outPmeFileMCR" -cat $outPmeFileMCR -echo ------------------------------------------------------------------------------- \ No newline at end of file diff --git a/vsts/scripts/tagBuilderImagesForRelease.sh b/vsts/scripts/tagBuilderImagesForRelease.sh deleted file mode 100644 index 3672586ff2..0000000000 --- a/vsts/scripts/tagBuilderImagesForRelease.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -exo pipefail - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/build/__variables.sh - -outPmeFileMCR="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/oryxprodmcr-builder-images-mcr.txt" - -if [ -f "$outPmeFileMCR" ]; then - rm $outPmeFileMCR -fi - -function tagBuilderImage() { - local devRegistryImageName="$1" - local prodRegistryLatestTagName="$2" - local prodRegistrySpecificTagName="$3" - local prodPmeRegistryRepoName="oryxprodmcr.azurecr.io/public/oryx/builder" - sourceBranchName=$BUILD_SOURCEBRANCHNAME - - echo "Pulling the source image $devRegistryImageName..." - docker pull "$devRegistryImageName" | sed 's/^/ /' - - echo - echo "Tagging the source image for $prodPmeRegistryRepoName with tag $prodRegistrySpecificTagName..." - prodPmeRegistryImageName="$prodPmeRegistryRepoName:$prodRegistrySpecificTagName" - docker tag "$devRegistryImageName" "$prodPmeRegistryImageName" - echo "$prodPmeRegistryImageName">>"$outPmeFileMCR" - - if [ "$sourceBranchName" == "main" ]; then - echo "Tagging the source image for $prodPmeRegistryRepoName with tag $prodRegistryLatestTagName..." - prodPmeRegistryImageName="$prodPmeRegistryRepoName:$prodRegistryLatestTagName" - docker tag "$devRegistryImageName" "$prodPmeRegistryRepoName:$prodRegistryLatestTagName" - echo "$prodPmeRegistryImageName">>"$outPmeFileMCR" - - else - echo "Not creating 'latest' tag as source branch is not 'main'. Current branch is $sourceBranchName" - fi - - echo ------------------------------------------------------------------------------- -} - -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "latest" "$RELEASE_TAG_NAME" -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:capps-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "capps" "capps-$RELEASE_TAG_NAME" -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:buildpack-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "buildpack" "buildpack-$RELEASE_TAG_NAME" -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:stack-base-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "stack-base" "stack-base-$RELEASE_TAG_NAME" -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:stack-build-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "stack-build" "stack-build-$RELEASE_TAG_NAME" -tagBuilderImage "$ACR_PUBLIC_PREFIX/builder:stack-run-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" "stack-run" "stack-run-$RELEASE_TAG_NAME" - -echo "printing pme tags from $outPmeFileMCR" -cat $outPmeFileMCR -echo ------------------------------------------------------------------------------- \ No newline at end of file diff --git a/vsts/scripts/tagBuildpacksImagesForRelease.sh b/vsts/scripts/tagBuildpacksImagesForRelease.sh deleted file mode 100644 index fa3ac2b482..0000000000 --- a/vsts/scripts/tagBuildpacksImagesForRelease.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -o pipefail - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/build/__variables.sh - -declare -r outPmeFile="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/oryxprodmcr-buildpack-images-mcr.txt" -declare -r sourceImageRepo="oryxdevmcr.azurecr.io/public/oryx" -declare -r prodPmeImageRepo="oryxprodmcr.azurecr.io/public/oryx" - -sourceBranchName=$BUILD_SOURCEBRANCHNAME - -if [ -f "$outPmeFile" ]; then - rm $outPmeFile -fi - -packImage="$sourceImageRepo/pack:$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" -echo "Pulling pack image '$packImage'..." -docker pull "$packImage" -echo "Retagging pack image with '$RELEASE_TAG_NAME'..." - -echo "$prodPmeImageRepo/pack:$RELEASE_TAG_NAME">>"$outPmeFile" -docker tag "$packImage" "$prodPmeImageRepo/pack:$RELEASE_TAG_NAME" - -if [ "$sourceBranchName" == "main" ]; then - echo "Retagging pack image with 'stable'..." - - docker tag "$packImage" "$prodPmeImageRepo/pack:stable" - echo "$prodPmeImageRepo/pack:stable">>"$outPmeFile" -else - echo "Not creating 'stable' or 'latest' tags as source branch is not 'main'. Current branch is $sourceBranchName" -fi - -echo "printing pme tags from $outPmeFile" -cat $outPmeFile -echo ------------------------------------------------------------------------------- \ No newline at end of file diff --git a/vsts/scripts/tagCliImagesForRelease.sh b/vsts/scripts/tagCliImagesForRelease.sh deleted file mode 100644 index d7be28db2a..0000000000 --- a/vsts/scripts/tagCliImagesForRelease.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -o pipefail - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) -source $REPO_DIR/build/__variables.sh - -declare -r outPmeFile="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/oryxprodmcr-cli-images-mcr.txt" -declare -r sourceImageRepo="oryxdevmcr.azurecr.io/public/oryx" -declare -r prodPmeImageRepo="oryxprodmcr.azurecr.io/public/oryx" - -sourceBranchName=$BUILD_SOURCEBRANCHNAME - -if [ -f "$outPmeFile" ]; then - rm $outPmeFile -fi - -# CLI Images -cliImage="$sourceImageRepo/cli:debian-stretch-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" -cliBusterImage="$sourceImageRepo/cli:debian-buster-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" -cliBullseyeImage="$sourceImageRepo/cli:debian-bullseye-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" -echo "Pulling CLI image '$cliImage'..." -docker pull "$cliImage" - -echo "Retagging CLI image for $prodPmeImageRepo with 'debian-stretch-$RELEASE_TAG_NAME'..." -echo "$prodPmeImageRepo/cli:debian-stretch-$RELEASE_TAG_NAME">>"$outPmeFile" -docker tag "$cliImage" "$prodPmeImageRepo/cli:debian-stretch-$RELEASE_TAG_NAME" - -echo "Pulling CLI buster image '$cliBusterImage'..." -docker pull "$cliBusterImage" - -echo "Retagging CLI buster image for $prodPmeImageRepo with 'debian-buster-$RELEASE_TAG_NAME'..." -echo "$prodPmeImageRepo/cli:debian-buster-$RELEASE_TAG_NAME">>"$outPmeFile" -docker tag "$cliBusterImage" "$prodPmeImageRepo/cli:debian-buster-$RELEASE_TAG_NAME" - -echo "Pulling CLI bullseye image '$cliBullseyeImage'" -docker pull "$cliBullseyeImage" - -echo "Retagging CLI bullseye image for $prodPmeImageRepo with 'debian-bullseye-$RELEASE_TAG_NAME'..." -echo "$prodPmeImageRepo/cli:debian-bullseye-$RELEASE_TAG_NAME">>"$outPmeFile" -docker tag "$cliBullseyeImage" "$prodPmeImageRepo/cli:debian-bullseye-$RELEASE_TAG_NAME" - -# CLI Builder images -devCliBuilderBullseyeImage="$sourceImageRepo/cli:builder-debian-bullseye-$BUILD_DEFINITIONNAME.$RELEASE_TAG_NAME" -builderProdTag="builder-debian-bullseye-$RELEASE_TAG_NAME" -builderProdStableTag="builder-debian-bullseye-stable" -prodCliBuilderBullseyeImage="$prodPmeImageRepo/cli:$builderProdTag" -echo "Pulling CLI builder bullseye image '$devCliBuilderBullseyeImage'..." -docker pull "$devCliBuilderBullseyeImage" - -echo "Retagging CLI builder bullseye image for '$prodPmeImageRepo/cli' with '$builderProdTag'..." -echo "$prodCliBuilderBullseyeImage">>"$outPmeFile" -docker tag "$devCliBuilderBullseyeImage" "$prodCliBuilderBullseyeImage" - -if [ "$sourceBranchName" == "main" ]; then - echo "Retagging CLI image with '{os type}-stable'..." - - docker tag "$cliImage" "$prodPmeImageRepo/cli:debian-stretch-stable" - echo "$prodPmeImageRepo/cli:debian-stretch-stable">>"$outPmeFile" - - docker tag "$cliBusterImage" "$prodPmeImageRepo/cli:debian-buster-stable" - echo "$prodPmeImageRepo/cli:debian-buster-stable">>"$outPmeFile" - - docker tag "$cliBullseyeImage" "$prodPmeImageRepo/cli:debian-bullseye-stable" - echo "$prodPmeImageRepo/cli:debian-bullseye-stable">>"$outPmeFile" - - docker tag "$devCliBuilderBullseyeImage" "$prodPmeImageRepo/cli:$builderProdStableTag" - echo "$prodPmeImageRepo/cli:$builderProdStableTag">>"$outPmeFile" -else - echo "Not creating 'stable' or 'latest' tags as source branch is not 'main'. Current branch is $sourceBranchName" -fi - -echo "printing pme tags from $outPmeFile" -cat $outPmeFile -echo ------------------------------------------------------------------------------- \ No newline at end of file diff --git a/vsts/scripts/tagRunTimeImagesForRelease.sh b/vsts/scripts/tagRunTimeImagesForRelease.sh deleted file mode 100644 index 22e5de74f1..0000000000 --- a/vsts/scripts/tagRunTimeImagesForRelease.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -o pipefail - -acrPmeProdRepo="oryxprodmcr" - -sourceBranchName=$BUILD_SOURCEBRANCHNAME -outFilePmeMCR="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/$acrPmeProdRepo-runtime-images-mcr.txt" -sourceFile="$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.txt" - -if [[ ! -f "$sourceFile" ]]; then - echo "Creating consolidated runtime image file '$sourceFile'..." - mkdir -p "$BUILD_SOURCESDIRECTORY/temp/images" - touch "$sourceFile" -fi - -echo "Consolidating runtime image files into '$sourceFile'..." - -(cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.buster.txt"; echo) >> "$sourceFile" -(cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.bullseye.txt"; echo) >> "$sourceFile" -(cat "$BUILD_ARTIFACTSTAGINGDIRECTORY/drop/images/runtime-images-acr.bookworm.txt"; echo) >> "$sourceFile" - -if [ -f "$outFilePmeMCR" ]; then - rm $outFilePmeMCR -fi - -declare -r skipImages=("python:3.7" "dotnetcore:3" "dotnetcore:5" "php:7" "php:8.0" "ruby" "node:14") - -# This is a temporary function that will be used to skip unused images and will save some space on the agent. -should_skip() { - local image="$1" - local matched=false - for word in "${skipImages[@]}"; do - if [[ "$image" == *"$word"* ]]; then - matched=true - break - fi - done - echo "$matched" -} - -echo "Iterating over previously pushed images defined in new '$sourceFile' file..." - -while read sourceImage; do -# Always use specific build number based tag and then use the same tag to create a 'latest' tag and push it - if [[ $sourceImage == *:*-* && $(should_skip "$sourceImage") == "false" ]]; then - echo "Pulling the source image $sourceImage ..." - docker pull "$sourceImage" | sed 's/^/ /' - - # We tag out runtime images in dev differently than in tag. In dev we have builddefnitionname as part of tag. - # We don't want that in our prod tag. Also we want versions (like node-10.10:latest to be tagged as - # node:10.10-latest) as part of tag. We need to parse the tags so that we can reconstruct tags suitable for our - # prod images. - - IFS=':' - read -ra imageNameParts <<< "$sourceImage" - repo=${imageNameParts[0]} - tag=${imageNameParts[1]} - replaceText="$BUILD_DEFINITIONNAME." - releaseTagName=$(echo $tag | sed "s/$replaceText//g") - - IFS='-' - read -ra tagParts <<< "$tag" - version="${tagParts[0]}" - - read -ra repoParts <<< "$repo" - acrRepoName=${repoParts[0]} - acrProdPmeRepo=$(echo $acrRepoName | sed "s/oryxdevmcr/"$acrPmeProdRepo"/g") - acrPmeLatest="$acrProdPmeRepo:$version" - acrPmeSpecific="$acrProdPmeRepo:$releaseTagName" - - echo - echo "Tagging the source image with tag $acrPmeSpecific..." - - echo "$acrPmeSpecific">>"$outFilePmeMCR" - docker tag "$sourceImage" "$acrPmeSpecific" - - if [ "$sourceBranchName" == "main" ]; then - echo "Tagging the source image with tag $acrPmeLatest..." - echo "$acrPmeLatest">>"$outFilePmeMCR" - docker tag "$sourceImage" "$acrPmeLatest" - else - echo "Not creating 'latest' tag as source branch is not 'main'. Current branch is $sourceBranchName" - fi - echo ------------------------------------------------------------------------------- - fi -done <"$sourceFile" - -echo "printing pme tags from $outFilePmeMCR" -cat $outFilePmeMCR -echo ------------------------------------------------------------------------------- \ No newline at end of file From 31046e15c0dc92b43b2af8ff10d5c908341ce469 Mon Sep 17 00:00:00 2001 From: Sarath chandra Bussa Date: Mon, 16 Mar 2026 13:40:38 +0530 Subject: [PATCH 2/3] Second-pass cleanup: remove additional dead files and stale code Root-level removals: - CodeMaid.config: VS extension preference from 2019, no CI usage - Detector.sln: Redundant (Oryx.sln already contains all its projects) - CHANGELOG.md: Empty placeholder since 2019, never populated Build script removals (all were only called from the deleted vsts/ pipelines): - build/buildSln.sh: Trivial wrapper, unit-tests.yaml uses dotnet directly - build/buildTestBuildImages.sh: Test image builder, no GH Actions caller - build/testBuildScriptGenerator.sh: unit-tests.yaml handles this - build/testIntegration.sh: ADO internal pipelines handle integration tests - build/buildPlatformBinaries.sh: Zero references after vsts/ removal - build/release.txt: Empty placeholder since 2019 Generated constant files with zero consumers: - build/__dotNetCoreRunTimeVersions.sh: No file sources this - build/__dotNetCoreSdkVersions.sh: No file sources this - build/__phpVersions.sh: All references are commented out - build/__functions.sh: Only caller was buildTestBuildImages.sh (removed) Stale/superseded directories: - actions/oryx-dockerfile/: GitHub Action untouched since 2020, references dead MCR image tag (cli-image-3-patch1) and @master (renamed to @main) - monitor_version_scripts/: Superseded by build/tools/Automation/ (.NET tool running via automationTrigger.yaml GH Actions cron). The corresponding ADO pipeline Monitor-versions.yml has been disabled since Oct 2024. - tests/images/build/: 4 Dockerfiles only consumed by the removed buildTestBuildImages.sh and dead __variables.sh entries Other cleanups: - Cleaned dead ORYXTESTS_* variables from build/__variables.sh - Updated Oryx.sln: removed references to non-existent scripts (many were already missing from disk), added generateConstants.sh - Removed doc/buildpack.md (7-year-old WIP stub with no real content) --- CHANGELOG.md | 9 - CodeMaid.config | 34 --- Detector.sln | 82 ------- Oryx.sln | 11 +- actions/oryx-dockerfile/Dockerfile | 5 - actions/oryx-dockerfile/README.md | 207 ------------------ actions/oryx-dockerfile/action.yml | 25 --- actions/oryx-dockerfile/entrypoint.sh | 60 ----- build/__dotNetCoreRunTimeVersions.sh | 44 ---- build/__dotNetCoreSdkVersions.sh | 15 -- build/__functions.sh | 120 ---------- build/__phpVersions.sh | 41 ---- build/__variables.sh | 7 - build/buildPlatformBinaries.sh | 50 ----- build/buildSln.sh | 24 -- build/buildTestBuildImages.sh | 38 ---- build/release.txt | 8 - build/testBuildScriptGenerator.sh | 38 ---- build/testIntegration.sh | 79 ------- doc/buildpack.md | 9 - monitor_version_scripts/monitor_variables.sh | 58 ----- .../override_constants.yaml | 46 ---- monitor_version_scripts/update_constants.sh | 113 ---------- .../update_latest_stack_versions.sh | 41 ---- .../update_versions_to_build.sh | 138 ------------ .../web_scrap_files/dotnet_versions.py | 122 ----------- .../web_scrap_files/node_versions.py | 14 -- .../web_scrap_files/php_versions.py | 31 --- .../web_scrap_files/python_versions.py | 15 -- tests/images/build/Dockerfile | 15 -- .../build/gitHubActions.AsBase.Dockerfile | 24 -- .../gitHubActions.AsBaseWithEnv.Dockerfile | 27 --- tests/images/build/gitHubActions.Dockerfile | 15 -- tests/testRepo.sh | 81 ------- 34 files changed, 1 insertion(+), 1645 deletions(-) delete mode 100644 CHANGELOG.md delete mode 100644 CodeMaid.config delete mode 100644 Detector.sln delete mode 100644 actions/oryx-dockerfile/Dockerfile delete mode 100644 actions/oryx-dockerfile/README.md delete mode 100644 actions/oryx-dockerfile/action.yml delete mode 100644 actions/oryx-dockerfile/entrypoint.sh delete mode 100644 build/__dotNetCoreRunTimeVersions.sh delete mode 100644 build/__dotNetCoreSdkVersions.sh delete mode 100755 build/__functions.sh delete mode 100644 build/__phpVersions.sh delete mode 100755 build/buildPlatformBinaries.sh delete mode 100755 build/buildSln.sh delete mode 100644 build/buildTestBuildImages.sh delete mode 100644 build/release.txt delete mode 100755 build/testBuildScriptGenerator.sh delete mode 100755 build/testIntegration.sh delete mode 100644 doc/buildpack.md delete mode 100755 monitor_version_scripts/monitor_variables.sh delete mode 100644 monitor_version_scripts/override_constants.yaml delete mode 100755 monitor_version_scripts/update_constants.sh delete mode 100755 monitor_version_scripts/update_latest_stack_versions.sh delete mode 100755 monitor_version_scripts/update_versions_to_build.sh delete mode 100644 monitor_version_scripts/web_scrap_files/dotnet_versions.py delete mode 100644 monitor_version_scripts/web_scrap_files/node_versions.py delete mode 100644 monitor_version_scripts/web_scrap_files/php_versions.py delete mode 100644 monitor_version_scripts/web_scrap_files/python_versions.py delete mode 100644 tests/images/build/Dockerfile delete mode 100644 tests/images/build/gitHubActions.AsBase.Dockerfile delete mode 100644 tests/images/build/gitHubActions.AsBaseWithEnv.Dockerfile delete mode 100644 tests/images/build/gitHubActions.Dockerfile delete mode 100644 tests/testRepo.sh diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index afa498f48c..0000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ - -[//]: # (This file contains all the changes that should be displayed in our releases.) -[//]: # (In order to use it, add new lines below this comment session, above existing ones.) -[//]: # (The build and release systems will only add the new lines to the release, so NEVER edit an existing line,) -[//]: # (since it would make it appear again in the release.) -[//]: # (Add meaningful description of your changes, and if relevant how to make use of a new feature you're adding,) -[//]: # (as well as pointers to relevant documentation in our docs folder.) - -- Officially releasing on GitHub. \ No newline at end of file diff --git a/CodeMaid.config b/CodeMaid.config deleted file mode 100644 index 7e5627380b..0000000000 --- a/CodeMaid.config +++ /dev/null @@ -1,34 +0,0 @@ - - - - -
- - - - - - False - - - True - - - // -------------------------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. -// -------------------------------------------------------------------------------------------- - - - \.Designer\.cs$||\.Designer\.vb$||\.resx$||\.min\.css$||\.min\.js$||\\ScaffoldingTemplates\\ - - - True - - - True - - - - \ No newline at end of file diff --git a/Detector.sln b/Detector.sln deleted file mode 100644 index 94ce35d641..0000000000 --- a/Detector.sln +++ /dev/null @@ -1,82 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30104.148 -MinimumVisualStudioVersion = 15.0.26124.0 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{053E71DE-4A2B-4F3C-80D1-463BED307E67}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{62545858-848B-470F-B360-2D2AEEEEE89E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Detector", "src\Detector\Detector.csproj", "{C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Detector.Tests", "tests\Detector.Tests\Detector.Tests.csproj", "{E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CommonFiles", "CommonFiles", "{F5022807-80E0-433E-830E-48C86EBC343D}" - ProjectSection(SolutionItems) = preProject - src\CommonFiles\AssemblyVersion.proj = src\CommonFiles\AssemblyVersion.proj - src\CommonFiles\General.targets = src\CommonFiles\General.targets - src\CommonFiles\StyleCop.ruleset = src\CommonFiles\StyleCop.ruleset - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Common", "src\Oryx.Common\Common.csproj", "{E75BF716-72A0-4013-9673-751B9E5FAFD3}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|x64.ActiveCfg = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|x64.Build.0 = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|x86.ActiveCfg = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Debug|x86.Build.0 = Debug|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|Any CPU.Build.0 = Release|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|x64.ActiveCfg = Release|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|x64.Build.0 = Release|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|x86.ActiveCfg = Release|Any CPU - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF}.Release|x86.Build.0 = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|x64.ActiveCfg = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|x64.Build.0 = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|x86.ActiveCfg = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Debug|x86.Build.0 = Debug|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|Any CPU.Build.0 = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|x64.ActiveCfg = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|x64.Build.0 = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|x86.ActiveCfg = Release|Any CPU - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47}.Release|x86.Build.0 = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|x64.ActiveCfg = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|x64.Build.0 = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|x86.ActiveCfg = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Debug|x86.Build.0 = Debug|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|Any CPU.Build.0 = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|x64.ActiveCfg = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|x64.Build.0 = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|x86.ActiveCfg = Release|Any CPU - {E75BF716-72A0-4013-9673-751B9E5FAFD3}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {C2C0E3A9-D965-47AC-9074-7001D0D2F3BF} = {053E71DE-4A2B-4F3C-80D1-463BED307E67} - {E3EF4BD1-BF7D-4587-AB4D-543BAA5C5F47} = {62545858-848B-470F-B360-2D2AEEEEE89E} - {F5022807-80E0-433E-830E-48C86EBC343D} = {053E71DE-4A2B-4F3C-80D1-463BED307E67} - {E75BF716-72A0-4013-9673-751B9E5FAFD3} = {053E71DE-4A2B-4F3C-80D1-463BED307E67} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {F442C500-179F-4CA9-93BB-5EC94596CD45} - EndGlobalSection -EndGlobal diff --git a/Oryx.sln b/Oryx.sln index 44ac1ceab6..7d2b1b5efa 100644 --- a/Oryx.sln +++ b/Oryx.sln @@ -23,15 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Oryx.BuildImage.Tests", "te EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{0FEBE7DD-10C0-4650-89E4-69DDB0930C56}" ProjectSection(SolutionItems) = preProject - build\buildBuildImages.sh = build\buildBuildImages.sh - build\buildRunTimeImageBases.sh = build\buildRunTimeImageBases.sh - build\buildRunTimeImages.sh = build\buildRunTimeImages.sh - build\buildSln.sh = build\buildSln.sh build\constants.yaml = build\constants.yaml - build\testBuildImages.sh = build\testBuildImages.sh - build\testBuildScriptGenerator.sh = build\testBuildScriptGenerator.sh - build\testIntegration.sh = build\testIntegration.sh - build\testRunTimeImages.sh = build\testRunTimeImages.sh + build\generateConstants.sh = build\generateConstants.sh build\testStartupScriptGenerators.sh = build\testStartupScriptGenerators.sh build\__variables.sh = build\__variables.sh EndProjectSection @@ -41,8 +34,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionIt .dockerignore = .dockerignore .gitattributes = .gitattributes .gitignore = .gitignore - build.sh = build.sh - CodeMaid.config = CodeMaid.config README.md = README.md EndProjectSection EndProject diff --git a/actions/oryx-dockerfile/Dockerfile b/actions/oryx-dockerfile/Dockerfile deleted file mode 100644 index edcfca66a0..0000000000 --- a/actions/oryx-dockerfile/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM mcr.microsoft.com/oryx/cli:cli-image-3-patch1 - -COPY entrypoint.sh /entrypoint.sh - -ENTRYPOINT ["sh", "/entrypoint.sh"] \ No newline at end of file diff --git a/actions/oryx-dockerfile/README.md b/actions/oryx-dockerfile/README.md deleted file mode 100644 index 81ce8d7460..0000000000 --- a/actions/oryx-dockerfile/README.md +++ /dev/null @@ -1,207 +0,0 @@ -# GitHub Action for generating a Dockerfile to build and run Azure Web Apps - -With the Azure App Service Actions for GitHub, you can automate your workflow to deploy [Azure Web Apps](https://azure.microsoft.com/en-us/services/app-service/web/) using GitHub Actions. - -Get started today with a [free Azure account](https://azure.com/free/open-source)! - -This repository contains the GitHub Action for [generating a Dockerfile to build and run Azure Web Apps](./action.yml) using the [Oryx](https://github.com/microsoft/Oryx) build system. Currently, the following platforms can be built using this GitHub Action: - -- .NET Core -- Node -- PHP -- Python - -The generated Dockerfile follows a template similar to the following: - -``` -ARG RUNTIME=: - -FROM mcr.microsoft.com/oryx/build: as build -WORKDIR /app -COPY . . -RUN oryx build /app - -FROM mcr.microsoft.com/oryx/${RUNTIME} -COPY --from=build /app /app -RUN cd /app && oryx -ENTRYPOINT ["/app/run.sh"] -``` - -Once this Dockerfile is produced, it can be built and pushed to a registry, such as [Azure Container Registry](https://azure.microsoft.com/en-us/services/container-registry/), and used at a later time to deploy the Azure Web App. - -If you are looking for a GitHub Action to build your Azure Web App, consider using [`azure/appservice-build`](https://github.com/Azure/appservice-build). - -If you are looking for a GitHub Action to deploy your Azure Web App, consider using [`azure/webapps-deploy`](https://github.com/Azure/webapps-deploy). - -The definition of this GitHub Action is in [`action.yml`](./action.yml). - -# End-to-End Sample Workflows - -## Dependencies on other GitHub Actions - -- [`actions/checkout`](https://github.com/actions/checkout) - - Checkout your Git repository content into the GitHub Actions agent - -## Other GitHub Actions - -- [`azure/login`](https://github.com/Azure/login) - - Authenticate the current workflow to build, test, package, release and deploy to Azure -- [`azure/docker-login`](https://github.com/Azure/docker-login) - - Log in to a private container registry, such as [Azure Container registry](https://azure.microsoft.com/en-us/services/container-registry/) -- [`azure/webapps-container-deploy`](https://github.com/Azure/webapps-container-deploy) - - Deploy a web app container to Azure - -### Sample workflow to push an image using Azure CLI - -The following is an end-to-end sample of generating the Dockerfile, building the image, and pushing it to Azure Container Registry using Azure CLI whenever a commit is pushed: - -``` -on: push - -jobs: - build-and-push: - runs-on: ubuntu-latest - steps: - - name: Cloning repository - uses: actions/checkout@v1 - - - name: Running Oryx to generate a Dockerfile - uses: microsoft/oryx/actions/oryx-dockerfile@master - id: oryx - - - name: Azure authentication - uses: azure/login@v1 - with: - creds: ${{ secrets.AZURE_CREDENTIALS }} - - - name: Building image and pushing to ACR - run: | - az acr build -t : \ - -r \ - -f {{ steps.oryx.outputs.dockerfile-path }} \ - . -``` - -The following variables should be replaced in your workflow `.yaml` file: - -- `` - - Name of the Azure Container Registry that you are pushing to -- `` - - Name of the image that will be pushed to your registry -- `` - - Name of the image tag - -The following variables should be set in the GitHub repository's secrets store: - -- `AZURE_CREDENTIALS` - - Used to authenticate calls to Azure; for more information on setting this secret, please see the [`azure/actions/login`](https://github.com/Azure/actions) action - -### Sample workflow to push an image using Docker - -The following is an end-to-end sample of generating the Dockerfile, building the image, and pushing it to a registry using Docker whenever a commit is pushed: - -``` -on: push - -jobs: - build-and-push: - runs-on: ubuntu-latest - steps: - - name: Cloning repository - uses: actions/checkout@v1 - - - name: Running Oryx to generate a Dockerfile - uses: microsoft/oryx/actions/oryx-dockerfile@master - id: oryx - - - name: Logging into registry - uses: azure/docker-login@master - with: - login-server: - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} - - - name: Building image and pushing to registry using Docker - run: | - docker build . -t /: -f {{ steps.oryx.outputs.dockerfile-path }} - docker push /: - -``` - -The following variables should be replaced in your workflow: - -- `` - - Name of the registry that you are pushing to -- `` - - Name of the image that will be pushed to your registry -- `` - - Name of the image tag - -The following variables should be set in the GitHub repository's secrets store: - -- `REGISTRY_USERNAME` - - The username for the container registry; for more information on setting this secret, please see the [`azure/container-actions/docker-login`](https://github.com/Azure/container-actions) action -- `REGISTRY_PASSWORD` - - The password for the container registry; for more information on setting this secret, please see the [`azure/container-actions/docker-login`](https://github.com/Azure/container-actions) action - -### Sample workflow to deploy an Azure Web App Container - -The following is an end-to-end sample of generating the Dockerfile, building the image, pushing it to a registry using Docker, and deploying the web app to Azure whenever a commit is pushed: - -``` -on: push - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Cloning repository - uses: actions/checkout@v1 - - - name: Running Oryx to generate a Dockerfile - uses: microsoft/oryx/actions/oryx-dockerfile@master - id: oryx - - - name: Logging into Azure - uses: azure/login@master - with: - creds: ${{ secrets.AZURE_CREDENTIALS }} - - - name: Logging into registry - uses: azure/docker-login@master - with: - login-server: - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.REGISTRY_PASSWORD }} - - - name: Building image and pushing to registry using Docker - run: | - docker build . -t /: -f {{ steps.oryx.outputs.dockerfile-path }} - docker push /: - - - name: Deploying container web app to Azure - uses: azure/webapps-container-deploy@v1 - with: - app-name: - images: /: -``` - -The following variables should be replaced in your workflow: - -- `` - - Name of the registry that you are pushing to -- `` - - Name of the image that will be pushed to your registry -- `` - - Name of the image tag -- `` - - Name of the web app that's being deployed - -The following variables should be set in the GitHub repository's secrets store: - -- `AZURE_CREDENTIALS` - - Used to authenticate calls to Azure; for more information on setting this secret, please see the [`azure/actions/login`](https://github.com/Azure/actions) action -- `REGISTRY_USERNAME` - - The username for the container registry; for more information on setting this secret, please see the [`azure/container-actions/docker-login`](https://github.com/Azure/container-actions) action -- `REGISTRY_PASSWORD` - - The password for the container registry; for more information on setting this secret, please see the [`azure/container-actions/docker-login`](https://github.com/Azure/container-actions) action \ No newline at end of file diff --git a/actions/oryx-dockerfile/action.yml b/actions/oryx-dockerfile/action.yml deleted file mode 100644 index e43e8c4930..0000000000 --- a/actions/oryx-dockerfile/action.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: 'Oryx Dockerfile Action' -description: 'Generate a Dockerfile that builds and runs an Azure Web App on Linux.' -branding: - icon: 'login.svg' - color: 'blue' -inputs: - source-directory: - description: 'Relative path (within the repository) to the source directory of the project you want to create a Dockerfile for; if no value is provided for this, the root of the repository ("GITHUB_WORKSPACE" environment variable) will be used.' - required: false - platform: - description: 'Programming platform of the web app; if no value is provided, Oryx will determine the platform to build with. The supported values are "dotnet", "nodejs", "php" and "python".' - required: false - platform-version: - description: 'Version of the programming platform; if no value is provided, Oryx will determine the version needed to build the repository.' - required: false -outputs: - dockerfile-path: - description: 'The path of the Dockerfile that was generated by Oryx, used to build and run a web app.' -runs: - using: 'docker' - image: 'Dockerfile' - args: - - ${{ inputs.source-directory }} - - ${{ inputs.platform }} - - ${{ inputs.platform-version }} \ No newline at end of file diff --git a/actions/oryx-dockerfile/entrypoint.sh b/actions/oryx-dockerfile/entrypoint.sh deleted file mode 100644 index d3843015b9..0000000000 --- a/actions/oryx-dockerfile/entrypoint.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/sh -l - -sourceDirectory=$1 -platform=$2 -platformVersion=$3 -dockerfilePath="Dockerfile.oryx" - - -echo - -if [ -n "${sourceDirectory}" ] -then - dockerfilePath="$sourceDirectory/$dockerfilePath" - sourceDirectory="$PWD/$sourceDirectory" - echo "Relative path to source directory provided -- the following directory will be built: '${sourceDirectory}'" -else - sourceDirectory=$PWD - echo "No source directory provided -- the root of the repository ('GITHUB_WORKSPACE' environment variable) will be built: '${sourceDirectory}'" -fi - -oryxCommand="oryx dockerfile ${sourceDirectory} --output ${dockerfilePath}" - -echo -echo "Dockerfile will be written to the following file: '${dockerfilePath}'" -echo - -if [ -n "${platform}" ] -then - echo "Platform provided: '${platform}'" - oryxCommand="${oryxCommand} --platform ${platform}" -else - echo "No platform provided -- Oryx will enumerate the source directory to determine the platform." -fi - -echo - -if [ -n "${platformVersion}" ] -then - echo "Platform version provided: '${platformVersion}'" - oryxCommand="${oryxCommand} --platform-version ${platformVersion}" -else - echo "No platform version provided -- Oryx will determine the version." -fi - -echo -echo "Running command '${oryxCommand}'" -echo -eval $oryxCommand - -if [ -f "$dockerfilePath" ]; -then - echo "Dockerfile generation succeeded; the following is the content of the Dockerfile:" - cat $dockerfilePath -else - echo "Dockerfile generation failed." - exit 1 -fi - -echo -echo ::set-output name=dockerfile-path::$dockerfilePath \ No newline at end of file diff --git a/build/__dotNetCoreRunTimeVersions.sh b/build/__dotNetCoreRunTimeVersions.sh deleted file mode 100644 index fdd09f8127..0000000000 --- a/build/__dotNetCoreRunTimeVersions.sh +++ /dev/null @@ -1,44 +0,0 @@ -# This file was auto-generated from 'constants.yaml'. Changes may be overridden. - -DOT_NET_CORE_RUNTIME_BASE_TAG='20240430.1' -NET_CORE_APP_10='1.0.16' -NET_CORE_APP_11='1.1.13' -NET_CORE_APP_20='2.0.9' -NET_CORE_APP_21='2.1.30' -NET_CORE_APP_21_SHA='b7433c9f03f7363759a044b50d8cca9486cfe402fdf62163696ba6a172e9839a140553e3d3298bb75c89dda2f6f4bec294847411f3fc2796fa4881a2b01a7178' -ASPNET_CORE_APP_21='2.1.30' -ASPNET_CORE_APP_21_SHA='60f65e2e37bb9af54f809ef0f4fe814c4c0dd9c969dea1aa81e94c0dc2433c5011cde39118196310ffac4e248b24924a2c154534194e70a8cdae40dfc81fe3d1' -NET_CORE_APP_22='2.2.8' -NET_CORE_APP_22_SHA='954072376698be69acb7e277df2c243f931e10529def21dcbf9ce277609b30d462126bf8b8b3cab36476bec3d63a927b8e44e59e4d4cade23eef45956fba1ffd' -NET_CORE_APP_30='3.0.3' -NET_CORE_APP_30_SHA='3d1f0ba2f293f43e087a8940a0f4736561f43b9f28bc5beda79a61f887e258543aea4dc71e88414a7c6e271dcda984a989afb62fc659a72223707a179cdde9c5' -ASPNET_CORE_APP_30='3.0.3' -ASPNET_CORE_APP_30_SHA='d88366ac20204c5acb4b80bc40396d608d6c067b25baeef54204e77dde48fb515bd463743745a0982ba8c9182fc751306a4e796f91060b2d013ffbea7d9a2dc8' -NET_CORE_APP_31='3.1.32' -NET_CORE_APP_31_SHA='a1de9bbc3d2e3a4f5f52b7742c678b182a58a724d36232997511e390027044d60144a7e010a29d6ee016ec91f2911daef28ac5712a827fff8bdde73314b7e002' -ASPNET_CORE_APP_31='3.1.32' -ASPNET_CORE_APP_31_SHA='0aa2aceda3d0b9f6bf02456d4e4b917c221c4f18eff30c8b6418e7514681baa9bb9ccc6b8c78949a92664922db4fb2b2a0dac9da11f775aaef618d9c491bb319' -NET_CORE_APP_50='5.0.17' -NET_CORE_APP_50_SHA='a9c4784930a977abbc42aff1337dda06ec588c1ec4769a59f9fcab4d5df4fc9efe65f8e61e5433db078f67a94ea2dfe870c32c482a50d4c16283ffacacff4261' -ASPNET_CORE_APP_50='5.0.17' -ASPNET_CORE_APP_50_SHA='d8e87804e9e86273c6512785bd5a6f0e834ff3f4bbebc11c4fcdf16ab4fdfabd0d981a756955267c1aa9bbeec596de3728ce9b2e6415d2d80daef0d999a5df6d' -NET_CORE_APP_60='6.0.32' -NET_CORE_APP_60_SHA='9babfe66f4a4261dd454f3220899af0a19532ab93575b581cec838f1c5f130d98b6fb1aaae5ee8e5b2e70deb55b619a0d55347f014ace72cb84b78d61faf0a59' -ASPNET_CORE_APP_60='6.0.32' -ASPNET_CORE_APP_60_SHA='1849c0073f12477b94357a1afb1cbd4ad67764263528b66037c19d554df41e681e4b41c0804b106319fe661d0bc3bae9e29e4913c0d0df33861cf6f32ebaac96' -NET_CORE_APP_70='7.0.20' -NET_CORE_APP_70_SHA='87855297338555a7b577d7e314e5dbf2c2350f8c867a489cd1e535634bad5c123a1871464d37fc9421837ff5d426c2eadecbe0f60bbf3fd32bc2461f47790a40' -ASPNET_CORE_APP_70='7.0.20' -ASPNET_CORE_APP_70_SHA='62ed9743972043a72e48d5aa2f7fdf3483cf684a32b051315004d1c778e9712bf66e5e7a97a5a53993fa8e92daf5bacaf2cdb3eae44bb9a9e25532b9a80f4f70' -NET_CORE_APP_80='8.0.7' -NET_CORE_APP_80_SHA='88e9ac34ad5ac76eec5499f2eb8d1aa35076518c842854ec1053953d34969c7bf1c5b2dbce245dbace3a18c3b8a4c79d2ef2d2ff105ce9d17cbbdbe813d8b16f' -ASPNET_CORE_APP_80='8.0.7' -ASPNET_CORE_APP_80_SHA='c7479dc008fce77c2bfcaa1ac1c9fe6f64ef7e59609fff6707da14975aade73e3cb22b97f2b3922a2642fa8d843a3caf714ab3a2b357abeda486b9d0f8bebb18' -NET_CORE_APP_90='9.0.0' -NET_CORE_APP_90_SHA='5176bd68637646cd36fce7a88f83effe1065fb075e6d4a46b8be3c33d5a8394740577f0ed4f8b4fb13fa69fe83b229eb55ab7f45caac90849bf0392a670ed5af' -ASPNET_CORE_APP_90='9.0.0' -ASPNET_CORE_APP_90_SHA='1a81023f119dd5e5b0f9d87b0e3c42df89824b9fcb73192a4670cc2c67358cd018a7c9c965245c7883de468bda88c81d64a21c60f9bc68a6559d76f32d34ce96' -NET_CORE_APP_100='10.0.0-preview.5.25277.114' -NET_CORE_APP_100_SHA='EC21EFF51B0F8B9E7C9C00B6CC9E9CDD810997C9D2C1987042C48CDD6BF6E40C2552ACBFCDA405C56B3CE7DE52B3A20E6B91F068C6E4BD101B896C302A32B5F2' -ASPNET_CORE_APP_100='10.0.0-preview.5.25277.114' -ASPNET_CORE_APP_100_SHA='6E69A85F7E18B8EEBB5F99A7E8099DB2FA5DA34BCF078BECBB123C0863D4BE7B4252C7CFC6B21B9585F4F800C058A12CAE55EF2A63B9BEA886CA3D1D8A0EC113' diff --git a/build/__dotNetCoreSdkVersions.sh b/build/__dotNetCoreSdkVersions.sh deleted file mode 100644 index 6320802a12..0000000000 --- a/build/__dotNetCoreSdkVersions.sh +++ /dev/null @@ -1,15 +0,0 @@ -# This file was auto-generated from 'constants.yaml'. Changes may be overridden. - -DOT_NET_CORE_11_SDK_VERSION='1.1.14' -DOT_NET_CORE_21_SDK_VERSION='2.1.818' -DOT_NET_CORE_22_SDK_VERSION='2.2.207' -DOT_NET_CORE_30_SDK_VERSION='3.0.103' -DOT_NET_CORE_31_SDK_VERSION='3.1.426' -DOT_NET_CORE_50_SDK_VERSION='5.0.302' -DOT_NET_50_SDK_VERSION='5.0.408' -DOT_NET_60_SDK_VERSION='6.0.424' -DOT_NET_60_RTM_SDK_VERSION='6-0-100-rtm-21527-11' -DOT_NET_70_SDK_VERSION='7.0.410' -DOT_NET_80_SDK_VERSION='8.0.303' -DOT_NET_90_SDK_VERSION='9.0.100' -DOT_NET_100_SDK_VERSION='10.0.0-preview.5.25277.114' \ No newline at end of file diff --git a/build/__functions.sh b/build/__functions.sh deleted file mode 100755 index f9cb9d6a54..0000000000 --- a/build/__functions.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -# Folder structure is used to decide the tag name -# For example, if a Dockerfile is located at "images/runtime/node/10.1.0/Dockerfile", -# then the tag name would be 'node:10.1.0' (i.e. the path between 'runtime' and 'Dockerfile' segments) -# Additionally, if a os type such as debian-bullseye is passed in, we append the os type to the tag as well like -# node:10.1.0-debian-bullseye -function getTagName() -{ - if [ ! -d $1 ] - then - echo "Directory '$1' does not exist." - return 1 - fi - - osTypeSuffix="" - if [ ! -z $2 ] - then - osTypeSuffix="-$2" - fi - - local replacedPath="$RUNTIME_IMAGES_SRC_DIR/" - echo "Runtime Image Source Directory: "$RUNTIME_IMAGES_SRC_DIR - local remainderPath="${1//$replacedPath/}" - tagNameFile="$RUNTIME_IMAGES_SRC_DIR/$remainderPath/tag.txt" - - if [ -f "$tagNameFile" ] - then - getTagName_result=$(cat $tagNameFile) - echo "tagname for "$replacedPath" is :"$getTagName_result - return 0 - fi - - local slashChar="/" - getTagName_result="${remainderPath//$slashChar/":"}$osTypeSuffix" - return 0 -} - -function dockerCleanupIfRequested() -{ - if [ "$DOCKER_SYSTEM_PRUNE" == "true" ] - then - echo "Running 'docker system prune -f'" - docker system prune -f - else - echo "Skipping 'docker system prune -f'" - fi -} - -function execAllGenerateDockerfiles() -{ - runtimeImagesSourceDir="$1" - runtimeGenerateDockerFileScriptName="$2" - runtimeImageDebianFlavor=$3 - - echo "runtime image type '$3'" - echo "runtimeGenerateDockerFileScriptName '$2'" - - generateDockerfiles=$(find $runtimeImagesSourceDir -type f -name $runtimeGenerateDockerFileScriptName) - if [ -z "$generateDockerfiles" ] - then - echo "Couldn't find any '$runtimeGenerateDockerFileScriptName' under '$runtimeImagesSourceDir' and its sub-directories." - fi - - for generateDockerFile in $generateDockerfiles; do - echo - echo "Executing '$generateDockerFile'..." - echo - eval "$(echo "$generateDockerFile $runtimeImageDebianFlavor")" - done -} - -function showDockerImageSizes() -{ - docker system df -v -} - -function shouldStageRuntimeVersion() -{ - platformName="$1" - platformRuntimeVersion="$2" - - declare -A PLATFORM_RUNTIME_VERSIONS=( - ['dotnet']="${DOTNETCORE_STAGING_RUNTIME_VERSIONS[*]}" - ['dotnetcore']="${DOTNETCORE_STAGING_RUNTIME_VERSIONS[*]}" - ['python']="${PYTHON_STAGING_RUNTIME_VERSIONS[*]}" - ['node']="${NODE_STAGING_RUNTIME_VERSIONS[*]}" - ['java']="${JAVA_STAGING_RUNTIME_VERSIONS[*]}" - ['php']="${PHP_STAGING_RUNTIME_VERSIONS[*]}" - ['hugo']="${HUGO_STAGING_RUNTIME_VERSIONS[*]}" - ['ruby']="${RUBY_STAGING_RUNTIME_VERSIONS[*]}" - ['golang']="${GOLANG_STAGING_RUNTIME_VERSIONS[*]}" - ) - - if [[ " ${PLATFORM_RUNTIME_VERSIONS[$platformName]} " =~ " ${platformRuntimeVersion} " ]]; then - return 0 - else - echo "Platform '$platformName' does not support staging." - return 1 - fi -} - -function retrieveSastokenFromKeyVault() -{ - set +x - sdkStorageAccountUrl="$1" - - if [ $sdkStorageAccountUrl == $PRIVATE_STAGING_SDK_STORAGE_BASE_URL ] && [ -z "$ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN" ]; then - - echo "Retrieving token from the Keyvault and setting it to the environment variable 'ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN'" - stagingPrivateStorageSasToken=$(az keyvault secret show --name "ORYX-SDK-STAGING-PRIVATE-SAS-TOKEN" --vault-name "oryx" --query value -o tsv) - - export ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN=$stagingPrivateStorageSasToken - fi - set -x -} diff --git a/build/__phpVersions.sh b/build/__phpVersions.sh deleted file mode 100644 index c5abeaacdd..0000000000 --- a/build/__phpVersions.sh +++ /dev/null @@ -1,41 +0,0 @@ -# This file was auto-generated from 'constants.yaml'. Changes may be overridden. - -PHP_RUNTIME_BASE_TAG='20240430.1' -PHP_FPM_RUNTIME_BASE_TAG='20240430.1' -COMPOSER_DEFAULT_VERSION='2.6.2' -COMPOSER_SETUP_SHA384='e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02' -COMPOSER1_9_VERSION='1.9.3' -COMPOSER1_10_VERSION='1.10.19' -COMPOSER2_0_VERSION='2.0.8' -COMPOSER2_2_VERSION='2.2.21' -COMPOSER2_3_VERSION='2.3.10' -COMPOSER2_4_VERSION='2.4.4' -COMPOSER2_5_VERSION='2.5.8' -COMPOSER2_6_VERSION='2.6.2' -PHP83_VERSION='8.3.9' -PHP83_KEYS='1198C0117593497A5EC5C199286AF1F9897469DC AFD8691FDAEDF03BDF6E460563F15A9B715376CA' -PHP83_TAR_SHA256='bf4d7b8ea60a356064f88485278bd6f941a230ec16f0fc401574ce1445ad6c77' -PHP82_VERSION='8.2.21' -PHP82_KEYS='1198C0117593497A5EC5C199286AF1F9897469DC 39B641343D8C104B2B146DC3F9C39DC0B9698544' -PHP82_TAR_SHA256='8cc44d51bb2506399ec176f70fe110f0c9e1f7d852a5303a2cd1403402199707' -PHP81_VERSION='8.1.29' -PHP81_KEYS='528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544' -PHP81_TAR_SHA256='288884af60581d4284baba2ace9ca6d646f72facbd3e3c2dd2acc7fe6f903536' -PHP80_VERSION='8.0.30' -PHP80_KEYS='1729F83938DA44E27BA0F4D3DBDB397470D12172 BFDDD28642824F8118EF77909B67A5C12229118F' -PHP80_TAR_SHA256='216ab305737a5d392107112d618a755dc5df42058226f1670e9db90e77d777d9' -PHP74_VERSION='7.4.33' -PHP74_KEYS='42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312' -PHP74_TAR_SHA256='924846abf93bc613815c55dd3f5809377813ac62a9ec4eb3778675b82a27b927' -PHP73_VERSION='7.3.27' -PHP73_KEYS='CBAF69F173A0FEA4B537F470D66C9593118BCCB6 F38252826ACD957EF380D39F2F7956BC5DA04B5D' -PHP73_TAR_SHA256='65f616e2d5b6faacedf62830fa047951b0136d5da34ae59e6744cbaf5dca148d' -PHP72_VERSION='7.2.34' -PHP72_KEYS='1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F' -PHP72_TAR_SHA256='409e11bc6a2c18707dfc44bc61c820ddfd81e17481470f3405ee7822d8379903' -PHP70_VERSION='7.0.33' -PHP70_KEYS='1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3' -PHP70_TAR_SHA256='ab8c5be6e32b1f8d032909dedaaaa4bbb1a209e519abb01a52ce3914f9a13d96' -PHP56_VERSION='5.6.40' -PHP56_KEYS='0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3' -PHP56_TAR_SHA256='1369a51eee3995d7fbd1c5342e5cc917760e276d561595b6052b21ace2656d1c' diff --git a/build/__variables.sh b/build/__variables.sh index 43b960651c..93362f6a3a 100755 --- a/build/__variables.sh +++ b/build/__variables.sh @@ -22,12 +22,6 @@ declare -r BUILD_IMAGES_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/Dockerfil declare -r BUILD_IMAGES_LTS_VERSIONS_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/ltsVersions.Dockerfile" declare -r BUILD_IMAGES_LTS_VERSIONS_BUSTER_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/ltsVersions.buster.Dockerfile" declare -r PACK_IMAGE_DOCKERFILE="$REPO_DIR/images/pack-builder/pack-runner.Dockerfile" -declare -r ORYXTESTS_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/Dockerfile" -declare -r ORYXTESTS_LTS_VERSIONS_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/ltsVersions.Dockerfile" -declare -r ORYXTESTS_LTS_VERSIONS_BUSTER_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/ltsVersions.buster.Dockerfile" -declare -r ORYXTESTS_GITHUB_ACTIONS_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/gitHubActions.Dockerfile" -declare -r ORYXTESTS_GITHUB_ACTIONS_ASBASE_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/gitHubActions.AsBase.Dockerfile" -declare -r ORYXTESTS_GITHUB_ACTIONS_ASBASE_WITHENV_BUILDIMAGE_DOCKERFILE="$REPO_DIR/tests/images/build/gitHubActions.AsBaseWithEnv.Dockerfile" declare -r RUNTIME_IMAGES_SRC_DIR="$REPO_DIR/images/runtime" declare -r BUILD_IMAGES_CLI_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/cli.Dockerfile" declare -r BUILD_IMAGES_CLI_BUILDER_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/cliBuilder.Dockerfile" @@ -63,7 +57,6 @@ declare -r PACK_IMAGE_NAME='pack' declare -r PACK_STACK_BASE_IMAGE_NAME="pack-stack-base" declare -r PACK_BUILDER_IMAGE_NAME="pack-builder" declare -r PACK_TOOL_VERSION="0.26.0" -declare -r ORYXTESTS_BUILDIMAGE_REPO="oryxtests/build" declare -r DEVBOX_BUILD_IMAGES_REPO="oryx/build" declare -r DEVBOX_CLI_BUILD_IMAGE_REPO="oryx/cli" diff --git a/build/buildPlatformBinaries.sh b/build/buildPlatformBinaries.sh deleted file mode 100755 index 659e7b5a10..0000000000 --- a/build/buildPlatformBinaries.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) - -PLATFORM_TO_BUILD=$1 -DEBIAN_FLAVOR_TO_BUILD=$2 -SDK_STORAGE_ACCOUNT_URL=$3 -platformsDir="$REPO_DIR/platforms" - -case $PLATFORM_TO_BUILD in - 'dotnet') - chmod +x "$platformsDir/dotnet/getDotNetSdk.sh" - "$platformsDir/dotnet/getDotNetSdk.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'python') - chmod +x "$platformsDir/python/buildPython.sh" - "$platformsDir/python/buildPython.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'php') - chmod +x "$platformsDir/php/buildPhp.sh" - "$platformsDir/php/buildPhp.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'nodejs') - chmod +x "$platformsDir/nodejs/getNode.sh" - "$platformsDir/nodejs/getNode.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'golang') - chmod +x "$platformsDir/golang/getGolangSdk.sh" - "$platformsDir/golang/getGolangSdk.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'ruby') - chmod +x "$platformsDir/ruby/buildRuby.sh" - "$platformsDir/ruby/buildRuby.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'java') - chmod +x "$platformsDir/java/getJavaSdk.sh" - "$platformsDir/java/getJavaSdk.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - 'maven') - chmod +x "$platformsDir/java/maven/getMaven.sh" - "$platformsDir/java/maven/getMaven.sh" $DEBIAN_FLAVOR_TO_BUILD $SDK_STORAGE_ACCOUNT_URL - ;; - *) echo "Unknown image directory";; -esac diff --git a/build/buildSln.sh b/build/buildSln.sh deleted file mode 100755 index 88608cfbbf..0000000000 --- a/build/buildSln.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) - -solutionFileName="$1" - -if [ -z "$solutionFileName" ]; then - solutionFileName="Oryx.sln" -fi - -# Load all variables -source $REPO_DIR/build/__variables.sh - -echo -echo "Building solution '$solutionFileName'..." -echo -cd $REPO_DIR -dotnet build "$solutionFileName" -c $BUILD_CONFIGURATION \ No newline at end of file diff --git a/build/buildTestBuildImages.sh b/build/buildTestBuildImages.sh deleted file mode 100644 index 83792711f6..0000000000 --- a/build/buildTestBuildImages.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) - -# Load all variables -source $REPO_DIR/build/__variables.sh -source $REPO_DIR/build/__functions.sh - -echo -echo "Building build images for tests..." - -echo "Building bullseye based GitHub Action image for tests..." -docker build \ - -t "$ORYXTESTS_BUILDIMAGE_REPO:github-actions-debian-bullseye" \ - --build-arg PARENT_IMAGE_BASE=$ORYX_TEST_IMAGE_BASE:github-actions-debian-bullseye-$IMAGE_BUILDNUMBER \ - -f "$ORYXTESTS_GITHUB_ACTIONS_BUILDIMAGE_DOCKERFILE" \ - . - -echo -echo - -echo "Building bookworm based GitHub Action image for tests..." -docker build \ - -t "$ORYXTESTS_BUILDIMAGE_REPO:github-actions-debian-bookworm" \ - --build-arg PARENT_IMAGE_BASE=$ORYX_TEST_IMAGE_BASE:github-actions-debian-bookworm-$IMAGE_BUILDNUMBER \ - -f "$ORYXTESTS_GITHUB_ACTIONS_BUILDIMAGE_DOCKERFILE" \ - . - -echo -echo - -dockerCleanupIfRequested diff --git a/build/release.txt b/build/release.txt deleted file mode 100644 index 7380474bab..0000000000 --- a/build/release.txt +++ /dev/null @@ -1,8 +0,0 @@ - -[//]: # (This file contains all the changes that should be displayed in our releases.) -[//]: # (In order to use it, add new lines below this comment session, leaving the remaining lines in the file.) -[//]: # (The build and release systems will only add the new lines to the release, so NEVER edit an existing line,) -[//]: # (since it would make it appear again in the release.) -[//]: # (Add meaningful description of your changes, and if relevant how to make use of a new feature you're adding,) -[//]: # (as well as pointers to relevant documentation in our docs folder.) - diff --git a/build/testBuildScriptGenerator.sh b/build/testBuildScriptGenerator.sh deleted file mode 100755 index 8a567b3207..0000000000 --- a/build/testBuildScriptGenerator.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) - -# Load all variables -source $REPO_DIR/build/__variables.sh - -echo -echo "Building and running tests..." -testProjectName="BuildScriptGenerator.Tests" -cd "$TESTS_SRC_DIR/$testProjectName" -dotnet test \ - --blame \ - --test-adapter-path:. \ - --logger:"xunit;LogFilePath=$ARTIFACTS_DIR\testResults\\$testProjectName.xml" \ - -c $BUILD_CONFIGURATION - -testProjectName="BuildScriptGeneratorCli.Tests" -cd "$TESTS_SRC_DIR/$testProjectName" -dotnet test \ - --blame \ - --test-adapter-path:. \ - --logger:"xunit;LogFilePath=$ARTIFACTS_DIR\testResults\\$testProjectName.xml" \ - -c $BUILD_CONFIGURATION - -# --blame flag generates an xml file which it drops under the project directory. -# Copy that file to artifacts directory too -if [ -d "TestResults" ]; then - resultsDir="$ARTIFACTS_DIR/$testProjectName.TestResults" - mkdir -p "$resultsDir" - cp -rf TestResults/. "$resultsDir/" -fi \ No newline at end of file diff --git a/build/testIntegration.sh b/build/testIntegration.sh deleted file mode 100755 index 3533e510db..0000000000 --- a/build/testIntegration.sh +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -set -e - -declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && pwd ) -source $REPO_DIR/build/__variables.sh -source $REPO_DIR/build/__sdkStorageConstants.sh - -echo - -# This is needed because when we are running tests in multiple agent machines -# this variable will be used to name the testresults file and that way we can -# avoid overwriting test results file. -integrationTestPlatform=".default" - -if [ -n "$1" ]; then - testCaseFilter="--filter $1" - if [ -n "$AGENT_BUILD" ]; then - # Extract platform name for which the integration tests are running - # for example, for node it will be ".node", for php ".php" etc. - integrationTestPlatform="."$(echo $1 | cut -d'=' -f 2) - fi - echo "Running integration tests for '$integrationTestPlatform' with filter '$testCaseFilter'..." -else - echo "Running all integration tests..." -fi - -echo - -if [ -n "$2" ] -then - echo - echo "Setting environment variable 'ORYX_TEST_IMAGE_BASE' to provided value '$2'." - export ORYX_TEST_IMAGE_BASE="$2" -fi - -if [ -n "$3" ] -then - echo - echo "Setting environment variable 'ORYX_TEST_TAG_SUFFIX' to provided value '$3'." - export ORYX_TEST_TAG_SUFFIX="-$3" -fi - -echo - -testProjectName="Oryx.Integration" -cd "$TESTS_SRC_DIR/$testProjectName.Tests" -artifactsDir="$REPO_DIR/artifacts" -mkdir -p "$artifactsDir" -diagnosticFileLocation="$artifactsDir/$testProjectName.Tests$integrationTestPlatform-log.txt" - -# Create a directory to capture any debug logs that MSBuild generates -msbuildDebugLogsDir="$artifactsDir/msbuildDebugLogs" -mkdir -p "$msbuildDebugLogsDir" -export MSBUILDDEBUGPATH="$msbuildDebugLogsDir" -# Enable automatic creation of crash dump when a .NET Core process crashes (ex: TestHost) -export COMPlus_DbgEnableMiniDump="1" -export COMPlus_DbgMiniDumpName="$ARTIFACTS_DIR/$testProjectName.Tests-dump.%d" - -dotnet test \ - --blame \ - --diag "$diagnosticFileLocation" \ - $testCaseFilter \ - --test-adapter-path:. \ - --logger:"xunit;LogFilePath=$ARTIFACTS_DIR/testResults/$testProjectName$integrationTestPlatform.Tests.xml" \ - --verbosity detailed \ - -c $BUILD_CONFIGURATION - -# --blame flag generates an xml file which it drops under the project directory. -# Copy that file to artifacts directory too -if [ -d "TestResults" ]; then - resultsDir="$ARTIFACTS_DIR/$testProjectName.TestResults" - mkdir -p "$resultsDir" - cp -rf TestResults/. "$resultsDir/" -fi \ No newline at end of file diff --git a/doc/buildpack.md b/doc/buildpack.md deleted file mode 100644 index 7ff66fba01..0000000000 --- a/doc/buildpack.md +++ /dev/null @@ -1,9 +0,0 @@ -# Oryx Buildpack - -Oryx provides a buildpack that runs it, so that Oryx can also be used via the [pack][] tool. - -## Related images - -WIP - -[pack]: https://github.com/buildpack/pack diff --git a/monitor_version_scripts/monitor_variables.sh b/monitor_version_scripts/monitor_variables.sh deleted file mode 100755 index b9fcdfd92f..0000000000 --- a/monitor_version_scripts/monitor_variables.sh +++ /dev/null @@ -1,58 +0,0 @@ -# #!/bin/bash - -pip install bs4 lxml requests - -set -e - -error_handler() { - echo "Error occurred in script at line: $1" - exit 1 -} - -trap 'error_handler $LINENO' ERR - -mkdir -p generated_files - -curl -o generated_files/php_version.xml "https://www.php.net/downloads.php" -curl -o generated_files/node_version.xml "https://nodejs.org/en/about/previous-releases" -curl -o generated_files/dotnet_version.xml "https://dotnet.microsoft.com/en-us/download/dotnet" - -create_versionfile() { - FILE=$1 - if [ ! -e "$FILE" ]; then - # Create the file - echo -n "" > $FILE - echo "File '$FILE' created." - else - echo "File '$FILE' already exists." - fi -} - -create_versionfile generated_files/node_latest_versions.txt -create_versionfile generated_files/php_latest_versions.txt -create_versionfile generated_files/python_latest_versions.txt -create_versionfile generated_files/dotnet_latest_versions.txt -create_versionfile generated_files/dotnet_sdk_latest_versions.txt - -latest_stack_versions_FILE=latest_stack_versions.yaml -cat < $latest_stack_versions_FILE -variables: -EOL - -python3 web_scrap_files/php_versions.py -python3 web_scrap_files/node_versions.py -python3 web_scrap_files/python_versions.py -python3 web_scrap_files/dotnet_versions.py - -chmod +x update_latest_stack_versions.sh -./update_latest_stack_versions.sh - -chmod +x update_constants.sh -./update_constants.sh - -chmod +x update_versions_to_build.sh -./update_versions_to_build.sh - -rm -rf "generated_files" -rm "Stack_Updated_values.txt" -rm "latest_stack_versions.yaml" \ No newline at end of file diff --git a/monitor_version_scripts/override_constants.yaml b/monitor_version_scripts/override_constants.yaml deleted file mode 100644 index bad7a46490..0000000000 --- a/monitor_version_scripts/override_constants.yaml +++ /dev/null @@ -1,46 +0,0 @@ -variables: - NODE_APP_INSIGHTS_SDK_VERSION: 1.8.7 - NPM_VERSION: 10.7.0 - PM2_VERSION: 5.3.1 - YARN_MAJOR_VERSION: "1" - YARN_MINOR_VERSION: "1.22" - YARN_VERSION: 1.22.15 - USER_DOTNET_AI_VERSION: 2.8.42 - AI_CONNECTION_STRING: 1234(RANDOMVALUE) - SDK_STORAGE_BASE_URL_VALUE: https://oryxsdksdev.blob.core.windows.net - node18DebianFlavors: bullseye - node20DebianFlavors: bullseye,bookworm - node22DebianFlavors: bullseye,bookworm - python38DebianFlavors: buster,bullseye - python39DebianFlavors: buster,bullseye - python310DebianFlavors: buster,bullseye - python311DebianFlavors: bullseye,bookworm - python312DebianFlavors: bullseye,bookworm - python313DebianFlavors: bookworm - dotnet60DebianFlavors: bullseye - dotnet80DebianFlavors: bullseye,bookworm - dotnet90DebianFlavors: bookworm - php81DebianFlavors: bullseye - php82DebianFlavors: bullseye - php83DebianFlavors: bullseye,bookworm - debianFlavors: buster,bullseye,bookworm - dotnetDebianFlavors: bookworm,bullseye - nodejsDebianFlavors: bookworm,bullseye - phpDebianFlavors: bookworm,bullseye - pythonDebianFlavors: bookworm,bullseye,buster - cliDebianFlavors: buster,bullseye - cliBuilderDebianFlavors: buster,bullseye - fullDebianFlavors: buster,bullseye - jamstackDebianFlavors: buster,bullseye - DotNetCoreAgent_version: 2.8.42 - GitHubActions_BaseImage_Buster: mcr.microsoft.com/mirror/docker/library/buildpack-deps@sha256:be7137ba47bdf421d3950abe1200322631e8db11b468cd6f0ebf3d687e556c90 - GitHubActions_BaseImage_Bullseye: mcr.microsoft.com/mirror/docker/library/buildpack-deps@sha256:25c86292946cce832340fe808ac47e5a845b68c488f177a47ff44fd59040397d - GitHubActions_BaseImage_Bookworm: mcr.microsoft.com/mirror/docker/library/buildpack-deps@sha256:ff838f535d6e3bace9ab7eefa360d648ba529f9aa57fdd709335f8ef0516cdde - php81_GPG_keys: '528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544' - php82_GPG_keys: '1198C0117593497A5EC5C199286AF1F9897469DC 39B641343D8C104B2B146DC3F9C39DC0B9698544' - php83_GPG_keys: '1198C0117593497A5EC5C199286AF1F9897469DC AFD8691FDAEDF03BDF6E460563F15A9B715376CA' - python310_GPG_keys: 'A035C8C19219BA821ECEA86B64E628F8D684696D' - python311_GPG_keys: 'A035C8C19219BA821ECEA86B64E628F8D684696D' - python312_GPG_keys: '7169605F62C751356D054A26A821E680E5FA6305' - python38_GPG_keys: 'E3FF2839C048B25C084DEBE9B26995E310250568' - python39_GPG_keys: 'E3FF2839C048B25C084DEBE9B26995E310250568' \ No newline at end of file diff --git a/monitor_version_scripts/update_constants.sh b/monitor_version_scripts/update_constants.sh deleted file mode 100755 index 096df07097..0000000000 --- a/monitor_version_scripts/update_constants.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -Old_constants_FILE="../images/constants.yml" -Temp_constants_FILE="../images/temp_constants.yml" - -mv $Old_constants_FILE $Temp_constants_FILE - -constants_FILE="../images/constants.yml" -cat < $constants_FILE -variables: -EOL - -Updated_ValuesFILE=Updated_Values.txt -echo -n "" > $Updated_ValuesFILE - -Stack_Updated_values=Stack_Updated_values.txt -echo -n "" > $Stack_Updated_values - -update_constants_file(){ - while IFS= read -r line; do - # Use yq to parse the YAML line and extract the key and value - key=$(echo "$line" | yq e 'keys' - | sed 's/^[[:space:]]*-*//' | sed 's/^[[:space:]]*//') - value=$(echo "$line" | yq e '.[]' -) - echo "Key: $key, Value: $value," - - keyInVariableGroup=$(echo "$key" | tr '[:lower:]' '[:upper:]') - - # Check if the key exists in the environment variables - if printenv "$keyInVariableGroup" > /dev/null; then - # If the key exists, get its value - valueInVariableGroup=$(printenv "$keyInVariableGroup") - echo "The value of $key is: $valueInVariableGroup" - - if [[ "$valueInVariableGroup" = "latest" ]]; then - old_value=$(yq eval ".variables.$key" $Temp_constants_FILE) - - if [ $old_value = $value ]; then - yq eval ".variables.$key = \"$value\"" -i $constants_FILE - echo "$key is already upto date" - else - # during updating php or python versions we need gpg keys as well during sdk building - # so if it is not present in Temp_constants_FILE or in variable group, ask for it - - if [[ "$1" = "latest_stack_versions.yaml" && ("$key" = *"python"* || "$key" = *"php"*) && "$key" != *"SHA"* ]]; then - gpgkeys=$(echo "$key" | sed 's/Version.*//') - gpgkeys+="_GPG_keys" - - if ! yq eval ".variables | has(\"$gpgkeys\")" $Temp_constants_FILE; then - echo "GPG Keys needed for $key" >&2 - exit 1 - fi - fi - - yq eval ".variables.$key = \"$value\"" -i $constants_FILE - echo "Updated constants.yml with latest value $key=$value" - - # This is for all updates (for PR description) - if [[ "$key" != *"SHA"* ]]; then - echo "$key=$value" >> "$Stack_Updated_values" - if [ -n $old_value ]; then - update_line="Updated $key from $old_value to $value" - else - update_line="Added $key to $value" - fi - echo "$update_line" >> "$Updated_ValuesFILE" - fi - fi - - elif [[ "$valueInVariableGroup" = "dont_change" ]]; then - old_value=$(yq eval ".variables.$key" $Temp_constants_FILE) - yq eval ".variables.$key = \"$old_value\"" -i $constants_FILE - echo "constants.yml with old value $key=$old_value" - else - old_value=$(yq eval ".variables.$key" $Temp_constants_FILE) - if [ $old_value = $valueInVariableGroup ]; then - echo "$key has required value in constants.yml" - yq eval ".variables.$key = \"$valueInVariableGroup\"" -i $constants_FILE - else - if [[ "$1" == "override_constants.yaml" ]]; then - yq eval ".variables.$key = \"$valueInVariableGroup\"" -i "$1" - fi - - if [[ "$1" == "latest_stack_versions.yaml" && "$key" != *"SHA"* ]]; then - echo "$key=$valueInVariableGroup" >> "$Stack_Updated_values" - fi - - yq eval ".variables.$key = \"$valueInVariableGroup\"" -i $constants_FILE - echo "Updated constants.yml with given value $key=$valueInVariableGroup" - - # This is for all updates (for PR description) - if [[ "$key" != *"SHA"* ]]; then - if [ -n $old_value ]; then - update_line="Updated $key from $old_value to $value" - else - update_line="Added $key to $value" - fi - echo "$update_line" >> "$Updated_ValuesFILE" - fi - fi - fi - - else - yq eval ".variables.$key = \"$value\"" -i $constants_FILE - echo "Added $key = $value in constants.yml" - fi - - done < <(yq e '.[]' "$1") -} - -update_constants_file "override_constants.yaml" -update_constants_file "latest_stack_versions.yaml" - -rm $Temp_constants_FILE \ No newline at end of file diff --git a/monitor_version_scripts/update_latest_stack_versions.sh b/monitor_version_scripts/update_latest_stack_versions.sh deleted file mode 100755 index 163d7975c7..0000000000 --- a/monitor_version_scripts/update_latest_stack_versions.sh +++ /dev/null @@ -1,41 +0,0 @@ -#read the whole text file, if that particular val exists update it in latest_stack_versions.yaml -split_lines() { - while IFS= read -r line; do - if [[ "$line" == *"="* ]]; then - - IFS=',' read -ra keyvalue_pairs <<< "$line" - - for keyvalue_pair in "${keyvalue_pairs[@]}"; do - key="${keyvalue_pair%%=*}" - value="${keyvalue_pair#*=}" - echo "key: $key, value: $value" - - if yq eval ".variables | has(\"$key\")" latest_stack_versions.yaml | grep -q 'true'; then - if [[ "$key" != *"python"* ]]; then - yq eval ".variables.$key = \"$value\"" -i latest_stack_versions.yaml - else - #this is only for python, in https://www.python.org/downloads/ all available minor versions are present of a major version - #so update with latest one - current_value=$(yq eval ".variables.$key" latest_stack_versions.yaml) - - # Update the key in latest_stack_versions.yaml - if [[ $(printf '%s\n' "$current_value" "$value" | sort -V | tail -n 1) != "$current_value" ]]; then - yq eval ".variables.$key = \"$value\"" -i latest_stack_versions.yaml - echo "Updated $key in latest_stack_versions.yaml" - fi - fi - else - yq eval ".variables.$key = \"$value\"" -i latest_stack_versions.yaml - echo "Added $key to latest_stack_versions.yaml" - fi - done - fi - done < "$1" -} - -split_lines "generated_files/node_latest_versions.txt" -split_lines "generated_files/python_latest_versions.txt" -split_lines "generated_files/php_latest_versions.txt" -split_lines "generated_files/dotnet_latest_versions.txt" - -yq eval -i 'sort_keys(..)' "latest_stack_versions.yaml" \ No newline at end of file diff --git a/monitor_version_scripts/update_versions_to_build.sh b/monitor_version_scripts/update_versions_to_build.sh deleted file mode 100755 index 2654a77f34..0000000000 --- a/monitor_version_scripts/update_versions_to_build.sh +++ /dev/null @@ -1,138 +0,0 @@ -sort_versions_to_build_file(){ - versionsToBuild_File="$1" - tempfile1=$(mktemp) - tempfile2=$(mktemp) - - while IFS= read -r line || [[ -n "$line" ]]; do - if [[ "$line" = *"#"* ]]; then - echo "$line" >> "$tempfile1" - elif [[ "$line" =~ [^[:space:]] ]]; then - echo "$line" >> "$tempfile2" - fi - done < "$versionsToBuild_File" - - sort -V $tempfile2 -o $tempfile2 - - cat $tempfile2 >> $tempfile1 - cp $tempfile1 $versionsToBuild_File -} - -update_stack_versions_to_build(){ - versionsToBuild_FILE="$1" - version="$2" - value="$3" - key="$4" - - version_found=false - while IFS= read -r line; do - if [[ "$line" == *"$value"* ]]; then - version_found=true - echo "version already exists in sdks" - break - fi - done < "$versionsToBuild_FILE" - - if ! $version_found; then - if [[ "$key" == *"node"* ]]; then - # Check if the last line is empty - if [ -n "$(tail -c 1 "$versionsToBuild_FILE")" ]; then - echo "" >> "$versionsToBuild_FILE" - fi - echo -n "$value" >> "$versionsToBuild_FILE" - updated_files+=("$versionsToBuild_FILE") - # sort_versions_to_build_file "$versionsToBuild_FILE" - elif [[ "$key" == *"python"* ]]; then - gpgkeyname="python${version}_GPG_keys" - gpgkeysvalue=$(yq eval ".variables.$gpgkeyname" override_constants.yaml) - if [ -n "$(tail -c 1 "$versionsToBuild_FILE")" ]; then - echo "" >> "$versionsToBuild_FILE" - fi - echo -n "$value, $gpgkeysvalue," >> "$versionsToBuild_FILE" - updated_files+=("$versionsToBuild_FILE") - # sort_versions_to_build_file "$versionsToBuild_FILE" - elif [[ "$key" == *"php"* ]]; then - gpgkeyname="php${version}_GPG_keys" - gpgkeysvalue=$(yq eval ".variables.$gpgkeyname" override_constants.yaml) - phpSHAName="php${version}Version_SHA" - phpSHAValue=$(yq eval ".variables.$phpSHAName" latest_stack_versions.yaml) - if [ -n "$(tail -c 1 "$versionsToBuild_FILE")" ]; then - echo "" >> "$versionsToBuild_FILE" - fi - echo -n "$value, $phpSHAValue, $gpgkeysvalue," >> "$versionsToBuild_FILE" - updated_files+=("$versionsToBuild_FILE") - # sort_versions_to_build_file "$versionsToBuild_FILE" - fi - fi -} - -update_versions_to_build() { - key="$1" - value="$2" - version=${key//[^0-9]/} - if [[ "$key" == *"node"* ]]; then - versionsToBuild_Folder=$(cd .. && pwd)/platforms/nodejs/versions - debianFlavors="node$version" - elif [[ "$key" == *"python"* ]]; then - versionsToBuild_Folder=$(cd .. && pwd)/platforms/python/versions - debianFlavors="python$version" - elif [[ "$key" == *"php"* ]]; then - versionsToBuild_Folder=$(cd .. && pwd)/platforms/php/versions - debianFlavors="php$version" - elif [[ "$key" == *"NET"* ]]; then - versionsToBuild_Folder=$(cd .. && pwd)/platforms/dotnet/versions - debianFlavors="dotnet$version" - fi - - debianFlavors+="DebianFlavors" - echo "The one which needs to be searched is $debianFlavors" - alldebianFlavors=$(yq eval ".variables.$debianFlavors" override_constants.yaml) - echo "$alldebianFlavors" - - IFS=',' - for flavor in $alldebianFlavors; do - echo "$flavor" - versionsToBuild_FILE="$versionsToBuild_Folder/$flavor/versionsToBuild.txt" - - if [[ "$key" = *"NET"* ]]; then - while IFS= read -r line; do - echo "Sdk_version line is $line" - if [[ "$line" = *"$value"* ]]; then - sdk_version=$(echo "$line" | sed 's/^[^:]*://') - echo "after processing sdk_version is $sdk_version" - version_found=false - while IFS= read -r line_in_versionsToBuild || [[ -n "$line_in_versionsToBuild" ]]; do - if [[ "$line_in_versionsToBuild" = *"$sdk_version"* ]]; then - version_found=true - fi - done < "$versionsToBuild_FILE" - - if ! $version_found; then - if [ -n "$(tail -c 1 "$versionsToBuild_FILE")" ]; then - echo "" >> "$versionsToBuild_FILE" - fi - echo "$sdk_version" >> "$versionsToBuild_FILE" - updated_files+=("$versionsToBuild_FILE") - fi - fi - done < "generated_files/dotnet_sdk_latest_versions.txt" - else - update_stack_versions_to_build $versionsToBuild_FILE $version $value $key - fi - done -} - -file="Stack_Updated_values.txt" -# for sorting the updated files later -updated_files=() - -# Read the file line by line -while IFS='=' read -r key value; do - # Process each key-value pair - echo "Key: $key, Value: $value" - - update_versions_to_build $key $value -done < "$file" - -for element in "${updated_files[@]}"; do - sort_versions_to_build_file "$element" -done \ No newline at end of file diff --git a/monitor_version_scripts/web_scrap_files/dotnet_versions.py b/monitor_version_scripts/web_scrap_files/dotnet_versions.py deleted file mode 100644 index 3951aacb3c..0000000000 --- a/monitor_version_scripts/web_scrap_files/dotnet_versions.py +++ /dev/null @@ -1,122 +0,0 @@ -from bs4 import BeautifulSoup -import requests - -with open('generated_files/dotnet_version.xml','r') as file: - content = file.read() - -soup = BeautifulSoup(content, 'lxml-xml') - -version_table=soup.select('#supported-versions-table .table tr') -print("Available Dotnet Versions on Web") - -def scrape_CheckSum(version,category,type): - runtime_version="".join([category,version]) - # type is sdk or runtime - url=f"https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/{type}-{runtime_version}-linux-x64-binaries" - response=requests.get(url) - html_content=response.text - - # Parse the HTML content with BeautifulSoup - soup = BeautifulSoup(html_content, 'html.parser') - - check_sum=soup.select('#checksum')[0]['value'] - return check_sum - -def scrap_sdk_versions(HTML_CONTENT,ASPNET_runtime_version,NET_runtime_version): - all_version_tags=HTML_CONTENT.select('h3') - all_description_tags=HTML_CONTENT.select('dl') - for index,version_tag in enumerate(all_version_tags): - if "sdk" in version_tag.get('id'): - sdk_version=(version_tag.text).replace("SDK ","").strip() - check_sum=scrape_CheckSum(sdk_version,"","sdk") - - # This is to check for full_version - if(len(all_description_tags)>index): - description_title_tags=all_description_tags[index].select('dt') - - for title_tag in description_title_tags: - if "Full version" in title_tag.text: - full_version=title_tag.find_next_sibling().text - sdk_version=full_version - - print(f"sdk_version is {sdk_version}, SHA is {check_sum}") - with open('generated_files/dotnet_sdk_latest_versions.txt', 'a') as version_file: - version_file.write(f"{ASPNET_runtime_version}:{sdk_version}, {check_sum},\n") - version_file.write(f"{NET_runtime_version}:{sdk_version}, {check_sum},\n") - - break - - return - -def scrap_runtime_versions(HTML_CONTENT,major_version): - all_version_tags=HTML_CONTENT.select('h3') - all_description_tags=HTML_CONTENT.select('dl') - x=major_version.replace('.','') - ASPNET_runtime_version=None - NET_runtime_version=None - for index,version_tag in enumerate(all_version_tags): - if ("runtime" in version_tag.get('id')) and not ("desktop" in version_tag.get('id')): - if ("ASP.NET Core Runtime" in version_tag.text): - runtime_version=(version_tag.text).replace("ASP.NET Core Runtime ","").strip() - check_sum=scrape_CheckSum(runtime_version,"aspnetcore-","runtime") - - if(len(all_description_tags)>index): - description_title_tags=all_description_tags[index].select('dt') - - for title_tag in description_title_tags: - if "Full version" in title_tag.text: - full_version=title_tag.find_next_sibling().text - runtime_version=full_version - - ASPNET_runtime_version=runtime_version - print(f"ASP_runtime_version is {runtime_version}, SHA is {check_sum}") - with open('generated_files/dotnet_latest_versions.txt', 'a') as version_file: - version_file.write(f"ASPNET_CORE_APP_{x}={runtime_version},") - version_file.write(f"ASPNET_CORE_APP_{x}_SHA={check_sum}\n") - - if (".NET Runtime" in version_tag.text): - runtime_version=(version_tag.text).replace(".NET Runtime ","").strip() - check_sum=scrape_CheckSum(runtime_version,"","runtime") - - if(len(all_description_tags)>index): - description_title_tags=all_description_tags[index].select('dt') - - for title_tag in description_title_tags: - if "Full version" in title_tag.text: - full_version=title_tag.find_next_sibling().text - runtime_version=full_version - - NET_runtime_version=runtime_version - print(f"NET_runtime_version is {runtime_version}, SHA is {check_sum}") - with open('generated_files/dotnet_latest_versions.txt', 'a') as version_file: - version_file.write(f"NET_CORE_APP_{x}={runtime_version},") - version_file.write(f"NET_CORE_APP_{x}_SHA={check_sum}\n") - - return [ASPNET_runtime_version,NET_runtime_version] - -def scrap_particular_version(major_version,version): - url=f"https://dotnet.microsoft.com/en-us/download/dotnet/{major_version}" - response=requests.get(url) - html_content=response.text - - # Parse the HTML content with BeautifulSoup - soup = BeautifulSoup(html_content, 'html.parser') - - version_details=soup.select('.download-wrap .row .col-md-6') - - runtime_fullversions=scrap_runtime_versions(version_details[1],major_version) - scrap_sdk_versions(version_details[0],runtime_fullversions[0],runtime_fullversions[1]) - - return - -for index,each_version in enumerate(version_table): - if index !=0: - version=each_version.find_all('td')[3].text - split_version=version.split('.') - - major_version='.'.join(split_version[:2]) - - print(f"version is {version}") - - scrap_particular_version(major_version,version) - diff --git a/monitor_version_scripts/web_scrap_files/node_versions.py b/monitor_version_scripts/web_scrap_files/node_versions.py deleted file mode 100644 index 41a83ba335..0000000000 --- a/monitor_version_scripts/web_scrap_files/node_versions.py +++ /dev/null @@ -1,14 +0,0 @@ -import requests -from datetime import date - -response = requests.get('https://endoflife.date/api/nodejs.json') -json_data = response.json() - -todays_date = date.today().strftime("%Y-%m-%d") - -for element in json_data: - if element["eol"] != True and element["eol"] > todays_date: - version = element["latest"] - major_version = element["cycle"] - with open('generated_files/node_latest_versions.txt', 'a') as version_file: - version_file.write(f"node{major_version}Version={version}\n") \ No newline at end of file diff --git a/monitor_version_scripts/web_scrap_files/php_versions.py b/monitor_version_scripts/web_scrap_files/php_versions.py deleted file mode 100644 index 9abda2eed8..0000000000 --- a/monitor_version_scripts/web_scrap_files/php_versions.py +++ /dev/null @@ -1,31 +0,0 @@ -import requests -from datetime import date -from bs4 import BeautifulSoup - -with open('generated_files/php_version.xml', 'r') as file: - content = file.read() - -soup = BeautifulSoup(content, 'lxml-xml') - -def getSHA(php_version): - elements = soup.find("a", href=f"/distributions/php-{php_version}.tar.xz") - if elements: - element_SHA = elements.find_parent().find(class_="sha256").text - return element_SHA - else: - return None - -response = requests.get('https://endoflife.date/api/php.json') -json_data = response.json() - -todays_date = date.today().strftime("%Y-%m-%d") - -for element in json_data: - if element["eol"] != True and element["eol"] > todays_date: - version = element["latest"] - version_SHA = getSHA(element["latest"]) - if version_SHA: - x = element["cycle"].replace('.', '') - with open('generated_files/php_latest_versions.txt', 'a') as version_file: - version_file.write(f"php{x}Version={version},") - version_file.write(f"php{x}Version_SHA={version_SHA}\n") \ No newline at end of file diff --git a/monitor_version_scripts/web_scrap_files/python_versions.py b/monitor_version_scripts/web_scrap_files/python_versions.py deleted file mode 100644 index 8bc18389ad..0000000000 --- a/monitor_version_scripts/web_scrap_files/python_versions.py +++ /dev/null @@ -1,15 +0,0 @@ -import requests -from datetime import date - -response = requests.get('https://endoflife.date/api/python.json') -json_data = response.json() - -todays_date = date.today().strftime("%Y-%m-%d") - -for element in json_data: - if element["eol"] > todays_date: - version = element["latest"] - major_version = element["cycle"].replace('.', '') - - with open('generated_files/python_latest_versions.txt', 'a') as version_file: - version_file.write(f"python{major_version}Version={version}\n") \ No newline at end of file diff --git a/tests/images/build/Dockerfile b/tests/images/build/Dockerfile deleted file mode 100644 index 9f56673684..0000000000 --- a/tests/images/build/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG PARENT_IMAGE_BASE -FROM ${PARENT_IMAGE_BASE} - -# Following is a pattern that AppService currently uses -RUN groupadd -g 1002 oryx_group -RUN useradd -u 1001 -g oryx_group oryx_user -RUN chown -R oryx_user:oryx_group /tmp - -# Grant permissions to user's home folder as languages like .NET Core and Node -# try using it. -RUN mkdir -p /home/oryx_user -RUN chmod -R 777 /home/oryx_user - -# Run the container as the following user -USER oryx_user \ No newline at end of file diff --git a/tests/images/build/gitHubActions.AsBase.Dockerfile b/tests/images/build/gitHubActions.AsBase.Dockerfile deleted file mode 100644 index 2ff43613dc..0000000000 --- a/tests/images/build/gitHubActions.AsBase.Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -ARG PARENT_IMAGE_BASE - -FROM oryxdevmcr.azurecr.io/public/oryx/build:${PARENT_IMAGE_BASE} as oryx-githubactions - -FROM scratch -COPY --from=oryx-githubactions / / - -ENV ORYX_PATHS=/opt/oryx:/opt/nodejs/lts/bin:/opt/dotnet/sdks/lts:/opt/python/latest/bin:/opt/php/lts/bin:/opt/php-composer:/opt/yarn/stable/bin:/opt/hugo/lts - -ENV DEBIAN_FRONTEND=noninteractive \ - DOTNET_RUNNING_IN_CONTAINER=true \ - DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ - DOTNET_USE_POLLING_FILE_WATCHER=true \ - ENABLE_DYNAMIC_INSTALL=true \ - HOME=/home \ - LANG=C.UTF-8 \ - NUGET_PACKAGES=/var/nuget \ - NUGET_XMLDOC_MODE=skip \ - ORIGINAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ - ORYX_SDK_STORAGE_BASE_URL=https://oryxsdksstaging.blob.core.windows.net \ - PATH=$ORYX_PATHS:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools:/opt/nodejs/9/bin \ - PYTHONIOENCODING=UTF-8 - -ENTRYPOINT [ "benv" ] \ No newline at end of file diff --git a/tests/images/build/gitHubActions.AsBaseWithEnv.Dockerfile b/tests/images/build/gitHubActions.AsBaseWithEnv.Dockerfile deleted file mode 100644 index 804f112be5..0000000000 --- a/tests/images/build/gitHubActions.AsBaseWithEnv.Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -ARG PARENT_IMAGE_BASE -ARG DEBIAN_FLAVOR - -FROM oryxdevmcr.azurecr.io/public/oryx/build:${PARENT_IMAGE_BASE} as oryx-githubactions - -# set DEBIAN_FLAVOR environment variable in final image -FROM scratch -ARG DEBIAN_FLAVOR -COPY --from=oryx-githubactions / / -ENV ORYX_PATHS=/opt/oryx:/opt/nodejs/lts/bin:/opt/dotnet/sdks/lts:/opt/python/latest/bin:/opt/php/lts/bin:/opt/php-composer:/opt/yarn/stable/bin:/opt/hugo/lts - -ENV DEBIAN_FLAVOR=${DEBIAN_FLAVOR} \ - DEBIAN_FRONTEND=noninteractive \ - DOTNET_RUNNING_IN_CONTAINER=true \ - DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ - DOTNET_USE_POLLING_FILE_WATCHER=true \ - ENABLE_DYNAMIC_INSTALL=true \ - HOME=/home \ - LANG=C.UTF-8 \ - NUGET_PACKAGES=/var/nuget \ - NUGET_XMLDOC_MODE=skip \ - ORIGINAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ - ORYX_SDK_STORAGE_BASE_URL=https://oryxsdksstaging.blob.core.windows.net \ - PATH=$ORYX_PATHS:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.dotnet/tools:/opt/nodejs/9/bin \ - PYTHONIOENCODING=UTF-8 - -ENTRYPOINT [ "benv" ] \ No newline at end of file diff --git a/tests/images/build/gitHubActions.Dockerfile b/tests/images/build/gitHubActions.Dockerfile deleted file mode 100644 index 9f56673684..0000000000 --- a/tests/images/build/gitHubActions.Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG PARENT_IMAGE_BASE -FROM ${PARENT_IMAGE_BASE} - -# Following is a pattern that AppService currently uses -RUN groupadd -g 1002 oryx_group -RUN useradd -u 1001 -g oryx_group oryx_user -RUN chown -R oryx_user:oryx_group /tmp - -# Grant permissions to user's home folder as languages like .NET Core and Node -# try using it. -RUN mkdir -p /home/oryx_user -RUN chmod -R 777 /home/oryx_user - -# Run the container as the following user -USER oryx_user \ No newline at end of file diff --git a/tests/testRepo.sh b/tests/testRepo.sh deleted file mode 100644 index f8f65503cf..0000000000 --- a/tests/testRepo.sh +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env bash -# -------------------------------------------------------------------------------------------- -# Copyright (c) Microsoft Corporation. All rights reserved. -# Licensed under the MIT license. -# -------------------------------------------------------------------------------------------- - -# Description: -# Run from root of a repo to build and run as a containerized app. -# By default publish host port 8080 mapped to container port 8080. -# If available, `build.env` specifies build-time env vars. -# $5 specifies a user-specified start script. -# -# Example: -# # build and run a Python app listening on host port 88 -# ./test-repo.sh ./app 88 8088 python - -ORYX_VERSION=latest -NODE_VERSION=10.14 -PYTHON_VERSION=3.7 -DOTNETCORE_VERSION=2.2 - -IMAGE_HOST=docker.io -IMAGE_USER=oryxprod - -BUILD_IMAGE="${IMAGE_HOST}/${IMAGE_USER}/build:${ORYX_VERSION}" -RUN_IMAGE_NODEJS="${IMAGE_HOST}/${IMAGE_USER}/node-${NODE_VERSION}:${ORYX_VERSION}" -RUN_IMAGE_PYTHON="${IMAGE_HOST}/${IMAGE_USER}/python-${PYTHON_VERSION}:${ORYX_VERSION}" -RUN_IMAGE_DOTNETCORE="${IMAGE_HOST}/${IMAGE_USER}/dotnetcore-${DOTNETCORE_VERSION}:${ORYX_VERSION}" - -LOGFILE_PATH="./test-repo.log" - -function test-repo() { - local repo_path=${1:-"$(pwd)"} - local host_port=${2:-"8080"} - local container_port=${3:-"8080"} - local runtime=${4:-"nodejs"} - local start_script=${5:-""} - - DOCKER_FLAGS='' - if [[ -e "${repo_path}/.env" ]]; then - DOCKER_FLAGS+="--env-file ${repo_path}/.env" - fi - - # build - docker pull ${BUILD_IMAGE} - docker run --interactive --tty \ - --volume "$repo_path":/repo \ - ${DOCKER_FLAGS} \ - "$BUILD_IMAGE" \ - sh -c "oryx build --log-file ${LOGFILE_PATH} /repo" - - # run - case $runtime in - nodejs) - RUN_IMAGE="${RUN_IMAGE_NODEJS}" - ;; - python) - RUN_IMAGE="${RUN_IMAGE_PYTHON}" - ;; - dotnetcore) - RUN_IMAGE="${RUN_IMAGE_DOTNETCORE}" - ;; - esac - - TEST_CONTAINER_NAME=oryx-test-repo - cid=$(docker container ls \ - --all --filter "name=${TEST_CONTAINER_NAME}" --quiet) - if [[ -n "$cid" ]]; then docker stop $cid; docker rm $cid; fi - - docker pull ${RUN_IMAGE} - docker run --detach \ - --name ${TEST_CONTAINER_NAME} \ - --volume $(pwd):/app \ - --publish ${host_port}:${container_port} \ - --env PORT=${container_port} \ - ${DOCKER_FLAGS} \ - "$RUN_IMAGE" \ - sh -c "cd /app && oryx && /app/run.sh" -} - -test-repo $@ \ No newline at end of file From 567dc5d99f348f9f82cee3c8aed25922bac9126d Mon Sep 17 00:00:00 2001 From: Sarath chandra Bussa Date: Mon, 16 Mar 2026 13:59:32 +0530 Subject: [PATCH 3/3] fix: remove stale references to deleted files Third-pass cleanup fixing broken references left after file removals: - build/__variables.sh: remove 15 stale Dockerfile path variables and ACR image names pointing to non-existent files (Dockerfile, ltsVersions.Dockerfile, vso.*.Dockerfile, buildScriptGenerator, supportFiles, githubRunners.BuildPackDeps*, lts-versions/vso ACR names) - doc/architecture.md: replace ~80 lines of broken Dockerfile links (ltsVersions.Dockerfile deleted, Dockerfile->full.Dockerfile, stale runtime template references) with pointers to the actual directories - doc/base_images.md: remove broken links to deleted githubRunner Dockerfiles and non-existent buildRunTimeImage.sh - README.md: remove broken buildBuildImages.sh reference - Oryx.sln: remove stale images\build\Dockerfile solution item - .dockerignore: remove stale vsts/ entry - DockerVolume.cs: update comment referencing deleted vsts\scripts\ - platforms/php: remove dead commented-out __phpVersions.sh references --- .dockerignore | 1 - Oryx.sln | 1 - README.md | 3 +- build/__variables.sh | 15 ---- doc/architecture.md | 110 +++--------------------- doc/base_images.md | 9 +- platforms/php/buildPhp.sh | 1 - platforms/php/composer/Dockerfile | 1 - tests/Oryx.Tests.Common/DockerVolume.cs | 3 +- 9 files changed, 15 insertions(+), 129 deletions(-) diff --git a/.dockerignore b/.dockerignore index 530d34bcf1..3347f8c4c5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,6 @@ **/.git/ artifacts/ tests/ -vsts/ **/github.com/ **/pkg/ **/bin/ diff --git a/Oryx.sln b/Oryx.sln index 7d2b1b5efa..6fd0eb36cb 100644 --- a/Oryx.sln +++ b/Oryx.sln @@ -10,7 +10,6 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{33D6DAAC-19A1-43DC-A586-A5F18EE98718}" ProjectSection(SolutionItems) = preProject images\build\benv.sh = images\build\benv.sh - images\build\Dockerfile = images\build\Dockerfile EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{C0150C21-3EC8-4973-B57C-26BC27A4ED57}" diff --git a/README.md b/README.md index 7488fed6bb..a768e16d3d 100644 --- a/README.md +++ b/README.md @@ -117,8 +117,7 @@ docker run --detach --rm \ ## Build Server Invocation 1. Build the Oryx solution 1. ![Build Solutionpng](doc/buildServer/buildSolution.png) -1. Create image with oryx and platform binaries - 1. `time build/buildBuildImages.sh -t ltsversion` +1. Create image with oryx and platform binaries (see [images/build/Dockerfiles](./images/build/Dockerfiles/)) 1. Run docker to port map, volume mount a directory, specify the image with `oryx build`, and invoke BuildServer 1. ```bash docker run -it -p 8086:80 \ diff --git a/build/__variables.sh b/build/__variables.sh index 93362f6a3a..967b366fcb 100755 --- a/build/__variables.sh +++ b/build/__variables.sh @@ -18,9 +18,6 @@ declare -r BUILD_CONFIGURATION="${BUILDCONFIGURATION:-Debug}" declare -r RELEASE_TAG_NAME="${RELEASE_TAG_NAME:-$BUILD_NUMBER}" declare -r BUILD_IMAGES_BUILD_CONTEXT_DIR="$REPO_DIR" -declare -r BUILD_IMAGES_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/Dockerfile" -declare -r BUILD_IMAGES_LTS_VERSIONS_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/ltsVersions.Dockerfile" -declare -r BUILD_IMAGES_LTS_VERSIONS_BUSTER_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/ltsVersions.buster.Dockerfile" declare -r PACK_IMAGE_DOCKERFILE="$REPO_DIR/images/pack-builder/pack-runner.Dockerfile" declare -r RUNTIME_IMAGES_SRC_DIR="$REPO_DIR/images/runtime" declare -r BUILD_IMAGES_CLI_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/cli.Dockerfile" @@ -28,15 +25,6 @@ declare -r BUILD_IMAGES_CLI_BUILDER_DOCKERFILE="$REPO_DIR/images/build/Dockerfil declare -r BUILD_IMAGES_FULL_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/full.Dockerfile" declare -r BUILD_IMAGES_AZ_FUNCS_JAMSTACK_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/azureFunctions.JamStack.Dockerfile" declare -r BUILD_IMAGES_GITHUB_ACTIONS_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubActions.Dockerfile" -declare -r BUILD_IMAGES_VSO_FOCAL_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/vso.focal.Dockerfile" -declare -r BUILD_IMAGES_VSO_BULLSEYE_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/vso.bullseye.Dockerfile" -declare -r BUILD_IMAGES_BUILDSCRIPTGENERATOR_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/buildScriptGenerator.Dockerfile" -declare -r BUILD_IMAGES_SUPPORT_FILES_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/supportFilesForBuildingBuildImages.Dockerfile" -declare -r BUILD_IMAGES_GITHUB_RUNNERS_BUILDPACKDEPS_STRETCH_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubRunners.BuildPackDepsStretch.Dockerfile" -declare -r BUILD_IMAGES_GITHUB_RUNNERS_BUILDPACKDEPS_FOCAL_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubRunners.BuildPackDepsFocal.Dockerfile" -declare -r BUILD_IMAGES_GITHUB_RUNNERS_BUILDPACKDEPS_BUSTER_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubRunners.BuildPackDepsBuster.Dockerfile" -declare -r BUILD_IMAGES_GITHUB_RUNNERS_BUILDPACKDEPS_BULLSEYE_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubRunners.BuildPackDepsBullseye.Dockerfile" -declare -r BUILD_IMAGES_GITHUB_RUNNERS_BUILDPACKDEPS_BOOKWORM_DOCKERFILE="$REPO_DIR/images/build/Dockerfiles/gitHubRunners.BuildPackDepsBookworm.Dockerfile" declare -r RUNTIME_BASE_IMAGE_DOCKERFILE_PATH="$RUNTIME_IMAGES_SRC_DIR/commonbase/Dockerfile" declare -r RUNTIME_BASE_IMAGE_NAME="oryx-run-base" declare -r RUNTIME_BUSTER_BASE_IMAGE_NAME="oryx-run-base-buster" @@ -71,10 +59,7 @@ declare -r ACR_RUNTIME_IMAGES_REPO="$ACR_PUBLIC_PREFIX" declare -r ACR_PACK_IMAGE_REPO="$ACR_PUBLIC_PREFIX/$PACK_IMAGE_NAME" declare -r ACR_AZURE_FUNCTIONS_JAMSTACK_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:azfunc-jamstack" declare -r ACR_BUILD_FULL_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:full" -declare -r ACR_BUILD_LTS_VERSIONS_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:lts-versions" declare -r ACR_BUILD_GITHUB_ACTIONS_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:github-actions" -declare -r ACR_BUILD_VSO_FOCAL_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:vso-ubuntu-focal" -declare -r ACR_BUILD_VSO_BULLSEYE_IMAGE_NAME="$ACR_BUILD_IMAGES_REPO:vso-debian-bullseye" declare -r BASE_IMAGES_PUBLIC_REPO="$ACR_DEV_NAME/public/oryx/base" declare -r BASE_IMAGES_STAGING_REPO="$ACR_DEV_NAME/staging/oryx/base" diff --git a/doc/architecture.md b/doc/architecture.md index 67c1acef30..ce78e1fe09 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -27,7 +27,7 @@ It analyzes the codebase, detecting which programming platforms are being used a We have a single build image which supports all of the SDKs and their versions. This allows developers to use multiple languages in their build, for instance run a Python setup script when building their .NET Core app, or have a TypeScript frontend for their Python app. You can take a look at its -[Dockerfile](../images/build/Dockerfiles/Dockerfile) to better understand its contents. +[Dockerfile](../images/build/Dockerfiles/full.Dockerfile) to better understand its contents. Note that some layers of this build image come from yet another set of images, which we build independently for modularization and for faster build times. @@ -39,7 +39,7 @@ version of Node 8 the default ones. The build image also contains the build script generator, which can be accessed by its alias, `oryx`. The build image manifest is at -[/images/build/Dockerfiles/Dockerfile](../images/build/Dockerfiles/Dockerfile). It is built and +[/images/build/Dockerfiles/full.Dockerfile](../images/build/Dockerfiles/full.Dockerfile). It is built and published via the Microsoft Container Registry (MCR) ([info][]) as `mcr.microsoft.com/oryx/build` and syndicated to Docker Hub as [`https://hub.docker.com/_/microsoft-oryx-images`](https://hub.docker.com/_/microsoft-oryx-images). Pull with `docker pull @@ -54,64 +54,9 @@ mcr.microsoft.com/oryx/build:latest`.
For a list of packages installed as a part of this build image, click here. -#### [Lts Versions Build Image](../images/build/Dockerfiles/ltsVersions.Dockerfile) - -**Docker** - -- [`buildpack-deps:stretch`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L5) -- [`mcr.microsoft.com/oryx/python-build-base:3.7-{BUILD}`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L160) - -**`apt-get`** - -- Basic build tools - - [`build-essential`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L25) - - [`default-libmysqlclient-dev`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L31) - - [`git`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L21) - - [`libpq-dev`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L29) - - [`make`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L22) - - [`moreutils`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L33) - - [`rsync`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L34) - - [`unixodbc-dev`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L27) - - [`unzip`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L23) - - [`zip`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L35) -- .NET Core - - [`libc6`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L50) - - [`libgcc1`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L51) - - [`libgssapi-krb5-2`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L52) - - [`libicu57`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L53) - - [`liblttng-ust0`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L54) - - [`libssl1.0.2`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L55) - - [`libstdc++6`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L56) - - [`zlib1g`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L57) -- Node - - [`jq`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L108) -- Python - - [`tk-dev`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L169) - - [`uuid-dev`](../images/build/Dockerfiles/ltsVersions.Dockerfile#L170) - -#### [Full build image](../images/build/Dockerfiles/Dockerfile) - -**Docker** - -- Python - - [`mcr.microsoft.com/oryx/python-build-base:2.7-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L179) - - [`mcr.microsoft.com/oryx/python-build-base:3.6-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L180) - - [`mcr.microsoft.com/oryx/python-build-base:3.8-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L181) -- PHP - - [`mcr.microsoft.com/oryx/php-build-base:5.6-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L217) - - [`mcr.microsoft.com/oryx/php-build-base:7.0-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L218) - - [`mcr.microsoft.com/oryx/php-build-base:7.2-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L219) - - [`mcr.microsoft.com/oryx/php-build-base:7.3-{BUILD}`](../images/build/Dockerfiles/Dockerfile#L220) -- [`golang:1.11-stretch`](../images/build/Dockerfiles/Dockerfile#L228) - -**`apt-get`** - -- .NET Core - - [`libunwind8`](../images/build/Dockerfiles/Dockerfile#L16) - - [`libcurl3`](../images/build/Dockerfiles/Dockerfile#L26) - - [`libuuid1`](../images/build/Dockerfiles/Dockerfile#L27) -- Node - - [`jq`](../images/build/Dockerfiles/Dockerfile#L100) +See the Dockerfiles in [/images/build/Dockerfiles](../images/build/Dockerfiles/) for the full +list of base images and packages installed. The main build image is +[full.Dockerfile](../images/build/Dockerfiles/full.Dockerfile).
@@ -155,46 +100,11 @@ The *Run* images are published to MCR (mcr.microsoft.com/oryx/<platform>).
For a list of packages installed as a part of the runtime images, click here. -#### [Common base image](../images/runtime/commonbase/Dockerfile) - -**Docker** - -- [`buildpack-deps:stretch-curl`](../images/runtime/commonbase/Dockerfile#L1) - -**`apt-get`** - -- [`xz-utils`](../images/runtime/commonbase/Dockerfile#L4) - -#### [.NET Core template](../images/runtime/dotnetcore/template.Dockerfile) - -**Docker** - -- [`golang:1.11-stretch`](../images/runtime/dotnetcore/template.Dockerfile#L2) -- [`mcr.microsoft.com/dotnet/core/runtime:{VERSION}](../images/runtime/dotnetcore/template.Dockerfile#L12) - -**`apt-get`** - -- [`file`](../images/runtime/dotnetcore/template.Dockerfile#L16) - -#### [Node template](../images/runtime/node/template.Dockerfile) - -**Docker** - -- [`golang:1.11-stretch`](../images/runtime/node/template.Dockerfile#L2) -- [`mcr.microsoft.com/oryx/node-base:{VERSION}`](../images/runtime/node/template.Dockerfile#L12) - -#### [PHP template](../images/runtime/php/template.Dockerfile) - -**Docker** - -- [`golang:1.11-stretch`](../images/runtime/php/template.Dockerfile#L2) -- [`mcr.microsoft.com/oryx/php-base:{VERSION}`](../images/runtime/php/template.Dockerfile#L12) - -#### [Python template](../images/runtime/python/template.Dockerfile) - -**Docker** - -- [`golang:1.11-stretch`](../images/runtime/python/template.Dockerfile#L2) +See the Dockerfiles in [/images/runtime](../images/runtime/) for the full list of runtime +images and packages installed. The common base image is at +[commonbase/Dockerfile](../images/runtime/commonbase/Dockerfile). Each platform has +version-specific Dockerfiles (e.g. `dotnetcore/8.0/bookworm.Dockerfile`, +`python/template.Dockerfile`).
diff --git a/doc/base_images.md b/doc/base_images.md index 2e76f64d1b..b68e6ad7d0 100644 --- a/doc/base_images.md +++ b/doc/base_images.md @@ -14,11 +14,8 @@ packages required at build-time. The following system packages are also added to the Oryx image. If you require additional packages please [open an issue][]. -Support different version of debian (stretch, buster and bullseye) and ubuntu (focal) `buildpack-deps` based images: -[Buster](../images/build/Dockerfiles/githubRunner.BuildPackDepsBuster.Dockerfile), -[Ubuntu(focal)](../images/build/Dockerfiles/githubRunner.BuildPackDepsFocal.Dockerfile), -[Stretch](../images/build/Dockerfiles/githubRunner.BuildPackDepsStretch.Dockerfile), -[Bullseye](../images/build/Dockerfiles/githubRunner.BuildPackDepsBullseye.Dockerfile) +Support different version of debian (stretch, buster and bullseye) and ubuntu (focal) `buildpack-deps` based images. +These build images are defined in [/images/build/Dockerfiles](../images/build/Dockerfiles/). [open an issue]: https://github.com/Microsoft/Oryx/issues/new/choose @@ -47,7 +44,7 @@ or in AppService's language selection. Oryx's run images build on Docker's runtime-specific images for [Node.js][] , [Python][], [Php][] and [Dotnet][]. A start script generator is included. Packages included for specific runtimes are described in their documentation. -The runtime image can be built locally using the [`buildRunTimeImage.sh`](../build/buildRunTimeImage.sh) script. +The runtime image Dockerfiles are located in [/images/runtime](../images/runtime/). Runtimes and versions supported by Oryx are listed in [the main README](../README.md#supported-platforms). diff --git a/platforms/php/buildPhp.sh b/platforms/php/buildPhp.sh index 9fb5401a52..aaf9b885f7 100755 --- a/platforms/php/buildPhp.sh +++ b/platforms/php/buildPhp.sh @@ -9,7 +9,6 @@ set -ex declare -r REPO_DIR=$( cd $( dirname "$0" ) && cd .. && cd .. && pwd ) source $REPO_DIR/platforms/__common.sh -# source $REPO_DIR/build/__phpVersions.sh osFlavor=$1 sdkStorageAccountUrl="$2" phpType=$3 diff --git a/platforms/php/composer/Dockerfile b/platforms/php/composer/Dockerfile index a747039039..2e0cf919dc 100644 --- a/platforms/php/composer/Dockerfile +++ b/platforms/php/composer/Dockerfile @@ -3,7 +3,6 @@ FROM mcr.microsoft.com/mirror/docker/library/buildpack-deps:${OS_FLAVOR} AS php- ARG OS_FLAVOR ENV OS_FLAVOR=$OS_FLAVOR COPY platforms/php/prereqs /php -# COPY build/__phpVersions.sh /php/ COPY platforms/php/prereqs/build.sh /tmp/ COPY images/receiveGpgKeys.sh /tmp/receiveGpgKeys.sh diff --git a/tests/Oryx.Tests.Common/DockerVolume.cs b/tests/Oryx.Tests.Common/DockerVolume.cs index 6ce0337f83..1ee12ba318 100644 --- a/tests/Oryx.Tests.Common/DockerVolume.cs +++ b/tests/Oryx.Tests.Common/DockerVolume.cs @@ -22,8 +22,7 @@ public class DockerVolume // VSTS variable used to identify if the tests are running in VSTS or not (for example, on dev machines) public const string VstsAgentNameEnivronmentVariable = "AGENT_NAME"; - // NOTE: Make sure to change the file "vsts\scripts\dockerCleanup.sh" if the name of the following directory - // is changed. + // NOTE: If the name of the following directory is changed, update any Docker cleanup scripts accordingly. public const string MountedHostDirRootName = "OryxTestsMountedDirs"; public const string ContainerDirRoot = "/oryxtests";