This is an automated email from the ASF dual-hosted git repository. dgrove pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openwhisk-runtime-php.git
commit 2be32e08ccaa0a2dd552e3e414c4bfd0e2d8014e Author: David Grove <[email protected]> AuthorDate: Mon May 9 10:33:40 2022 -0400 remove php 7.3-based runtime (EOL at end of 2021) --- .travis.yml | 5 -- README.md | 22 +---- core/php7.3Action/CHANGELOG.md | 66 --------------- core/php7.3Action/Dockerfile | 99 ---------------------- core/php7.3Action/build.gradle | 19 ----- core/php7.3Action/compile.php | 82 ------------------ core/php7.3Action/composer.json | 11 --- core/php7.3Action/php.ini | 37 -------- core/php7.3Action/runner.php | 92 -------------------- settings.gradle | 1 - .../Php73ActionContainerTests.scala | 27 ------ 11 files changed, 3 insertions(+), 458 deletions(-) diff --git a/.travis.yml b/.travis.yml index b340bfe..54de878 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,11 +41,6 @@ deploy: tags: true all_branches: true repo: apache/openwhisk-runtime-php - - provider: script - script: "./tools/travis/publish.sh openwhisk 7.3 nightly" - on: - branch: master - repo: apache/openwhisk-runtime-php - provider: script script: "./tools/travis/publish.sh openwhisk 7.4 nightly" on: diff --git a/README.md b/README.md index 4852b13..5cf6ec9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ ## PHP versions -This runtime provides PHP 8.0, 7.4 and 7.3. +This runtime provides PHP 8.0 and 7.4. ### Give it a try today To use as a docker action @@ -39,11 +39,6 @@ PHP 7.4: wsk action update myAction myAction.php --docker openwhisk/action-php-v7.4:latest ``` -PHP 7.3: -``` -wsk action update myAction myAction.php --docker openwhisk/action-php-v7.3:latest -``` - This works on any deployment of Apache OpenWhisk ### To use on deployment that contains the runtime as a kind @@ -59,29 +54,22 @@ PHP 7.4: wsk action update myAction myAction.php --kind php:7.4 ``` -PHP 7.3: -``` -wsk action update myAction myAction.php --kind php:7.3 -``` - ### Local development ``` ./gradlew core:php8.0Action:distDocker ./gradlew core:php7.4Action:distDocker -./gradlew core:php7.3Action:distDocker ``` -This will produce the images `whisk/action-php-v8.0`, `whisk/action-php-v7.4` & `whisk/action-php-v7.3` respectively. +This will produce the images `whisk/action-php-v8.0` and `whisk/action-php-v7.4` respectively. Build and Push image ``` docker login ./gradlew core:php8.0Action:distDocker -PdockerImagePrefix=$prefix-user -PdockerRegistry=docker.io ./gradlew core:php7.4Action:distDocker -PdockerImagePrefix=$prefix-user -PdockerRegistry=docker.io -./gradlew core:php7.3Action:distDocker -PdockerImagePrefix=$prefix-user -PdockerRegistry=docker.io ``` -Deploy OpenWhisk using ansible environment that contains the kinds `php:8.0`, `php:7.4` & `php:7.3` +Deploy OpenWhisk using ansible environment that contains the kinds `php:8.0` and `php:7.4` Assuming you have OpenWhisk already deploy locally and `OPENWHISK_HOME` pointing to root directory of OpenWhisk core repository. Set `ROOTDIR` to the root directory of this repository. @@ -112,10 +100,6 @@ docker push $user_prefix/action-php-v8.0 docker tag whisk/php7.4Action $user_prefix/action-php-v7.4 docker push $user_prefix/action-php-v7.4 ``` -``` -docker tag whisk/php7.3Action $user_prefix/action-php-v7.3 -docker push $user_prefix/action-php-v7.3 -``` Then create the action using your image from dockerhub ``` diff --git a/core/php7.3Action/CHANGELOG.md b/core/php7.3Action/CHANGELOG.md deleted file mode 100644 index e00c057..0000000 --- a/core/php7.3Action/CHANGELOG.md +++ /dev/null @@ -1,66 +0,0 @@ -<!-- -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# ---> - -## Next Release - - Update version of PHP to 7.3.33 - - Update to Debian "buster" - -## Apache 1.17.0 - - Update version of PHP to 7.3.29 - - Build actionloop from [email protected] (#107) - - Resolve akka versions explicitly. (#105, #104) - -## Apache 1.16.0 - - Update version of PHP to 7.3.27 - - Use openwhisk-runtime-go 1.17.0 to build proxy - - Update guzzlehttp/guzzle to 6.5.5 - - Update ramsey/uuid to 3.9.3 - -## Apache 1.15.0 - - Update version of PHP to 7.3.22 - - Use golang 1.15 and openwhisk-runtime-go 1.16.0 to build proxy - -## Apache 1.14.0 -Changes: - - Update version of PHP to 7.3.12 - - Update guzzlehttp/guzzle to 6.5.0 - - Update ramsey/uuid to 3.9.1 - - Added PHP extension mongodb - - Support getenv() - - Support for __OW_ACTION_VERSION (openwhisk/4761) - -## Apache 1.13.0-incubating -Initial release - -- Added: PHP: 7.3.3 -- Added: PHP extensions in addition to the standard ones: - - bcmath - - curl - - gd - - intl - - mbstring - - mysqli - - pdo_mysql - - pdo_pgsql - - pdo_sqlite - - soap - - zip -- Added: Composer packages: - - [guzzlehttp/guzzle](https://packagist.org/packages/guzzlehttp/guzzle): 6.3.3 - - [ramsey/uuid](https://packagist.org/packages/ramsey/uuid): 3.8.0 diff --git a/core/php7.3Action/Dockerfile b/core/php7.3Action/Dockerfile deleted file mode 100644 index a02bfdf..0000000 --- a/core/php7.3Action/Dockerfile +++ /dev/null @@ -1,99 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# build go proxy from source -FROM golang:1.16 AS builder_source -ARG GO_PROXY_GITHUB_USER=apache -ARG GO_PROXY_GITHUB_BRANCH=master -RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} \ - https://github.com/${GO_PROXY_GITHUB_USER}/openwhisk-runtime-go /src ;\ - cd /src ; env GO111MODULE=on CGO_ENABLED=0 go build main/proxy.go && \ - mv proxy /bin/proxy - -# or build it from a release -FROM golang:1.16 AS builder_release -ARG [email protected] -RUN curl -sL \ - https://github.com/apache/openwhisk-runtime-go/archive/{$GO_PROXY_RELEASE_VERSION}.tar.gz\ - | tar xzf -\ - && cd openwhisk-runtime-go-*/main\ - && GO111MODULE=on go build -o /bin/proxy - -FROM php:7.3.33-cli-buster - -# select the builder to use -ARG GO_PROXY_BUILD_FROM=release - -# install dependencies -RUN \ - apt-get -y update \ - # Upgrade installed packages to get latest security fixes if the base image does not contain them already. - && apt-get upgrade -y --no-install-recommends \ - && apt-get -y install \ - libfreetype6-dev \ - libicu-dev \ - libicu63 \ - libjpeg-dev \ - libpng-dev \ - libssl-dev \ - libxml2-dev \ - libzip-dev \ - postgresql-server-dev-11 \ - unzip \ - zlib1g-dev \ - # Cleanup apt data, we do not need them later on. - && rm -rf /var/lib/apt/lists/* - -# Install useful PHP extensions -RUN \ - docker-php-ext-install \ - bcmath \ - gd \ - intl \ - mysqli \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - soap \ - zip \ - && pecl install mongodb \ - && docker-php-ext-enable mongodb - -COPY php.ini /usr/local/etc/php - -# install composer -RUN curl -s -f -L -o /tmp/installer.php https://getcomposer.org/installer \ - && php /tmp/installer.php --no-ansi --install-dir=/usr/bin --filename=composer \ - && composer --ansi --version --no-interaction --no-plugins --no-scripts - - -# install default Composer dependencies -RUN mkdir -p /phpAction/composer -COPY composer.json /phpAction/composer -RUN cd /phpAction/composer && /usr/bin/composer install --no-plugins --no-scripts --prefer-dist --no-dev -o && rm composer.lock - -# install proxy binary along with compile and launcher scripts -RUN mkdir -p /phpAction/action -WORKDIR /phpAction -COPY --from=builder_source /bin/proxy /bin/proxy_source -COPY --from=builder_release /bin/proxy /bin/proxy_release -RUN mv /bin/proxy_${GO_PROXY_BUILD_FROM} /bin/proxy -ADD compile.php /bin/compile.php -ADD runner.php /bin/runner.php -ENV OW_COMPILER=/bin/compile.php - -ENTRYPOINT [ "/bin/proxy" ] diff --git a/core/php7.3Action/build.gradle b/core/php7.3Action/build.gradle deleted file mode 100644 index fea7083..0000000 --- a/core/php7.3Action/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -ext.dockerImageName = 'action-php-v7.3' -apply from: '../../gradle/docker.gradle' diff --git a/core/php7.3Action/compile.php b/core/php7.3Action/compile.php deleted file mode 100755 index d74939b..0000000 --- a/core/php7.3Action/compile.php +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env php -<?php -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * compile - * - * This file is launched by the action proxy. - * It copies runner.php to right source directory and creates a bash exec script - * that the action proxy will call to start everything off - */ - -main($argc, $argv); -exit; - -function main($argc, $argv) -{ - if ($argc < 4) { - print("usage: <main-function-name> <source-dir> <bin-dir>"); - exit(1); - } - $main = $argv[1]; - $src = realpath($argv[2]); - $bin = realpath($argv[3]); - - $shim = $bin.'/exec'; - - sources($src); - build($shim, $src, $main); -} - -/** - * Sort out the source code - * - * 1. Copy src/exec to src/index.php if necessary - * 2. Ensure vendor directory exists - */ -function sources(string $src) -{ - // If the file uploaded by the user is a plain PHP file, then - // the filename will be called exec by the action proxy. - // Rename it to index.php - if (file_exists($src . '/exec')) { - rename($src . '/exec', $src . '/index.php'); - } - - // put vendor in the right place if it doesn't exist - if (!is_dir($src . '/vendor')) { - exec('cp -a /phpAction/composer/vendor ' . escapeshellarg($src . '/vendor')); - } -} - -/** - * Create bin/exec shim - */ -function build(string $shim, string $src, string $main) : void -{ - $contents = <<<EOT -#!/bin/bash -cd $src -exec php -f /bin/runner.php -- "$main" - -EOT; - - file_put_contents($shim, $contents); - chmod($shim, 0755); -} diff --git a/core/php7.3Action/composer.json b/core/php7.3Action/composer.json deleted file mode 100644 index e361620..0000000 --- a/core/php7.3Action/composer.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "config": { - "platform": { - "php": "7.3" - } - }, - "require": { - "guzzlehttp/guzzle": "6.5.5", - "ramsey/uuid": "3.9.3" - } -} diff --git a/core/php7.3Action/php.ini b/core/php7.3Action/php.ini deleted file mode 100644 index bee173d..0000000 --- a/core/php7.3Action/php.ini +++ /dev/null @@ -1,37 +0,0 @@ -; Licensed to the Apache Software Foundation (ASF) under one or more -; contributor license agreements. See the NOTICE file distributed with -; this work for additional information regarding copyright ownership. -; The ASF licenses this file to You under the Apache License, Version 2.0 -; (the "License"); you may not use this file except in compliance with -; the License. You may obtain a copy of the License at -; -; http://www.apache.org/licenses/LICENSE-2.0 -; -; Unless required by applicable law or agreed to in writing, software -; distributed under the License is distributed on an "AS IS" BASIS, -; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -; See the License for the specific language governing permissions and -; limitations under the License. - -[PHP] -short_open_tag = Off -output_buffering = Off -expose_php = Off -max_execution_time = 0 -memory_limit = -1 -error_reporting = E_ALL -display_errors = Off -log_errors = On -log_errors_max_len = 0 -html_errors = Off -variables_order = "EGPCS" -request_order = "GP" -post_max_size = 0 -enable_dl = Off -zend.assertions = -1 - -[opcache] -opcache.enable=1 -opcache.enable_cli=1 -opcache.max_accelerated_files=7963 -opcache.validate_timestamps=0 diff --git a/core/php7.3Action/runner.php b/core/php7.3Action/runner.php deleted file mode 100755 index e2b924f..0000000 --- a/core/php7.3Action/runner.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -// open fd/3 as that's where we send the result -$fd3 = fopen('php://fd/3', 'w'); - -// Register a shutdown function so that we can fail gracefully when a fatal error occurs -register_shutdown_function(function () use ($fd3) { - $error = error_get_last(); - if ($error && in_array($error['type'], [E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR])) { - file_put_contents('php://stderr', "An error occurred running the action.\n"); - fwrite($fd3, "An error occurred running the action.\n"); - } - fclose($fd3); -}); - -require 'vendor/autoload.php'; -require 'index.php'; - -// retrieve main function -$__functionName = $argv[1] ?? 'main'; - - -// read stdin -while ($f = fgets(STDIN)) { - // call the function - $data = json_decode($f ?? '', true); - if (!is_array($data)) { - $data = []; - } - - // convert all parameters other than value to environment variables - foreach ($data as $key => $value) { - if ($key !== 'value') { - $envKeyName = '__OW_' . strtoupper($key); - $_ENV[$envKeyName] = $value; - putenv($envKeyName . '=' . $value); - } - } - - $values = $data['value'] ?? []; - try { - $result = $__functionName($values); - - // convert result to an array if we can - if (is_object($result)) { - if (method_exists($result, 'getArrayCopy')) { - $result = $result->getArrayCopy(); - } elseif ($result instanceof stdClass) { - $result = (array)$result; - } - } elseif ($result === null) { - $result = []; - } - - // process the result - if (!is_array($result)) { - file_put_contents('php://stderr', 'Result must be an array but has type "' - . gettype($result) . '": ' . (string)$result); - file_put_contents('php://stdout', 'The action did not return a dictionary.'); - $result = (string)$result; - } else { - $result = json_encode((object)$result); - } - } catch (Throwable $e) { - file_put_contents('php://stderr', (string)$e); - $result = 'An error occurred running the action.'; - } - - // ensure that the sentinels will be on their own lines - file_put_contents('php://stderr', "\n"); - file_put_contents('php://stdout', "\n"); - - // cast result to an object for json_encode to ensure that an empty array becomes "{}" & send to fd/3 - fwrite($fd3, $result . "\n"); -} diff --git a/settings.gradle b/settings.gradle index aeb5176..a4d9903 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,6 @@ include 'tests' -include 'core:php7.3Action' include 'core:php7.4Action' include 'core:php8.0Action' diff --git a/tests/src/test/scala/runtime/actionContainers/Php73ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/Php73ActionContainerTests.scala deleted file mode 100644 index fb51648..0000000 --- a/tests/src/test/scala/runtime/actionContainers/Php73ActionContainerTests.scala +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package runtime.actionContainers - -import org.junit.runner.RunWith -import org.scalatest.junit.JUnitRunner - -@RunWith(classOf[JUnitRunner]) -class Php73ActionContainerTests extends Php7ActionContainerTests { - - override lazy val phpContainerImageName = "action-php-v7.3" -}
