Skip to content

Commit 45d1d5b

Browse files
committed
Improved build speed by ~1.5 minute
Added bind mount to DB docker at runtime to enable faster execution of scripts Removed need for sqlcl locally in build Added download of ojdbc and orai18n directly without click-through Cleanup of build scripts to make them more TRAVIS-agnostic
1 parent b7fbfeb commit 45d1d5b

14 files changed

Lines changed: 118 additions & 65 deletions

.travis.yml

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ env:
2525
- UT3_TESTER_HELPER=UT3_TESTER_HELPER
2626
- UT3_TESTER_HELPER_PASSWORD=ut3
2727
- UT3_TABLESPACE=users
28+
- BUILD_DIR=${TRAVIS_BUILD_DIR}
29+
- JOB_ID=${TRAVIS_JOB_ID}
30+
- JOB_NUMBER=${TRAVIS_JOB_NUMBER}
31+
- PULL_REQUEST_NAME=${TRAVIS_PULL_REQUEST}
32+
- PULL_REQUEST_BRANCH=${TRAVIS_PULL_REQUEST_BRANCH}
33+
- TAG_NAME=${TRAVIS_TAG}
34+
- REPO_SLUG=${TRAVIS_REPO_SLUG}
35+
- PR_SLUG=${TRAVIS_PULL_REQUEST_SLUG}
36+
- BRANCH_NAME=${TRAVIS_BRANCH}
2837
# Environment for building a release
2938
- CURRENT_BRANCH=${TRAVIS_BRANCH}
3039
- UTPLSQL_REPO="utPLSQL/utPLSQL"
@@ -35,25 +44,27 @@ env:
3544
- UTPLSQL_BUILD_USER_NAME="Travis CI"
3645
- CACHE_DIR=$HOME/.cache
3746
# Database Env
38-
- SQLCLI="$HOME/sqlcl/bin/sql"
39-
- OJDBC_HOME="$HOME/sqlcl/lib"
47+
- SQLCLI="${BUILD_DIR}/sqlcl/bin/sql"
48+
- OJDBC_HOME="${BUILD_DIR}/ojdbc"
4049
- ORACLE_PWD="oracle"
4150
- UT3_DOCKER_REPO="utplsqlv3/oracledb"
4251
- DOCKHER_HUB_REPO="${DOCKER_BASE_TAG:-$UT3_DOCKER_REPO}"
52+
- DOCKER_VOLUME="/home/oracle/host"
53+
- DOCKER_ENV="-e SQLCLI=sqlplus -e UT3_DEVELOP_SCHEMA -e UT3_DEVELOP_SCHEMA_PASSWORD -e UT3_RELEASE_VERSION_SCHEMA -e UT3_RELEASE_VERSION_SCHEMA_PASSWORD -e UT3_USER -e UT3_USER_PASSWORD -e UT3_TESTER -e UT3_TESTER_PASSWORD -e UT3_TESTER_HELPER -e UT3_TESTER_HELPER_PASSWORD -e UT3_TABLESPACE -e ORACLE_PWD -e CONNECTION_STR -e UTPLSQL_DIR"
4354
#utPLSQL released version directory
4455
- UTPLSQL_DIR="utPLSQL_latest_release"
4556
- SELFTESTING_BRANCH=${TRAVIS_BRANCH}
4657
- UTPLSQL_CLI_VERSION="3.1.8"
4758
# Maven
4859
- MAVEN_HOME=/usr/local/maven
4960
- MAVEN_CFG=$HOME/.m2
50-
matrix:
51-
- ORACLE_VERSION="${DOCKER_TAG_11G:-11g-r2-xe}" CONNECTION_STR='127.0.0.1:1521/XE' DOCKER_OPTIONS='--shm-size=1g'
61+
jobs:
62+
- ORACLE_VERSION="${DOCKER_TAG_11G:-11g-r2-xe}" CONNECTION_STR='127.0.0.1:1521/XE' DOCKER_VOLUME="/mnt/host" DOCKER_OPTIONS='--shm-size=1g'
5263
- ORACLE_VERSION="${DOCKER_TAG_12C:-12c-r1-se2-small}" CONNECTION_STR='127.0.0.1:1521/ORCLCDB'
5364
- ORACLE_VERSION="${DOCKER_TAG_12C2:-12c-r2-se2-small}" CONNECTION_STR='127.0.0.1:1521/ORCLCDB'
5465
- ORACLE_VERSION="${DOCKER_TAG_18:-18c-se2-small}" CONNECTION_STR='127.0.0.1:1521/ORCLCDB'
5566
- ORACLE_VERSION="${DOCKER_TAG_19:-19c-se2-small}" CONNECTION_STR='127.0.0.1:1521/ORCLCDB'
56-
- ORACLE_VERSION="${DOCKER_TAG_21XE:-21c-xe-full}" CONNECTION_STR='127.0.0.1:1521/XEPDB1' DOCKER_OPTIONS='-e ORACLE_PASSWORD=oracle'
67+
- ORACLE_VERSION="${DOCKER_TAG_21XE:-21c-xe-full}" CONNECTION_STR='127.0.0.1:1521/XEPDB1' DOCKER_OPTIONS='-e ORACLE_PASSWORD=oracle'
5768

