You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by dg...@apache.org on 2022/05/13 20:17:41 UTC

[openwhisk-runtime-php] 01/02: remove php 7.3-based runtime (EOL at end of 2021)

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 <gr...@us.ibm.com>
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 1.16@1.18.0 (#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 GO_PROXY_RELEASE_VERSION=1.16@1.18.0
-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"
-}