diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 79419d17d4..c51a7ad316 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -77,3 +77,19 @@ tracer-base-image: - ./tooling/ci/download-binary-php.sh prod - docker build -t ghcr.io/datadog/dd-trace-php/dd-trace-php:latest -f ./tooling/ci/Dockerfile . - docker push ghcr.io/datadog/dd-trace-php/dd-trace-php:latest + +php-library-base-image: + extends: .ci_authenticated_job + rules: + - if: '$CI_PIPELINE_SOURCE == "schedule"' + when: always + stage: deploy + script: + - echo $GH_TOKEN|docker login ghcr.io/datadog -u uploader --password-stdin + - ./tooling/ci/download-binary-php-library.sh dev + - docker build -t ghcr.io/datadog/dd-trace-php/dd-library-php:latest_snapshot -f ./tooling/ci/Dockerfile-ddlib . + - docker push ghcr.io/datadog/dd-trace-php/dd-library-php:latest_snapshot + - rm -rf ./tooling/ci/binaries + - ./tooling/ci/download-binary-php-library.sh prod + - docker build -t ghcr.io/datadog/dd-trace-php/dd-library-php:latest -f ./tooling/ci/Dockerfile-ddlib . + - docker push ghcr.io/datadog/dd-trace-php/dd-library-php:latest \ No newline at end of file diff --git a/tooling/ci/Dockerfile-ddlib b/tooling/ci/Dockerfile-ddlib new file mode 100644 index 0000000000..ae0aec21d7 --- /dev/null +++ b/tooling/ci/Dockerfile-ddlib @@ -0,0 +1,14 @@ +FROM datadog/dd-appsec-php-ci:php-7.0-release AS php_agent_debug +RUN apt-get update && apt-get install -y jq +COPY ./tooling/ci/ddlib-info.sh ./tooling/ci/binaries* /binaries/ +RUN /binaries/ddlib-info.sh +RUN php -d error_reporting='' -r 'echo phpversion("ddtrace");' > /binaries/LIBRARY_VERSION +RUN touch -c -a -m -d @0 /binaries/* + +FROM scratch as collect +COPY --from=php_agent_debug /binaries/dd-library-php-*-gnu.tar.gz / +COPY --from=php_agent_debug /binaries/datadog-setup.php /datadog-setup.php +COPY --from=php_agent_debug /binaries/LIBRARY_VERSION /LIBRARY_VERSION + +FROM scratch +COPY --from=collect /* / diff --git a/tooling/ci/ddlib-info.sh b/tooling/ci/ddlib-info.sh new file mode 100755 index 0000000000..9b1c836043 --- /dev/null +++ b/tooling/ci/ddlib-info.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -eu + +PKG=$(find /binaries -maxdepth 1 -name 'dd-library-php-*-gnu.tar.gz') +SETUP=/binaries/datadog-setup.php + +if [ "$PKG" != "" ] && [ ! -f "$SETUP" ]; then + echo "local install failed: package located in /binaries but datadog-setup.php not present, please include it" + exit 1 +fi + +if [ "$PKG" == "" ]; then + ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/') + if [ "$ARCH" = "arm64" ]; then + ARCH=aarch64 + else + ARCH=x86_64 + fi + unset PKG +fi + +export PHP_INI_SCAN_DIR="/etc/php" + +echo "Installing php package ${PKG-"{default}"} with setup script $SETUP" +php $SETUP --php-bin=all ${PKG+"--file=$PKG"} + diff --git a/tooling/ci/download-binary-php-library.sh b/tooling/ci/download-binary-php-library.sh new file mode 100755 index 0000000000..434ab6fc26 --- /dev/null +++ b/tooling/ci/download-binary-php-library.sh @@ -0,0 +1,19 @@ +VERSION=${1:-'dev'} + +echo "Load $VERSION binary " + +mkdir -p tooling/ci/binaries +cd tooling/ci/binaries + +#This script resides inside of docker image (ci_docker_base) +source /download-binary-tracer.sh + +if [ $VERSION = 'dev' ]; then + get_circleci_artifact "gh/DataDog/dd-trace-php" "build_packages" "package extension" "dd-library-php-.*-x86_64-linux-gnu.tar.gz" "dd-library-php-x86_64-linux-gnu.tar.gz" + get_circleci_artifact "gh/DataDog/dd-trace-php" "build_packages" "package extension" "datadog-setup.php" "datadog-setup.php" +elif [ $VERSION = 'prod' ]; then + get_github_release_asset "DataDog/dd-trace-php" "dd-library-php-.*-x86_64-linux-gnu.tar.gz" "dd-library-php-x86_64-linux-gnu.tar.gz" + get_github_release_asset "DataDog/dd-trace-php" "datadog-setup.php" "datadog-setup.php" +else + echo "Don't know how to load version $VERSION for $TARGET" +fi