5869
cache:
5970
pip: true
@@ -73,24 +84,29 @@ before_install:
7384
#Allow for sonar to blame issues
7485
- git fetch --unshallow
7586
# download latest utPLSQL release
76-
#- curl -LOk $(curl --silent https://api.github.com/repos/utPLSQL/utPLSQL/releases/latest | awk '/browser_download_url/ { print $2 }' | grep ".zip" | sed 's/"//g')
7787
- git clone --depth=1 --branch=${SELFTESTING_BRANCH:-main} https://github.com/utPLSQL/utPLSQL.git $UTPLSQL_DIR
7888
# download latest utPLSQL-cli release
7989
- curl -Lk -o utPLSQL-cli.zip https://github.com/utPLSQL/utPLSQL-cli/releases/download/v${UTPLSQL_CLI_VERSION}/utPLSQL-cli.zip
8090

8191
install:
82-
#- unzip utPLSQL.zip
8392
- unzip utPLSQL-cli.zip && chmod -R u+x utPLSQL-cli
84-
- bash .travis/install_sqlcl.sh
93+
# - curl -Lk -o sqlcl-latest.zip https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip
94+
# - unzip -q sqlcl-latest.zip -d $HOME
95+
- mkdir -p ${OJDBC_HOME} #get JDBC driver and orai18n
96+
- curl -Lk -o ${OJDBC_HOME}/ojdbc8.jar https://download.oracle.com/otn-pub/otn_software/jdbc/213/ojdbc8.jar
97+
- curl -Lk -o ${OJDBC_HOME}/orai18n.jar https://download.oracle.com/otn-pub/otn_software/jdbc/213/orai18n.jar
98+
# Chmod is needed to allow for write access within from docker container volume
99+
- chmod -R go+w ./{source,test,examples,${UTPLSQL_DIR}/source}
85100
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/start_db.sh; fi
101+
- if [[ ! $TRAVIS_TAG ]]; then docker exec ${ORACLE_VERSION} ${DOCKER_VOLUME}/.travis/install.sh; fi
102+
- if [[ ! $TRAVIS_TAG ]]; then docker exec ${ORACLE_VERSION} ${DOCKER_VOLUME}/.travis/install_utplsql_release.sh; fi
86103

87104
before_script:
88-
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/install.sh; fi
89-
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/install_utplsql_release.sh; fi
90-
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/run_examples.sh; fi
105+
- if [[ ! $TRAVIS_TAG ]]; then docker exec ${ORACLE_VERSION} ${DOCKER_VOLUME}/.travis/run_examples.sh; fi
106+
- if [[ ! $TRAVIS_TAG ]]; then docker exec ${ORACLE_VERSION} ${DOCKER_VOLUME}/test/install_tests.sh; fi
91107

92108
script:
93-
- if [[ ! $TRAVIS_TAG ]]; then bash test/install_and_run_tests.sh; fi
109+
- if [[ ! $TRAVIS_TAG ]]; then bash test/run_tests.sh; fi
94110
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/validate_report_files.sh; fi
95111
- if [[ ! $TRAVIS_TAG ]] && [[ ("${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" && "${TRAVIS_PULL_REQUEST}" == false) || ("${TRAVIS_PULL_REQUEST_SLUG}" = "${UTPLSQL_REPO}") ]]; then bash .travis/run_sonar_scanner.sh; fi
96112
- if [[ ! $TRAVIS_TAG ]]; then bash .travis/coveralls_uploader.sh; fi

