mirror of
https://github.com/macintoshplus/mongo-php-driver.git
synced 2026-03-24 00:42:15 +01:00
PHPC-2366: Invoke drivers-evergreen-tools scripts with bash (#1530)
This also applies bash to PHPC's scripts since it makes no difference. * Replace old Evergreen README content with link to architecture doc * compile.sh and compile-windows.sh are obsolete
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
# Evergreen Notes
|
||||
# Evergreen
|
||||
|
||||
See [Evergreen Build System Architecture](architecture.md) for more details.
|
||||
|
||||
## mongo-php-toolchain
|
||||
|
||||
@@ -6,73 +8,9 @@
|
||||
responsible for building PHP binaries that will be distributed to Evergreen
|
||||
hosts.
|
||||
|
||||
The Debian and RHEL toolchain scripts are responsible for building individual
|
||||
toolchains for each variant (e.g. PHP version, architecture). Debian and RHEL
|
||||
are separate primarily for reasons related to OpenSSL.
|
||||
|
||||
## drivers-evergreen-tools
|
||||
|
||||
[mongodb-labs/drivers-evergreen-tools](https://github.com/mongodb-labs/drivers-evergreen-tools)
|
||||
consists of common scripts used by many drivers (e.g. Mongo Orchestration). The
|
||||
PHP driver clones this during the build process.
|
||||
|
||||
In some cases, we have modified scripts in the drivers-evergreen-tools
|
||||
repository. For instance, the PHP driver uses its own `run-orchestration.sh`
|
||||
script but still relies on the common `stop-orchestration.sh` script.
|
||||
|
||||
## PHP driver Evergreen configuration
|
||||
|
||||
`$PROJECT_DIRECTORY` is set by Evergreen and denotes the directory where the PHP
|
||||
driver is built and tested (i.e. git checkout directory).
|
||||
|
||||
Various files have been copied and modified from drivers-evergreen-tools:
|
||||
|
||||
* `compile.sh`: This is the main entry point for building the driver and will
|
||||
either call `compile-unix.sh` and `compile-windows.sh`; however, Windows
|
||||
builds use a Cygwin environment and are not yet supported.
|
||||
* `compile-unix.sh`: This includes architecture-specific flags and is used for
|
||||
both Linux and macOS builds.
|
||||
* `run-orchestration.sh`: This is very similar to the drivers-evergreen-tools
|
||||
script but it is customized to use the PHP driver's own topology configs for
|
||||
Mongo Orchestration.
|
||||
* `start-orchestration.sh`: This is modified to install an older, tagged
|
||||
version of Mongo Orchestration. This was necessary for a particular platform,
|
||||
but may be something to look into in the future.
|
||||
|
||||
The PHP driver's `config.yml` is a very stripped down and heavily modified copy
|
||||
of the drivers-evergreen-tools configuration. This file starts by defining
|
||||
several functions, which consist of one or more commands (types supported by
|
||||
Evergreen).
|
||||
|
||||
In the case of the `bootstrap mongo-orchestration` function, we execute our
|
||||
modified `run-orchestration.sh` script and assign various environment variables
|
||||
which have been defined by our matrix configuration (excluding the
|
||||
`$PROJECT_DIRECTORY`, which is set by Evergreen itself).
|
||||
|
||||
In `run tests`, we also depend on environment variables (e.g. `$MONGODB_URI`)
|
||||
that originates in `run-orchestration.sh` and are unpacked and assigned by the
|
||||
`expansions.update` command within the `bootstrap mongo-orchestration` function.
|
||||
Since Evergreen functions do not return values, assigning environment variables
|
||||
is the preferred way to communicate down the line.
|
||||
|
||||
The `pre` and `post` block define a sequence of functions to run before and
|
||||
after each build, respectively.
|
||||
|
||||
Build variants are the top-level scope in Evergreen. They consist of a list of
|
||||
tasks (i.e. a square in Evergreen output) and a matrix. The matrix specification
|
||||
is the combination of all included axes. For instance, the `tests-php5` matrix
|
||||
may consist of all OS types with PHP5, MongoDB server version 4.0 (we need not
|
||||
test all server versions), and lastly one or more specific PHP 5.x versions.
|
||||
Such a matrix might yield a dozen variants, which will be run for each task in
|
||||
the build variant configuration. The `display_name` option determines how the
|
||||
build variant (combination of matrix and all tasks) is labeled in the Evergreen
|
||||
UI.
|
||||
|
||||
The `axes` block defines a list of values for a specific group or ID, which is
|
||||
used when defining a matrix. For instance, if a matrix includes 4 axes, it will
|
||||
expand to all possible combinations of values within those axes. Care should be
|
||||
taken to not create too many redundant combinations when defining matrices.
|
||||
|
||||
The `exclude_spec` field within a build variant allows us to exclude one or more
|
||||
combinations from the generated matrix. We typically use this to exclude an
|
||||
environment we know is not supported (e.g. MongoDB 3.0 and 3.2 on zSeries).
|
||||
consists of common scripts used by many drivers (e.g. starting
|
||||
[mongo-orchestration](https://github.com/10gen/mongo-orchestration)). The PHP
|
||||
driver clones this during the build process.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -o errexit # Exit the script with error if any of the commands fail
|
||||
|
||||
# Find PHP binary path for the requested version
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -o igncr # Ignore CR in this script
|
||||
set -o errexit # Exit the script with error if any of the commands fail
|
||||
|
||||
# Supported/used environment variables:
|
||||
# CC Which compiler to use
|
||||
|
||||
|
||||
case "$CC" in
|
||||
# 64bit specific configuration
|
||||
*Win64)
|
||||
;;
|
||||
# 32bit specific configuration
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# Resolve the compiler name to correct MSBuild location
|
||||
case "$CC" in
|
||||
"Visual Studio 10 2010")
|
||||
BUILD="/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe"
|
||||
;;
|
||||
"Visual Studio 10 2010 Win64")
|
||||
BUILD="/cygdrive/c/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe"
|
||||
;;
|
||||
"Visual Studio 12 2013")
|
||||
BUILD="/cygdrive/c/Program Files (x86)/MSBuild/12.0/Bin/MSBuild.exe"
|
||||
;;
|
||||
"Visual Studio 12 2013 Win64")
|
||||
BUILD="/cygdrive/c/Program Files (x86)/MSBuild/12.0/Bin/MSBuild.exe"
|
||||
;;
|
||||
"Visual Studio 14 2015")
|
||||
BUILD="/cygdrive/c/Program Files (x86)/MSBuild/14.0/Bin/MSBuild.exe"
|
||||
;;
|
||||
"Visual Studio 14 2015 Win64")
|
||||
BUILD="/cygdrive/c/Program Files (x86)/MSBuild/14.0/Bin/MSBuild.exe"
|
||||
;;
|
||||
esac
|
||||
|
||||
export PATH=$PATH:`pwd`/tests:`pwd`/Debug:`pwd`/src/libbson/Debug
|
||||
CMAKE="/cygdrive/c/cmake/bin/cmake"
|
||||
INSTALL_DIR="C:/install-dir"
|
||||
|
||||
|
||||
"$CMAKE" -G "$CC" "-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}" "-DBSON_ROOT_DIR=${INSTALL_DIR}" $CONFIGURE_FLAGS
|
||||
"$BUILD" /m ALL_BUILD.vcxproj
|
||||
"$BUILD" /m INSTALL.vcxproj
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -o errexit # Exit the script with error if any of the commands fail
|
||||
|
||||
|
||||
DIR=$(dirname $0)
|
||||
|
||||
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
|
||||
BUILDTOOL=${BUILDTOOL:-autotools}
|
||||
|
||||
case "$OS" in
|
||||
cygwin*)
|
||||
sh $DIR/compile-windows.sh
|
||||
;;
|
||||
|
||||
*)
|
||||
# If compiling using multiple different build tools or variants
|
||||
# that require wildly different scripting,
|
||||
# this would be a good place to call the different scripts
|
||||
case "$BUILDTOOL" in
|
||||
cmake)
|
||||
sh $DIR/compile-unix-cmake.sh
|
||||
;;
|
||||
autotools)
|
||||
sh $DIR/compile-unix.sh
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -179,7 +179,7 @@ functions:
|
||||
script: |
|
||||
${PREPARE_SHELL}
|
||||
SKIP_LEGACY_SHELL=true \
|
||||
sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh
|
||||
bash ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh
|
||||
# run-orchestration generates expansion file with MONGODB_URI and CRYPT_SHARED_LIB_PATH
|
||||
- command: expansions.update
|
||||
params:
|
||||
@@ -190,7 +190,7 @@ functions:
|
||||
params:
|
||||
script: |
|
||||
${PREPARE_SHELL}
|
||||
sh ${DRIVERS_TOOLS}/.evergreen/stop-orchestration.sh
|
||||
bash ${DRIVERS_TOOLS}/.evergreen/stop-orchestration.sh
|
||||
|
||||
"run OCSP responder":
|
||||
- command: shell.exec
|
||||
@@ -202,7 +202,7 @@ functions:
|
||||
shell: bash
|
||||
script: |
|
||||
${PREPARE_SHELL}
|
||||
${PROJECT_DIRECTORY}/.evergreen/run-ocsp-responder.sh
|
||||
bash ${PROJECT_DIRECTORY}/.evergreen/run-ocsp-responder.sh
|
||||
|
||||
"run tests":
|
||||
- command: shell.exec
|
||||
@@ -221,7 +221,7 @@ functions:
|
||||
working_dir: "src"
|
||||
script: |
|
||||
${PREPARE_SHELL}
|
||||
sh ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh
|
||||
bash ${PROJECT_DIRECTORY}/.evergreen/run-tests.sh
|
||||
|
||||
"cleanup":
|
||||
- command: shell.exec
|
||||
@@ -254,13 +254,14 @@ functions:
|
||||
${PREPARE_SHELL}
|
||||
file="${DRIVERS_TOOLS}/.evergreen/install-dependencies.sh"
|
||||
# Don't use ${file} syntax here because evergreen treats it as an empty expansion.
|
||||
[ -f "$file" ] && sh $file || echo "$file not available, skipping"
|
||||
[ -f "$file" ] && bash $file || echo "$file not available, skipping"
|
||||
|
||||
"start load balancer":
|
||||
- command: shell.exec
|
||||
params:
|
||||
script: |
|
||||
MONGODB_URI="${MONGODB_URI}" ${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh start
|
||||
MONGODB_URI="${MONGODB_URI}" \
|
||||
bash ${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh start
|
||||
- command: expansions.update
|
||||
params:
|
||||
file: lb-expansion.yml
|
||||
@@ -271,5 +272,5 @@ functions:
|
||||
script: |
|
||||
# Only run if a load balancer was started
|
||||
if [ -n "${SINGLE_MONGOS_LB_URI}" ]; then
|
||||
${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh stop
|
||||
bash ${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh stop
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
set -o errexit
|
||||
|
||||
# Run an mock OCSP responder server if necessary. This script should be invoked
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
set -o errexit # Exit the script with error if any of the commands fail
|
||||
|
||||
# Supported environment variables
|
||||
|
||||
Reference in New Issue
Block a user