diff --git a/.github/workflows/automationTemplate.yaml b/.github/workflows/automationTemplate.yaml index 5421a74266..c2d0a82a7f 100644 --- a/.github/workflows/automationTemplate.yaml +++ b/.github/workflows/automationTemplate.yaml @@ -25,6 +25,7 @@ env: PYTHON_MIN_RELEASE_VERSION: ${{ vars.PYTHON_MIN_RELEASE_VERSION }} PYTHON_MAX_RELEASE_VERSION: ${{ vars.PYTHON_MAX_RELEASE_VERSION }} PYTHON_BLOCKED_VERSIONS_ARRAY: ${{ vars.PYTHON_BLOCKED_VERSIONS_ARRAY }} + ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN: ${{ secrets.ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN }} jobs: build: runs-on: ubuntu-latest @@ -41,7 +42,6 @@ jobs: declare -A platformNamesAsInBasePipeline platformNamesAsInBasePipeline=( ["dotnet"]="DotNetCore" ["python"]="Python" ) echo "PLATFORM_NAME_CAMEL_CASE=${platformNamesAsInBasePipeline[${{ inputs.platformName }}]}" >> $GITHUB_ENV - printenv - name: Run SDK Automation run: | diff --git a/build/__dotNetCoreRunTimeVersions.sh b/build/__dotNetCoreRunTimeVersions.sh index c66e2de09b..5f9efc55b4 100644 --- a/build/__dotNetCoreRunTimeVersions.sh +++ b/build/__dotNetCoreRunTimeVersions.sh @@ -1,6 +1,6 @@ # This file was auto-generated from 'constants.yaml'. Changes may be overridden. -DOT_NET_CORE_RUNTIME_BASE_TAG='20230623.1' +DOT_NET_CORE_RUNTIME_BASE_TAG='20230721.1' NET_CORE_APP_10='1.0.16' NET_CORE_APP_11='1.1.13' NET_CORE_APP_20='2.0.9' @@ -22,11 +22,11 @@ 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.19' -NET_CORE_APP_60_SHA='6e8e1db8b247c92c8de4b476e06ad464b0bd664919394afd5fb3962db477490e54865abd2510c29457efdef3be23f0ea4683d6caabcc74a6d7abddce4b4a154d' -ASPNET_CORE_APP_60='6.0.19' -ASPNET_CORE_APP_60_SHA='537e4b1be4fcaa5e69013b99c86808e0a13994c87d7542367b3eb18196206d1c27e46a865d89784229a04f69dadbe0b283d7adf1e7848c8d3c7998ee80c9e765' -NET_CORE_APP_70='7.0.8' -NET_CORE_APP_70_SHA='50463de25360aba18c29ab8a3d31896793a7bcf899b40249fcac77efab24888e93ac906dac04ea5b72026c89c07dd371247ff89e8613123dead7e889906aa876' -ASPNET_CORE_APP_70='7.0.8' -ASPNET_CORE_APP_70_SHA='b75cb42ecd1936b1b2af5ed59d7f3ef3eb0a602b23f5a272e62c42de9c75db1ae54878b2f9f28d72dac15bdbeaece81cc6344d0df5eae845bc130534ef1bfbb0' +NET_CORE_APP_60='6.0.20' +NET_CORE_APP_60_SHA='3688d7170a59015c36d6a5532db67bc22eff66b3eb0a7fc28e1f425791e27a5f467bc7dc593d7f455d72d08c7d27bfcc92b3c8bd30ec3c7c583a8aa82b5afbac' +ASPNET_CORE_APP_60='6.0.20' +ASPNET_CORE_APP_60_SHA='891bad6a52a7bcd5afa2a784fe68044d282f6d53fedab4bde6dff8d7d2138a484e947f7a6be156094324b37e9d7e07e87a67622bcf2ea197c2924389edd1d185' +NET_CORE_APP_70='7.0.9' +NET_CORE_APP_70_SHA='09552e5ae6ac014dadf17545ff0a30ab32921075a31fb33e7be148c13078e30d097f592ffa1b8d306563aaa3f6302e40c5c0ba815c1473bbd5d72e3bef55d91e' +ASPNET_CORE_APP_70='7.0.9' +ASPNET_CORE_APP_70_SHA='aabf4fa5ca726dc52774e5d644800ef7477815b22a982b7a2752dec6569186aabca93d5386e195e7ead377144601a786ae6a5d76ff28435bdabfad495cfe554b' diff --git a/build/__dotNetCoreSdkVersions.sh b/build/__dotNetCoreSdkVersions.sh index c949cfa4ec..8a0abba6a1 100644 --- a/build/__dotNetCoreSdkVersions.sh +++ b/build/__dotNetCoreSdkVersions.sh @@ -7,6 +7,6 @@ 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.411' +DOT_NET_60_SDK_VERSION='6.0.412' DOT_NET_60_RTM_SDK_VERSION='6-0-100-rtm-21527-11' -DOT_NET_70_SDK_VERSION='7.0.305' +DOT_NET_70_SDK_VERSION='7.0.306' diff --git a/build/__extVarNames.sh b/build/__extVarNames.sh index 66a08b54a2..a9c0e466f1 100644 --- a/build/__extVarNames.sh +++ b/build/__extVarNames.sh @@ -25,3 +25,4 @@ PYTHON_ENABLE_GUNICORN_MULTI_WORKERS_ENV_VAR_NAME='PYTHON_ENABLE_GUNICORN_MULTIW PYTHON_GUNICORN_CONFIG_PATH_ENV_VAR_NAME='PYTHON_USE_GUNICORN_CONFIG_FROM_PATH' PYTHON_GUNICORN_CUSTOM_WORKER_NUM='PYTHON_GUNICORN_CUSTOM_WORKER_NUM' PYTHON_GUNICORN_CUSTOM_THREAD_NUM='PYTHON_GUNICORN_CUSTOM_THREAD_NUM' +NGINX_CONF_FILE='NGINX_CONF_FILE' diff --git a/build/__phpVersions.sh b/build/__phpVersions.sh index 0338fefd33..fd7db37125 100644 --- a/build/__phpVersions.sh +++ b/build/__phpVersions.sh @@ -1,7 +1,7 @@ # This file was auto-generated from 'constants.yaml'. Changes may be overridden. PHP_RUNTIME_BASE_TAG='20230713.2' -PHP_FPM_RUNTIME_BASE_TAG='20230713.2' +PHP_FPM_RUNTIME_BASE_TAG='20230720.2' COMPOSER_VERSION='2.0.8' COMPOSER_SETUP_SHA384='e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02' COMPOSER1_9_VERSION='1.9.3' diff --git a/build/constants.yaml b/build/constants.yaml index e958852382..9a4c0332fa 100644 --- a/build/constants.yaml +++ b/build/constants.yaml @@ -25,6 +25,7 @@ python-gunicorn-config-path-env-var-name: PYTHON_USE_GUNICORN_CONFIG_FROM_PATH python-gunicorn-custom-worker-num: PYTHON_GUNICORN_CUSTOM_WORKER_NUM python-gunicorn-custom-thread-num: PYTHON_GUNICORN_CUSTOM_THREAD_NUM + nginx-conf-file: NGINX_CONF_FILE outputs: - type: csharp directory: src/BuildScriptGenerator.Common @@ -43,9 +44,9 @@ 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.411 + dot-net-60-sdk-version: 6.0.412 dot-net-60-rtm-sdk-version: 6-0-100-rtm-21527-11 - dot-net-70-sdk-version: 7.0.305 + dot-net-70-sdk-version: 7.0.306 runtime-versions: 3.0: debian-buster 3.1: debian-buster @@ -62,7 +63,7 @@ file-name-prefix: __ - name: dot-net-core-run-time-versions constants: - dot-net-core-runtime-base-tag: 20230623.1 + dot-net-core-runtime-base-tag: 20230721.1 net-core-app-10: 1.0.16 net-core-app-11: 1.1.13 net-core-app-20: 2.0.9 @@ -84,14 +85,14 @@ 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.19 - net-core-app-60-sha: 6e8e1db8b247c92c8de4b476e06ad464b0bd664919394afd5fb3962db477490e54865abd2510c29457efdef3be23f0ea4683d6caabcc74a6d7abddce4b4a154d - aspnet-core-app-60: 6.0.19 - aspnet-core-app-60-sha: 537e4b1be4fcaa5e69013b99c86808e0a13994c87d7542367b3eb18196206d1c27e46a865d89784229a04f69dadbe0b283d7adf1e7848c8d3c7998ee80c9e765 - net-core-app-70: 7.0.8 - net-core-app-70-sha: 50463de25360aba18c29ab8a3d31896793a7bcf899b40249fcac77efab24888e93ac906dac04ea5b72026c89c07dd371247ff89e8613123dead7e889906aa876 - aspnet-core-app-70: 7.0.8 - aspnet-core-app-70-sha: b75cb42ecd1936b1b2af5ed59d7f3ef3eb0a602b23f5a272e62c42de9c75db1ae54878b2f9f28d72dac15bdbeaece81cc6344d0df5eae845bc130534ef1bfbb0 + net-core-app-60: 6.0.20 + net-core-app-60-sha: 3688d7170a59015c36d6a5532db67bc22eff66b3eb0a7fc28e1f425791e27a5f467bc7dc593d7f455d72d08c7d27bfcc92b3c8bd30ec3c7c583a8aa82b5afbac + aspnet-core-app-60: 6.0.20 + aspnet-core-app-60-sha: 891bad6a52a7bcd5afa2a784fe68044d282f6d53fedab4bde6dff8d7d2138a484e947f7a6be156094324b37e9d7e07e87a67622bcf2ea197c2924389edd1d185 + net-core-app-70: 7.0.9 + net-core-app-70-sha: 09552e5ae6ac014dadf17545ff0a30ab32921075a31fb33e7be148c13078e30d097f592ffa1b8d306563aaa3f6302e40c5c0ba815c1473bbd5d72e3bef55d91e + aspnet-core-app-70: 7.0.9 + aspnet-core-app-70-sha: aabf4fa5ca726dc52774e5d644800ef7477815b22a982b7a2752dec6569186aabca93d5386e195e7ead377144601a786ae6a5d76ff28435bdabfad495cfe554b outputs: - type: csharp directory: src/BuildScriptGenerator/DotNetCore @@ -164,7 +165,7 @@ - name: php-versions constants: php-runtime-base-tag: 20230713.2 - php-fpm-runtime-base-tag: 20230713.2 + php-fpm-runtime-base-tag: 20230720.2 composer-version: 2.0.8 composer-setup-sha384: e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02 composer1-9-version: 1.9.3 @@ -456,7 +457,7 @@ ruby-staging-runtime-versions: - golang-staging-runtime-versions: - - + - outputs: - type: csharp directory: src/BuildScriptGenerator diff --git a/build/tools/Automation/Constants.cs b/build/tools/Automation/Constants.cs index aacdf7a362..681fbc904c 100644 --- a/build/tools/Automation/Constants.cs +++ b/build/tools/Automation/Constants.cs @@ -9,7 +9,9 @@ namespace Microsoft.Oryx.Automation public class Constants { public const string OryxSdkStorageBaseUrl = "https://oryx-cdn.microsoft.io"; + public const string OryxSdkStagingStorageBaseUrl = "https://oryxsdksstaging.blob.core.windows.net"; public const string OryxSdkStorageBaseUrlEnvVar = "ORYX_SDK_STORAGE_BASE_URL"; + public const string OryxSdkStagingPrivateSasTokenEnvVar = "ORYX_SDK_STORAGE_ACCOUNT_ACCESS_TOKEN"; public const string VersionsToBuildTxtFileName = "versionsToBuild.txt"; public const string ConstantsYaml = "constants.yaml"; public static readonly HashSet DebianFlavors = new HashSet() diff --git a/build/tools/Automation/DotNet/DotNetAutomator.cs b/build/tools/Automation/DotNet/DotNetAutomator.cs index 6422540141..d2e1d6fe57 100644 --- a/build/tools/Automation/DotNet/DotNetAutomator.cs +++ b/build/tools/Automation/DotNet/DotNetAutomator.cs @@ -58,8 +58,22 @@ public async Task RunAsync() this.oryxSdkStorageBaseUrl = Constants.OryxSdkStorageBaseUrl; } - this.oryxDotNetSdkVersions = await this.httpService.GetOryxSdkVersionsAsync( - this.oryxSdkStorageBaseUrl + DotNetConstants.DotNetSuffixUrl); + string sdkVersionsUrl = this.oryxSdkStorageBaseUrl + DotNetConstants.DotNetSuffixUrl; + + // A SAS token is required for the staging account. + if (this.oryxSdkStorageBaseUrl == Constants.OryxSdkStagingStorageBaseUrl) + { + string sasToken = Environment.GetEnvironmentVariable(Constants.OryxSdkStagingPrivateSasTokenEnvVar); + if (string.IsNullOrEmpty(sasToken)) + { + throw new ArgumentException($"The environment variable {Constants.OryxSdkStagingPrivateSasTokenEnvVar} " + + $"must be provided in order to access {Constants.OryxSdkStagingStorageBaseUrl}"); + } + + sdkVersionsUrl += "&" + sasToken; + } + + this.oryxDotNetSdkVersions = await this.httpService.GetOryxSdkVersionsAsync(sdkVersionsUrl); this.dotNetMinReleaseVersion = Environment.GetEnvironmentVariable(DotNetConstants.DotNetMinReleaseVersionEnvVar); this.dotNetMaxReleaseVersion = Environment.GetEnvironmentVariable(DotNetConstants.DotNetMaxReleaseVersionEnvVar); var blockedVersions = Environment.GetEnvironmentVariable( diff --git a/build/tools/Automation/Python/PythonAutomator.cs b/build/tools/Automation/Python/PythonAutomator.cs index 554e85e6d7..4fccc098ed 100644 --- a/build/tools/Automation/Python/PythonAutomator.cs +++ b/build/tools/Automation/Python/PythonAutomator.cs @@ -26,6 +26,7 @@ public class PythonAutomator private string pythonMinReleaseVersion; private string pythonMaxReleaseVersion; private List pythonBlockedVersions = new List(); + private HashSet oryxPythonSdkVersions; public PythonAutomator( IHttpService httpService, @@ -47,6 +48,22 @@ public async Task RunAsync() this.oryxSdkStorageBaseUrl = Constants.OryxSdkStorageBaseUrl; } + string sdkVersionsUrl = this.oryxSdkStorageBaseUrl + PythonConstants.PythonSuffixUrl; + + // A SAS token is required for the staging account. + if (this.oryxSdkStorageBaseUrl == Constants.OryxSdkStagingStorageBaseUrl) + { + string sasToken = Environment.GetEnvironmentVariable(Constants.OryxSdkStagingPrivateSasTokenEnvVar); + if (string.IsNullOrEmpty(sasToken)) + { + throw new ArgumentException($"The environment variable {Constants.OryxSdkStagingPrivateSasTokenEnvVar} " + + $"must be provided in order to access {Constants.OryxSdkStagingStorageBaseUrl}"); + } + + sdkVersionsUrl += "&" + sasToken; + } + + this.oryxPythonSdkVersions = await this.httpService.GetOryxSdkVersionsAsync(sdkVersionsUrl); this.pythonMinReleaseVersion = Environment.GetEnvironmentVariable(PythonConstants.PythonMinReleaseVersionEnvVar); this.pythonMaxReleaseVersion = Environment.GetEnvironmentVariable(PythonConstants.PythonMaxReleaseVersionEnvVar); var blockedVersions = Environment.GetEnvironmentVariable(PythonConstants.PythonBlockedVersionsEnvVar); @@ -84,9 +101,6 @@ public async Task> GetNewPythonVersionsAsync() var response = await this.httpService.GetDataAsync(PythonConstants.PythonReleaseUrl); var releases = JsonConvert.DeserializeObject>(response); - HashSet oryxSdkVersions = await this.httpService.GetOryxSdkVersionsAsync( - this.oryxSdkStorageBaseUrl + PythonConstants.PythonSuffixUrl); - var pythonVersions = new List(); foreach (var release in releases) { @@ -98,7 +112,7 @@ public async Task> GetNewPythonVersionsAsync() minVersion: this.pythonMinReleaseVersion, maxVersion: this.pythonMaxReleaseVersion, this.pythonBlockedVersions) && - !oryxSdkVersions.Contains(newVersion)) + !this.oryxPythonSdkVersions.Contains(newVersion)) { pythonVersions.Add(new PythonVersion { diff --git a/build/tools/Automation/Services/HttpService.cs b/build/tools/Automation/Services/HttpService.cs index ad8305202e..aa1b11a648 100644 --- a/build/tools/Automation/Services/HttpService.cs +++ b/build/tools/Automation/Services/HttpService.cs @@ -33,7 +33,6 @@ public async Task GetDataAsync(string url) { try { - Console.WriteLine("Making GET request to: " + url); HttpResponseMessage response = await this.httpClient.GetAsync(url); Console.WriteLine($"Response received: {response.StatusCode}"); if (!response.IsSuccessStatusCode) diff --git a/doc/configuration.md b/doc/configuration.md index e9f1d87b24..6ceafcca92 100644 --- a/doc/configuration.md +++ b/doc/configuration.md @@ -58,6 +58,7 @@ PYTHON\_ENABLE\_GUNICORN\_MULTIWORKERS| Enable Gunicorn multi worker multi threa PYTHON\_GUNICORN\_CUSTOM\_WORKER\_NUM| Only works when `PYTHON\_ENABLE\_GUNICORN\_MULTIWORKERS` is set to `true`. Specify Gunicorn multi worker number. If not set, default is (2 * CPU core num) + 1| `(2 * CPU core num) + 1`, `1` | "2" PYTHON\_GUNICORN\_CUSTOM\_THREAD\_NUM| Only works when `PYTHON\_ENABLE\_GUNICORN\_MULTIWORKERS` is set to `true`. Specify Gunicorn multi thread number. If not set, default is single thread. | "" | "4" ORYX\_DISABLE\_PIP\_UPGRADE | Remove the --upgrade flag from the pip install command when targeting a specific package installation directory. | `false` | `true`, `false` +NGINX\_CONF\_FILE | Specify a customized configuration file to modify nginx.conf file | "" | "newconfigfile.conf" Setting name for Php apps | Description | Default | Example -----------------------------|----------------------------------------------------------------|---------|---------------- diff --git a/doc/runtimes/nodejs.md b/doc/runtimes/nodejs.md index 1b68b46802..7453e3f0f6 100644 --- a/doc/runtimes/nodejs.md +++ b/doc/runtimes/nodejs.md @@ -46,8 +46,10 @@ The following process is applied for each build. 2. Run custom build command if specified by `CUSTOM_BUILD_COMMAND`. This will skip running any package install commands (`npm install` or `yarn install`) that Oryx originally included. 3. Run custom run build command if specified by `RUN_BUILD_COMMAND`. This will not skip package install commands. -4. Run `npm install` without any flags, which includes npm `preinstall` and - `postinstall` scripts and also installs devDependencies. +4. Run `npm install`, which includes npm `preinstall` and `postinstall` scripts and also installs devDependencies. + The `--production` flag is added to the NPM install command if some production + dependencies are detected in the `package.json` file and if the + [`PRUNE_DEV_DEPENDENCIES`](https://github.com/microsoft/Oryx/blob/main/doc/configuration.md) setting is set. 5. Run `npm run build` if a `build` script is specified in your `package.json`. 6. Run `npm run build:azure` if a `build:azure` script is specified in your `package.json`. 7. Run custom command or script if specified by `POST_BUILD_COMMAND` or `POST_BUILD_SCRIPT_PATH`. diff --git a/doc/supportedPlatformVersions.md b/doc/supportedPlatformVersions.md index 2fc35688b6..3bb3f0399e 100644 --- a/doc/supportedPlatformVersions.md +++ b/doc/supportedPlatformVersions.md @@ -43,6 +43,7 @@ - 6.0.408 - 6.0.410 - 6.0.411 +- 6.0.412 - 7.0.100-preview.1.22110.4 - 7.0.100-preview.5.22307.18 - 7.0.100-preview.6.22352.1 @@ -58,6 +59,7 @@ - 7.0.302 - 7.0.304 - 7.0.305 +- 7.0.306 ### buster @@ -118,6 +120,7 @@ - 6.0.408 - 6.0.410 - 6.0.411 +- 6.0.412 - 7.0.100-preview.1.22110.4 - 7.0.100-preview.5.22307.18 - 7.0.100-preview.6.22352.1 @@ -133,6 +136,7 @@ - 7.0.302 - 7.0.304 - 7.0.305 +- 7.0.306 ### focal-scm @@ -193,6 +197,7 @@ - 6.0.408 - 6.0.410 - 6.0.411 +- 6.0.412 - 7.0.100-preview.1.22110.4 - 7.0.100-preview.5.22307.18 - 7.0.100-preview.6.22352.1 @@ -208,6 +213,7 @@ - 7.0.302 - 7.0.304 - 7.0.305 +- 7.0.306 ### stretch @@ -306,6 +312,7 @@ - 6.0.408 - 6.0.410 - 6.0.411 +- 6.0.412 - 7.0.100-preview.1.22110.4 - 7.0.100-preview.5.22307.18 - 7.0.100-preview.6.22352.1 @@ -319,6 +326,7 @@ - 7.0.302 - 7.0.304 - 7.0.305 +- 7.0.306 ## golang diff --git a/images/runtime/php-fpm/nginx_conf/default.conf b/images/runtime/php-fpm/nginx_conf/default.conf index 7fe16994fd..a40a461a61 100644 --- a/images/runtime/php-fpm/nginx_conf/default.conf +++ b/images/runtime/php-fpm/nginx_conf/default.conf @@ -27,8 +27,8 @@ server { } # Add locations of phpmyadmin here. - location ~ [^/]\.php(/|$) { - fastcgi_split_path_info ^(.+?\.php)(|/.*)$; + location ~* [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.[Pp][Hh][Pp])(|/.*)$; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param HTTP_PROXY ""; diff --git a/platforms/dotnet/versions/bullseye/versionsToBuild.txt b/platforms/dotnet/versions/bullseye/versionsToBuild.txt index 185728828a..418e57cc92 100644 --- a/platforms/dotnet/versions/bullseye/versionsToBuild.txt +++ b/platforms/dotnet/versions/bullseye/versionsToBuild.txt @@ -40,6 +40,7 @@ 6.0.408, d5eed37ce6c07546aa217d6e786f3b67be2b6d97c23d5888d9ee5d5398e8a9bfc06202b14e3529245f7ec78f4036778caf69bdbe099de805fe1f566277e8440e, 6.0.410, 8c85f5b10eb786c8cf31bf268131a2345a295d88d318310dc8457d831f0a587ec1600e43beb7f55aec2248483b9a95e905a468b592f0c910443b4aaa9baeb2e3, 6.0.411, dc8aa1f84ad97cf25a979bfc243c200b7a8e73b930b68d5eed782743d88aad823c32c267c83d7a19d3c4f910a8fae7f12d07ea5a35a1d3a97e13a8674d29037b, +6.0.412, ee97aa5258e05aecadc66e844fa8eef97d51e5035492999b974cc8272e4db1a862a1f88a925f38be9e95c71d2e961b56459dcd614475895df608945c8057c311, 7.0.100-preview.1.22110.4, 54488a911172f059e3823d6bf52e1fa87305eb09e84d97f81a40e0815fc8a73a480b149023283f557a672ef0341f022b8ca16ebec92264ee16a56fac8f35e2e2, 7.0.100-preview.5.22307.18, 691c0d8917bc9848a08707b7fa22da05228dad0ba6335ff06c6d80f9a95349307572ff45c0b088d9fc199c40a1784ff314e1a8735d0366bd3aa06eb8dfa2b7d5, 7.0.100-preview.6.22352.1, e49a2119021e4069f1193898536cc59628336e656f2f7e49d454a593a330d8e437acf2f4efb70925bc16a9c900c2e49f4a6c2fb5f69e696b09a91ebccd2c9307, @@ -55,3 +56,4 @@ 7.0.302, 9387bd804ed980ba1bc33093598ddbafa3a761e07d28916c94442cc329533d78a03bfc59d3066a1a861244302414e7e658b4e721b5bc825f623f8f908e748b7e, 7.0.304, f4b7d0cde432bd37f445363b3937ad483e5006794886941e43124de051475925b3cd11313b73d2cae481ee9b8f131394df0873451f6088ffdbe73f150b1ed727, 7.0.305, c63e6baf3760a9949089d78920531a1140f4f31fffe13069b2011c61c3d583d585f5ec8cca973b414fa35d48ccbfea9c1ec1c88222b53afd2af5974be3b5cb1b, +7.0.306, 62df9bca9492b3273830e098e787ec3664243989ac03550534599fc331693553660d3cf8bca655f2d1326070dbb7b20b04743eaba77fa9cc69f6f0fddfdebd06, diff --git a/platforms/dotnet/versions/buster/versionsToBuild.txt b/platforms/dotnet/versions/buster/versionsToBuild.txt index 8e3776b75a..7f3d12d08d 100644 --- a/platforms/dotnet/versions/buster/versionsToBuild.txt +++ b/platforms/dotnet/versions/buster/versionsToBuild.txt @@ -58,6 +58,7 @@ 6.0.408, d5eed37ce6c07546aa217d6e786f3b67be2b6d97c23d5888d9ee5d5398e8a9bfc06202b14e3529245f7ec78f4036778caf69bdbe099de805fe1f566277e8440e, 6.0.410, 8c85f5b10eb786c8cf31bf268131a2345a295d88d318310dc8457d831f0a587ec1600e43beb7f55aec2248483b9a95e905a468b592f0c910443b4aaa9baeb2e3, 6.0.411, dc8aa1f84ad97cf25a979bfc243c200b7a8e73b930b68d5eed782743d88aad823c32c267c83d7a19d3c4f910a8fae7f12d07ea5a35a1d3a97e13a8674d29037b, +6.0.412, ee97aa5258e05aecadc66e844fa8eef97d51e5035492999b974cc8272e4db1a862a1f88a925f38be9e95c71d2e961b56459dcd614475895df608945c8057c311, 7.0.100-preview.1.22110.4, 54488a911172f059e3823d6bf52e1fa87305eb09e84d97f81a40e0815fc8a73a480b149023283f557a672ef0341f022b8ca16ebec92264ee16a56fac8f35e2e2, 7.0.100-preview.5.22307.18, 691c0d8917bc9848a08707b7fa22da05228dad0ba6335ff06c6d80f9a95349307572ff45c0b088d9fc199c40a1784ff314e1a8735d0366bd3aa06eb8dfa2b7d5, 7.0.100-preview.6.22352.1, e49a2119021e4069f1193898536cc59628336e656f2f7e49d454a593a330d8e437acf2f4efb70925bc16a9c900c2e49f4a6c2fb5f69e696b09a91ebccd2c9307, @@ -73,3 +74,4 @@ 7.0.302, 9387bd804ed980ba1bc33093598ddbafa3a761e07d28916c94442cc329533d78a03bfc59d3066a1a861244302414e7e658b4e721b5bc825f623f8f908e748b7e, 7.0.304, f4b7d0cde432bd37f445363b3937ad483e5006794886941e43124de051475925b3cd11313b73d2cae481ee9b8f131394df0873451f6088ffdbe73f150b1ed727, 7.0.305, c63e6baf3760a9949089d78920531a1140f4f31fffe13069b2011c61c3d583d585f5ec8cca973b414fa35d48ccbfea9c1ec1c88222b53afd2af5974be3b5cb1b, +7.0.306, 62df9bca9492b3273830e098e787ec3664243989ac03550534599fc331693553660d3cf8bca655f2d1326070dbb7b20b04743eaba77fa9cc69f6f0fddfdebd06, diff --git a/platforms/dotnet/versions/focal-scm/versionsToBuild.txt b/platforms/dotnet/versions/focal-scm/versionsToBuild.txt index 8e3776b75a..7f3d12d08d 100644 --- a/platforms/dotnet/versions/focal-scm/versionsToBuild.txt +++ b/platforms/dotnet/versions/focal-scm/versionsToBuild.txt @@ -58,6 +58,7 @@ 6.0.408, d5eed37ce6c07546aa217d6e786f3b67be2b6d97c23d5888d9ee5d5398e8a9bfc06202b14e3529245f7ec78f4036778caf69bdbe099de805fe1f566277e8440e, 6.0.410, 8c85f5b10eb786c8cf31bf268131a2345a295d88d318310dc8457d831f0a587ec1600e43beb7f55aec2248483b9a95e905a468b592f0c910443b4aaa9baeb2e3, 6.0.411, dc8aa1f84ad97cf25a979bfc243c200b7a8e73b930b68d5eed782743d88aad823c32c267c83d7a19d3c4f910a8fae7f12d07ea5a35a1d3a97e13a8674d29037b, +6.0.412, ee97aa5258e05aecadc66e844fa8eef97d51e5035492999b974cc8272e4db1a862a1f88a925f38be9e95c71d2e961b56459dcd614475895df608945c8057c311, 7.0.100-preview.1.22110.4, 54488a911172f059e3823d6bf52e1fa87305eb09e84d97f81a40e0815fc8a73a480b149023283f557a672ef0341f022b8ca16ebec92264ee16a56fac8f35e2e2, 7.0.100-preview.5.22307.18, 691c0d8917bc9848a08707b7fa22da05228dad0ba6335ff06c6d80f9a95349307572ff45c0b088d9fc199c40a1784ff314e1a8735d0366bd3aa06eb8dfa2b7d5, 7.0.100-preview.6.22352.1, e49a2119021e4069f1193898536cc59628336e656f2f7e49d454a593a330d8e437acf2f4efb70925bc16a9c900c2e49f4a6c2fb5f69e696b09a91ebccd2c9307, @@ -73,3 +74,4 @@ 7.0.302, 9387bd804ed980ba1bc33093598ddbafa3a761e07d28916c94442cc329533d78a03bfc59d3066a1a861244302414e7e658b4e721b5bc825f623f8f908e748b7e, 7.0.304, f4b7d0cde432bd37f445363b3937ad483e5006794886941e43124de051475925b3cd11313b73d2cae481ee9b8f131394df0873451f6088ffdbe73f150b1ed727, 7.0.305, c63e6baf3760a9949089d78920531a1140f4f31fffe13069b2011c61c3d583d585f5ec8cca973b414fa35d48ccbfea9c1ec1c88222b53afd2af5974be3b5cb1b, +7.0.306, 62df9bca9492b3273830e098e787ec3664243989ac03550534599fc331693553660d3cf8bca655f2d1326070dbb7b20b04743eaba77fa9cc69f6f0fddfdebd06, diff --git a/platforms/dotnet/versions/stretch/versionsToBuild.txt b/platforms/dotnet/versions/stretch/versionsToBuild.txt index 6a957f1c19..3b7b4a4eaf 100644 --- a/platforms/dotnet/versions/stretch/versionsToBuild.txt +++ b/platforms/dotnet/versions/stretch/versionsToBuild.txt @@ -52,6 +52,7 @@ 6.0.408, d5eed37ce6c07546aa217d6e786f3b67be2b6d97c23d5888d9ee5d5398e8a9bfc06202b14e3529245f7ec78f4036778caf69bdbe099de805fe1f566277e8440e, 6.0.410, 8c85f5b10eb786c8cf31bf268131a2345a295d88d318310dc8457d831f0a587ec1600e43beb7f55aec2248483b9a95e905a468b592f0c910443b4aaa9baeb2e3, 6.0.411, dc8aa1f84ad97cf25a979bfc243c200b7a8e73b930b68d5eed782743d88aad823c32c267c83d7a19d3c4f910a8fae7f12d07ea5a35a1d3a97e13a8674d29037b, +6.0.412, ee97aa5258e05aecadc66e844fa8eef97d51e5035492999b974cc8272e4db1a862a1f88a925f38be9e95c71d2e961b56459dcd614475895df608945c8057c311, 7.0.100-preview.1.22110.4, 54488a911172f059e3823d6bf52e1fa87305eb09e84d97f81a40e0815fc8a73a480b149023283f557a672ef0341f022b8ca16ebec92264ee16a56fac8f35e2e2, 7.0.100-preview.5.22307.18, 691c0d8917bc9848a08707b7fa22da05228dad0ba6335ff06c6d80f9a95349307572ff45c0b088d9fc199c40a1784ff314e1a8735d0366bd3aa06eb8dfa2b7d5, 7.0.100-preview.6.22352.1, e49a2119021e4069f1193898536cc59628336e656f2f7e49d454a593a330d8e437acf2f4efb70925bc16a9c900c2e49f4a6c2fb5f69e696b09a91ebccd2c9307, @@ -65,3 +66,4 @@ 7.0.302, 9387bd804ed980ba1bc33093598ddbafa3a761e07d28916c94442cc329533d78a03bfc59d3066a1a861244302414e7e658b4e721b5bc825f623f8f908e748b7e, 7.0.304, f4b7d0cde432bd37f445363b3937ad483e5006794886941e43124de051475925b3cd11313b73d2cae481ee9b8f131394df0873451f6088ffdbe73f150b1ed727, 7.0.305, c63e6baf3760a9949089d78920531a1140f4f31fffe13069b2011c61c3d583d585f5ec8cca973b414fa35d48ccbfea9c1ec1c88222b53afd2af5974be3b5cb1b, +7.0.306, 62df9bca9492b3273830e098e787ec3664243989ac03550534599fc331693553660d3cf8bca655f2d1326070dbb7b20b04743eaba77fa9cc69f6f0fddfdebd06, diff --git a/src/BuildScriptGenerator.Common/ExtVarNames.cs b/src/BuildScriptGenerator.Common/ExtVarNames.cs index 1744f0c1d6..89bced9e36 100644 --- a/src/BuildScriptGenerator.Common/ExtVarNames.cs +++ b/src/BuildScriptGenerator.Common/ExtVarNames.cs @@ -29,5 +29,6 @@ public static class ExtVarNames public const string PythonGunicornConfigPathEnvVarName = "PYTHON_USE_GUNICORN_CONFIG_FROM_PATH"; public const string PythonGunicornCustomWorkerNum = "PYTHON_GUNICORN_CUSTOM_WORKER_NUM"; public const string PythonGunicornCustomThreadNum = "PYTHON_GUNICORN_CUSTOM_THREAD_NUM"; + public const string NginxConfFile = "NGINX_CONF_FILE"; } } \ No newline at end of file diff --git a/src/BuildScriptGenerator/DotNetCore/DotNetCoreRunTimeVersions.cs b/src/BuildScriptGenerator/DotNetCore/DotNetCoreRunTimeVersions.cs index 8be65b4e16..7d729f5a03 100644 --- a/src/BuildScriptGenerator/DotNetCore/DotNetCoreRunTimeVersions.cs +++ b/src/BuildScriptGenerator/DotNetCore/DotNetCoreRunTimeVersions.cs @@ -4,7 +4,7 @@ namespace Microsoft.Oryx.BuildScriptGenerator.DotNetCore { public static class DotNetCoreRunTimeVersions { - public const string DotNetCoreRuntimeBaseTag = "20230623.1"; + public const string DotNetCoreRuntimeBaseTag = "20230721.1"; public const string NetCoreApp10 = "1.0.16"; public const string NetCoreApp11 = "1.1.13"; public const string NetCoreApp20 = "2.0.9"; @@ -26,13 +26,13 @@ public static class DotNetCoreRunTimeVersions public const string NetCoreApp50Sha = "a9c4784930a977abbc42aff1337dda06ec588c1ec4769a59f9fcab4d5df4fc9efe65f8e61e5433db078f67a94ea2dfe870c32c482a50d4c16283ffacacff4261"; public const string AspnetCoreApp50 = "5.0.17"; public const string AspnetCoreApp50Sha = "d8e87804e9e86273c6512785bd5a6f0e834ff3f4bbebc11c4fcdf16ab4fdfabd0d981a756955267c1aa9bbeec596de3728ce9b2e6415d2d80daef0d999a5df6d"; - public const string NetCoreApp60 = "6.0.19"; - public const string NetCoreApp60Sha = "6e8e1db8b247c92c8de4b476e06ad464b0bd664919394afd5fb3962db477490e54865abd2510c29457efdef3be23f0ea4683d6caabcc74a6d7abddce4b4a154d"; - public const string AspnetCoreApp60 = "6.0.19"; - public const string AspnetCoreApp60Sha = "537e4b1be4fcaa5e69013b99c86808e0a13994c87d7542367b3eb18196206d1c27e46a865d89784229a04f69dadbe0b283d7adf1e7848c8d3c7998ee80c9e765"; - public const string NetCoreApp70 = "7.0.8"; - public const string NetCoreApp70Sha = "50463de25360aba18c29ab8a3d31896793a7bcf899b40249fcac77efab24888e93ac906dac04ea5b72026c89c07dd371247ff89e8613123dead7e889906aa876"; - public const string AspnetCoreApp70 = "7.0.8"; - public const string AspnetCoreApp70Sha = "b75cb42ecd1936b1b2af5ed59d7f3ef3eb0a602b23f5a272e62c42de9c75db1ae54878b2f9f28d72dac15bdbeaece81cc6344d0df5eae845bc130534ef1bfbb0"; + public const string NetCoreApp60 = "6.0.20"; + public const string NetCoreApp60Sha = "3688d7170a59015c36d6a5532db67bc22eff66b3eb0a7fc28e1f425791e27a5f467bc7dc593d7f455d72d08c7d27bfcc92b3c8bd30ec3c7c583a8aa82b5afbac"; + public const string AspnetCoreApp60 = "6.0.20"; + public const string AspnetCoreApp60Sha = "891bad6a52a7bcd5afa2a784fe68044d282f6d53fedab4bde6dff8d7d2138a484e947f7a6be156094324b37e9d7e07e87a67622bcf2ea197c2924389edd1d185"; + public const string NetCoreApp70 = "7.0.9"; + public const string NetCoreApp70Sha = "09552e5ae6ac014dadf17545ff0a30ab32921075a31fb33e7be148c13078e30d097f592ffa1b8d306563aaa3f6302e40c5c0ba815c1473bbd5d72e3bef55d91e"; + public const string AspnetCoreApp70 = "7.0.9"; + public const string AspnetCoreApp70Sha = "aabf4fa5ca726dc52774e5d644800ef7477815b22a982b7a2752dec6569186aabca93d5386e195e7ead377144601a786ae6a5d76ff28435bdabfad495cfe554b"; } } \ No newline at end of file diff --git a/src/BuildScriptGenerator/DotNetCore/DotNetCoreSdkVersions.cs b/src/BuildScriptGenerator/DotNetCore/DotNetCoreSdkVersions.cs index 0edf40624e..8655f17f8a 100644 --- a/src/BuildScriptGenerator/DotNetCore/DotNetCoreSdkVersions.cs +++ b/src/BuildScriptGenerator/DotNetCore/DotNetCoreSdkVersions.cs @@ -13,9 +13,9 @@ public static class DotNetCoreSdkVersions public const string DotNetCore31SdkVersion = "3.1.426"; public const string DotNetCore50SdkVersion = "5.0.302"; public const string DotNet50SdkVersion = "5.0.408"; - public const string DotNet60SdkVersion = "6.0.411"; + public const string DotNet60SdkVersion = "6.0.412"; public const string DotNet60RtmSdkVersion = "6-0-100-rtm-21527-11"; - public const string DotNet70SdkVersion = "7.0.305"; + public const string DotNet70SdkVersion = "7.0.306"; public static readonly Dictionary RuntimeVersions = new Dictionary { { "3.0", "debian-buster" }, { "3.1", "debian-buster" }, { "5.0", "debian-buster" }, { "6.0", "debian-buster" }, { "7.0", "debian-buster" }, { "dynamic", "debian-buster" } }; } } \ No newline at end of file diff --git a/src/BuildScriptGenerator/Php/PhpBashBuildSnippet.sh.tpl b/src/BuildScriptGenerator/Php/PhpBashBuildSnippet.sh.tpl index 3f4b79a97f..8ef4c08701 100644 --- a/src/BuildScriptGenerator/Php/PhpBashBuildSnippet.sh.tpl +++ b/src/BuildScriptGenerator/Php/PhpBashBuildSnippet.sh.tpl @@ -12,3 +12,4 @@ php $composer install --ignore-platform-reqs --no-interaction {{ else }} echo "No 'composer.json' file found; not running 'composer install'." {{ end }} + diff --git a/src/BuildScriptGenerator/Php/PhpPlatform.cs b/src/BuildScriptGenerator/Php/PhpPlatform.cs index f7e41b6a8d..ae54f53f65 100644 --- a/src/BuildScriptGenerator/Php/PhpPlatform.cs +++ b/src/BuildScriptGenerator/Php/PhpPlatform.cs @@ -152,7 +152,10 @@ public BuildScriptSnippet GenerateBashBuildScriptSnippet( } } - var props = new PhpBashBuildSnippetProperties { ComposerFileExists = composerFileExists }; + var props = new PhpBashBuildSnippetProperties + { + ComposerFileExists = composerFileExists, + }; string snippet = TemplateHelper.Render(TemplateHelper.TemplateResource.PhpBuildSnippet, props, this.logger, this.telemetryClient); return new BuildScriptSnippet { BashBuildScriptSnippet = snippet, BuildProperties = buildProperties }; } diff --git a/src/BuildScriptGenerator/PhpVersions.cs b/src/BuildScriptGenerator/PhpVersions.cs index b028debe71..0a6455971b 100644 --- a/src/BuildScriptGenerator/PhpVersions.cs +++ b/src/BuildScriptGenerator/PhpVersions.cs @@ -7,7 +7,7 @@ namespace Microsoft.Oryx.BuildScriptGenerator.Common public static class PhpVersions { public const string PhpRuntimeBaseTag = "20230713.2"; - public const string PhpFpmRuntimeBaseTag = "20230713.2"; + public const string PhpFpmRuntimeBaseTag = "20230720.2"; public const string ComposerVersion = "2.0.8"; public const string ComposerSetupSha384 = "e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02"; public const string Composer19Version = "1.9.3"; diff --git a/src/startupscriptgenerator/src/common/consts/ext_var_names.go b/src/startupscriptgenerator/src/common/consts/ext_var_names.go index e9a40ba40f..61a23708a0 100644 --- a/src/startupscriptgenerator/src/common/consts/ext_var_names.go +++ b/src/startupscriptgenerator/src/common/consts/ext_var_names.go @@ -27,3 +27,4 @@ const PythonEnableGunicornMultiWorkersEnvVarName string = "PYTHON_ENABLE_GUNICOR const PythonGunicornConfigPathEnvVarName string = "PYTHON_USE_GUNICORN_CONFIG_FROM_PATH" const PythonGunicornCustomWorkerNum string = "PYTHON_GUNICORN_CUSTOM_WORKER_NUM" const PythonGunicornCustomThreadNum string = "PYTHON_GUNICORN_CUSTOM_THREAD_NUM" +const NginxConfFile string = "NGINX_CONF_FILE" diff --git a/src/startupscriptgenerator/src/php/config.go b/src/startupscriptgenerator/src/php/config.go index 7f0ebce8c0..0111a741d2 100644 --- a/src/startupscriptgenerator/src/php/config.go +++ b/src/startupscriptgenerator/src/php/config.go @@ -6,10 +6,11 @@ package main type Configuration struct { - PhpOrigin string - PreRunCommand string - FpmMaxChildren string - FpmStartServers string + PhpOrigin string + PreRunCommand string + FpmMaxChildren string + FpmStartServers string FpmMinSpareServers string FpmMaxSpareServers string + NginxConfFile string } diff --git a/src/startupscriptgenerator/src/php/main.go b/src/startupscriptgenerator/src/php/main.go index 7fa897ef4f..738e8a137e 100644 --- a/src/startupscriptgenerator/src/php/main.go +++ b/src/startupscriptgenerator/src/php/main.go @@ -48,6 +48,7 @@ func main() { configuration.FpmStartServers = viperConfig.GetString(consts.PhpFpmStartServersEnvVarName) configuration.FpmMinSpareServers = viperConfig.GetString(consts.PhpFpmMinSpareServersEnvVarName) configuration.FpmMaxSpareServers = viperConfig.GetString(consts.PhpFpmMaxSpareServersEnvVarName) + configuration.NginxConfFile = viperConfig.GetString(consts.NginxConfFile) entrypointGenerator := PhpStartupScriptGenerator{ SourcePath: fullAppPath, diff --git a/src/startupscriptgenerator/src/php/scriptgenerator.go b/src/startupscriptgenerator/src/php/scriptgenerator.go index 765bb12d1f..c076656aaf 100644 --- a/src/startupscriptgenerator/src/php/scriptgenerator.go +++ b/src/startupscriptgenerator/src/php/scriptgenerator.go @@ -49,6 +49,7 @@ func (gen *PhpStartupScriptGenerator) GenerateEntrypointScript() string { scriptBuilder.WriteString("else\n") scriptBuilder.WriteString(" export APACHE_DOCUMENT_ROOT='" + gen.SourcePath + "'\n") scriptBuilder.WriteString("fi\n\n") + gen.AddCustomizedNginxConfigurationToScript(&scriptBuilder) startupCommand := gen.StartupCmd if startupCommand == "" { @@ -81,3 +82,10 @@ func AddFpmConfigurationToScript(scriptBuilder *strings.Builder, envVarValue str scriptBuilder.WriteString(" sed -i \"s/" + fpmSettingName + " = .*/" + fpmSettingName + " = " + envVarValue + "/g\" " + consts.PhpFpmConfigurationFile + "\n") } } + +func (gen *PhpStartupScriptGenerator) AddCustomizedNginxConfigurationToScript(scriptBuilder *strings.Builder) { + if gen.Configuration.NginxConfFile != "" { + scriptBuilder.WriteString("cp " + gen.Configuration.NginxConfFile + " /etc/nginx/nginx.conf \n") + scriptBuilder.WriteString("service nginx reload \n") + } +} diff --git a/tests/Oryx.BuildImage.Tests/Python/CondaTests.cs b/tests/Oryx.BuildImage.Tests/Python/CondaTests.cs index 2d941f510e..3077686ba8 100644 --- a/tests/Oryx.BuildImage.Tests/Python/CondaTests.cs +++ b/tests/Oryx.BuildImage.Tests/Python/CondaTests.cs @@ -193,7 +193,7 @@ public void CanBuildJuliaPythonSampleApp() result.GetDebugInfo()); } - [Fact, Trait("category", "vso-focal")] + [Fact(Skip = "Skipping test temporarily"), Trait("category", "vso-focal")] public void CanBuildJupiterRiseApp() { // Arrange @@ -229,7 +229,7 @@ public void CanBuildJupiterRiseApp() result.GetDebugInfo()); } - [Theory, Trait("category", "vso-focal")] + [Theory(Skip = "Skipping test temporarily"), Trait("category", "vso-focal")] [InlineData("jupyter-rise")] public void BuildJupiterCondaApps_Prints_BuildCommands_In_File(string appName) { diff --git a/tests/Oryx.Integration.Tests/Php/PhpFpmConfigTest.cs b/tests/Oryx.Integration.Tests/Php/PhpFpmConfigTest.cs index c14a1e0ff7..eed8939f77 100644 --- a/tests/Oryx.Integration.Tests/Php/PhpFpmConfigTest.cs +++ b/tests/Oryx.Integration.Tests/Php/PhpFpmConfigTest.cs @@ -73,6 +73,59 @@ await PhpFpmConfigTestAsync( failureOutputText); } + [Fact, Trait("category", "php-8.0")] + public async Task PhpFpmNginxCustomizationTestAsync() + { + // Arrange + var appName = "php-fpm-config"; + var hostDir = Path.Combine(_hostSamplesDir, "php", appName); + var volume = DockerVolume.CreateMirror(hostDir); + var appDir = volume.ContainerDir; + var appOutputDirVolume = CreateAppOutputDirVolume(); + var appOutputDir = appOutputDirVolume.ContainerDir; + var phpVersion = "8.0"; + var nginxDummyCustomConfigFile = appDir + "/NGINX_DUMMY_CUSTOM_CONFIG_FILE.conf"; + var nginxCustomCommand1 = "cp " + nginxDummyCustomConfigFile + " /etc/nginx/nginx.conf"; + var nginxCustomCommand2 = "service nginx reload"; + + var buildScript = new ShellScriptBuilder() + .AddCommand($"oryx build {appDir} -i /tmp/int -o {appOutputDir} " + + $"--platform php --platform-version {phpVersion}") + .ToString(); + + var runScript = new ShellScriptBuilder() + .AddCommand($"oryx create-script -appPath {appOutputDir} -output {RunScriptPath} -bindPort {ContainerPort}") + .AddCommand("mkdir -p /home/site/wwwroot") + .AddCommand($"cp -rf {appOutputDir}/* /home/site/wwwroot") + .AddCommand("cat " + RunScriptPath) + .AddStringExistsInFileCheck(nginxCustomCommand1, RunScriptPath) + .AddStringExistsInFileCheck(nginxCustomCommand2, RunScriptPath) + .AddCommand(RunScriptPath) + .ToString(); + var phpimageVersion = string.Concat(phpVersion, "-", "fpm"); + // Act & Assert success conditions + await EndToEndTestHelper.BuildRunAndAssertAppAsync( + appName, + _output, + new[] { volume, appOutputDirVolume }, + Settings.BuildImageName, + "/bin/sh", + new[] { "-c", buildScript }, + _imageHelper.GetRuntimeImage("php", phpimageVersion), + new List() + { + new EnvironmentVariable(ExtVarNames.NginxConfFile, nginxDummyCustomConfigFile) + }, + ContainerPort, + "/bin/sh", + new[] { "-c", runScript }, + async (hostPort) => + { + var output = await _httpClient.GetStringAsync($"http://localhost:{hostPort}/"); + Assert.Contains("Hello World!", output); + }); + } + private async Task PhpFpmConfigTestAsync( string phpVersion, string fpmMaxChildren, string expectedFpmMaxChildren, diff --git a/tests/SampleApps/php/php-fpm-config/NGINX_DUMMY_CUSTOM_CONFIG_FILE.conf b/tests/SampleApps/php/php-fpm-config/NGINX_DUMMY_CUSTOM_CONFIG_FILE.conf new file mode 100644 index 0000000000..a79e7387b2 --- /dev/null +++ b/tests/SampleApps/php/php-fpm-config/NGINX_DUMMY_CUSTOM_CONFIG_FILE.conf @@ -0,0 +1,49 @@ +user www-data; +worker_processes auto; +pid /run/nginx.pid; +include /etc/nginx/modules-enabled/*.conf; + +events { + worker_connections 10068; + multi_accept on; +} + +http { + ## + # Basic Settings + ## + + sendfile on; + tcp_nopush on; + types_hash_max_size 2048; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + ## + # SSL Settings + ## + + ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE + ssl_prefer_server_ciphers on; + + ## + # Logging Settings + ## + + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + ## + # Gzip Settings + ## + + gzip on; + + ## + # Virtual Host Configs + ## + + include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-enabled/*; +} \ No newline at end of file diff --git a/tests/SampleApps/php/php-fpm-config/src/Fpm/PhpFpmConfig.php b/tests/SampleApps/php/php-fpm-config/src/Fpm/PhpFpmConfig.php index b22a7b0958..51f109014e 100644 --- a/tests/SampleApps/php/php-fpm-config/src/Fpm/PhpFpmConfig.php +++ b/tests/SampleApps/php/php-fpm-config/src/Fpm/PhpFpmConfig.php @@ -5,6 +5,7 @@ class PhpFpmConfig { public static function outputFpmConfig() { + print_r("Hello World!\n"); exec("php-fpm -tt 2>&1", $lines); print_r($lines); }