.travis/coveralls_uploader.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ fs.readFile('../coverage.json',function (err,data) {
1414
return console.log(err);
1515
}
1616
req = JSON.parse(data);
17-
req.service_job_id = process.env.TRAVIS_JOB_ID;
17+
req.service_job_id = process.env.JOB_ID;
1818
req.service_name = 'travis-ci';
1919
if (process.env.COVERALLS_REPO_TOKEN) {
2020
req.repo_token = process.env.COVERALLS_REPO_TOKEN;

.travis/install.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#!/bin/bash
22

3-
cd source
43
set -ev
4+
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
5+
cd ${SCRIPT_DIR}/../source
56

67
INSTALL_FILE="install_headless_with_trigger.sql"
78
if [[ ! -f "${INSTALL_FILE}" ]]; then
@@ -20,7 +21,7 @@ alter session set plsql_optimize_level=0;
2021
SQL
2122

2223
#Run this step only on second child job (12.1 - at it's fastest)
23-
if [[ "${TRAVIS_JOB_NUMBER}" =~ \.2$ ]]; then
24+
if [[ "${JOB_NUMBER}" =~ \.2$ ]]; then
2425

2526
#check code-style for errors
2627
time "$SQLCLI" $UT3_DEVELOP_SCHEMA/$UT3_DEVELOP_SCHEMA_PASSWORD@//$CONNECTION_STR @../development/utplsql_style_check.sql

.travis/install_sqlcl.sh

Lines changed: 0 additions & 20 deletions
This file was deleted.

.travis/install_utplsql_release.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22

33
set -ev
4-
5-
cd $UTPLSQL_DIR/source
4+
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
5+
cd ${SCRIPT_DIR}/../${UTPLSQL_DIR}/source
66

77
"$SQLCLI" sys/$ORACLE_PWD@//$CONNECTION_STR AS SYSDBA <<SQL
88
set serveroutput on

.travis/push_docs_to_github_io.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ GITHUB_IO_BRANCH='main'
2020
# TRAVIS_* variables are set by travis directly and only need to be if testing externally
2121

2222
# We deploy only when building on develop branch or on TAG (release)
23-
if [ "$TRAVIS_PULL_REQUEST" == "false" ] && { [ "${CURRENT_BRANCH}" == "${LATEST_DOCS_BRANCH}" ] || [ -n "${TRAVIS_TAG}" ]; }; then
23+
if [ "${PULL_REQUEST_NAME}" == "false" ] && { [ "${CURRENT_BRANCH}" == "${LATEST_DOCS_BRANCH}" ] || [ -n "${TAG_NAME}" ]; }; then
2424

2525
# ENV Variable checks are to help with configuration troubleshooting, they silently exit with unique message.
2626
# Anyone one of them not set can be used to turn off this functionality.
@@ -47,7 +47,7 @@ if [ "$TRAVIS_PULL_REQUEST" == "false" ] && { [ "${CURRENT_BRANCH}" == "${LATEST
4747
cp -a ../../docs/. ./develop
4848

4949
# If a Tagged Build then copy to it's own directory as well and to the 'latest' release directory
50-
if [ -n "$TRAVIS_TAG" ]; then
50+
if [ -n "${TAG_NAME}" ]; then
5151
echo "Creating directory ./${UTPLSQL_VERSION}"
5252
mkdir -p ./${UTPLSQL_VERSION}
5353
rm -rf ./${UTPLSQL_VERSION}/**./* || exit 0
@@ -81,10 +81,10 @@ if [ "$TRAVIS_PULL_REQUEST" == "false" ] && { [ "${CURRENT_BRANCH}" == "${LATEST
8181
echo "" >>index.md
8282
fi
8383
#If build running on a TAG - it's a new release - need to add it to documentation
84-
if [ -n "${TRAVIS_TAG}" ]; then
85-
sed -i '7s@.*@'" - [Latest ${TRAVIS_TAG} documentation](latest/) - Created $now"'@' index.md
84+
if [ -n "${TAG_NAME}" ]; then
85+
sed -i '7s@.*@'" - [Latest ${TAG_NAME} documentation](latest/) - Created $now"'@' index.md
8686
#add entry to the top of version history (line end of file - ## Released Version Doc History
87-
sed -i '12i'" - [${TRAVIS_TAG} documentation](${UTPLSQL_VERSION}/) - Created $now" index.md
87+
sed -i '12i'" - [${TAG_NAME} documentation](${UTPLSQL_VERSION}/) - Created $now" index.md
8888
fi
8989
#replace 4th line in log
9090
sed -i '8s@.*@'" - [Latest development version](develop/) - Created $now"'@' index.md

.travis/push_release_version.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# We are updating version number only when:
44
# - not a pull request
55
# - branch name is = develop or branch name is like release/vX.X.X...
6-
if [ "${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [[ "${CURRENT_BRANCH}" =~ ^(release/v[0-9]+\.[0-9]+\.[0-9]+.*|develop)$ ]]; then
6+
if [ "${REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [ "${PULL_REQUEST_NAME}" == "false" ] && [[ "${CURRENT_BRANCH}" =~ ^(release/v[0-9]+\.[0-9]+\.[0-9]+.*|develop)$ ]]; then
77
echo Current branch is "${CURRENT_BRANCH}"
88
echo "Committing version & buildNo into branch (${CURRENT_BRANCH})"
99
git add sonar-project.properties
@@ -14,5 +14,5 @@ if [ "${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [ "$TRAVIS_PULL_REQUEST" ==
1414
echo "Pushing to origin"
1515
git push --quiet origin HEAD:${CURRENT_BRANCH}
1616
else
17-
echo "Publishing of version skipped for branch ${CURRENT_BRANCH}, pull request ${TRAVIS_PULL_REQUEST}"
17+
echo "Publishing of version skipped for branch ${CURRENT_BRANCH}, pull request ${PULL_REQUEST_NAME}"
1818
fi

.travis/run_examples.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/bin/bash
22

3-
cd "$(dirname "$(readlink -f "$0")")"/../examples
4-
53
set -ev
4+
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
5+
cd ${SCRIPT_DIR}/../examples
66

77
"$SQLCLI" $UT3_DEVELOP_SCHEMA/$UT3_DEVELOP_SCHEMA_PASSWORD@//$CONNECTION_STR <<SQL
88

.travis/run_sonar_scanner.sh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,28 @@ function add_sonar_property {
2121
}
2222

2323

24-
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
25-
BRANCH=$TRAVIS_BRANCH;
24+
if [ "${PULL_REQUEST_NAME}" == "false" ]; then
25+
BRANCH=${BRANCH_NAME};
2626
PR_BRANCH=""
2727
echo "BRANCH=$BRANCH"
2828
else
29-
BRANCH=$TRAVIS_PULL_REQUEST_BRANCH
30-
PR_BRANCH=$TRAVIS_BRANCH
31-
echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=$TRAVIS_PULL_REQUEST, BRANCH=$BRANCH"
29+
BRANCH=${PULL_REQUEST_BRANCH}
30+
PR_BRANCH=${BRANCH_NAME}
31+
echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, PR=${PULL_REQUEST_NAME}, BRANCH=$BRANCH"
3232

3333
fi
3434

3535

3636
#Are we running on utPLSQL repo and not an external PR?
3737
echo "Check if we running from develop or on branch"
38-
if [ "${TRAVIS_REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [[ ! "${BRANCH}" =~ ^(release/v[0-9]+\.[0-9]+\.[0-9]+.*|"${MAIN_DEV_BRANCH}")$ ]]; then
38+
if [ "${REPO_SLUG}" = "${UTPLSQL_REPO}" ] && [[ ! "${BRANCH}" =~ ^(release/v[0-9]+\.[0-9]+\.[0-9]+.*|"${MAIN_DEV_BRANCH}")$ ]]; then
3939

4040
echo "" >> sonar-project.properties
41-
if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
41+
if [ "${PULL_REQUEST_NAME}" == "false" ]; then
4242
echo "Updating sonar properties to include branch ${BRANCH}"
4343
add_sonar_property "${BRANCH_SONAR_PROPERTY}" "${BRANCH}"
4444
add_sonar_property "${BRANCH_SONAR_TARGET_PROPERTY}" "${MAIN_DEV_BRANCH}"
45-
elif [ "${TRAVIS_PULL_REQUEST_SLUG}" = "${TRAVIS_REPO_SLUG}" ]; then
45+
elif [ "${PR_SLUG}" = "${REPO_SLUG}" ]; then
4646
echo "Updating sonar properties to include pull request ${BRANCH}"
4747
add_sonar_property "${PR_SONAR_TOKEN_PROPERTY}" "${GITHUB_TRAVISCI_TOKEN}"
4848
add_sonar_property "${PR_SONAR_BRANCH_PROPERTY}" "${BRANCH}"

.travis/start_db.sh

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ else
1010
mkdir -p $HOME/.docker && cp $CACHE_DIR/.docker/config.json $HOME/.docker/
1111
fi
1212

13-
df -h
1413
time docker pull $DOCKHER_HUB_REPO:$ORACLE_VERSION
15-
df -h
16-
docker run -d --name $ORACLE_VERSION $DOCKER_OPTIONS -p 1521:1521 $DOCKHER_HUB_REPO:$ORACLE_VERSION
14+
docker run -d --name $ORACLE_VERSION --mount type=bind,source=${BUILD_DIR},target=${DOCKER_VOLUME} $DOCKER_OPTIONS $DOCKER_ENV -p 1521:1521 $DOCKHER_HUB_REPO:$ORACLE_VERSION
1715
time docker logs -f $ORACLE_VERSION | grep -m 1 "DATABASE IS READY TO USE!" --line-buffered
18-
df -h

0 commit comments

Comments
 (0)