Skip to content

Commit e003d5d

Browse files
Fixed setup
1 parent b069ffd commit e003d5d

10 files changed

+44
-8
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "spring-cloud-contract-nodejs-external-contracts"]
2+
path = spring-cloud-contract-nodejs-external-contracts
3+
url = https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs-external-contracts.git

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
"dependencies": {
1111
"body-parser": "*",
1212
"express": "^4.16.3",
13-
"mongoose": "*"
13+
"mongoose": "*",
14+
"npm": "^5.8.0",
15+
"update": "^0.7.4"
1416
},
1517
"author": "Brad Traversy",
1618
"license": "ISC"

run_contract_tests.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ echo "Application URL [${APPLICATION_BASE_URL}]"
1818
echo "Artifactory URL [${ARTIFACTORY_URL}]"
1919
echo "Project Version [${PROJECT_VERSION}]"
2020

21-
docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/contracts/:/contracts:ro" -v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"
21+
mkdir -p build/spring-cloud-contract/output
22+
docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/contracts/:/contracts:ro" -v "${CURRENT_DIR}/build/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"

run_contract_tests_from_external_contracts.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ echo "Project Version [${PROJECT_VERSION}]"
3030

3131
# If you want to work offline just attach this volume
3232
# -v "${HOME}/.m2/:/root/.m2:ro"
33-
34-
docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -e "EXTERNAL_CONTRACTS_ARTIFACT_ID=${EXTERNAL_CONTRACTS_ARTIFACT_ID}" -e "EXTERNAL_CONTRACTS_GROUP_ID=${EXTERNAL_CONTRACTS_GROUP_ID}" -e "EXTERNAL_CONTRACTS_VERSION=${EXTERNAL_CONTRACTS_VERSION}" -e "EXTERNAL_CONTRACTS_CLASSIFIER=${EXTERNAL_CONTRACTS_CLASSIFIER}" -e "EXTERNAL_CONTRACTS_WORK_OFFLINE=${EXTERNAL_CONTRACTS_WORK_OFFLINE}" -v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"
33+
mkdir -p build/spring-cloud-contract/output
34+
docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -e "EXTERNAL_CONTRACTS_ARTIFACT_ID=${EXTERNAL_CONTRACTS_ARTIFACT_ID}" -e "EXTERNAL_CONTRACTS_GROUP_ID=${EXTERNAL_CONTRACTS_GROUP_ID}" -e "EXTERNAL_CONTRACTS_VERSION=${EXTERNAL_CONTRACTS_VERSION}" -e "EXTERNAL_CONTRACTS_CLASSIFIER=${EXTERNAL_CONTRACTS_CLASSIFIER}" -e "EXTERNAL_CONTRACTS_WORK_OFFLINE=${EXTERNAL_CONTRACTS_WORK_OFFLINE}" -v "${CURRENT_DIR}/build/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"

run_contract_tests_from_git.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ echo "Project Version [${PROJECT_VERSION}]"
2626

2727
# If you want to work offline just attach this volume
2828
# -v "${HOME}/.m2/:/root/.m2:ro"
29-
30-
docker run --rm -e "PUBLISH_STUBS_TO_SCM=true" -e "PUBLISH_ARTIFACTS=false" -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -e "EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL=git://file:/contracts_git/" -e "EXTERNAL_CONTRACTS_ARTIFACT_ID=${PROJECT_NAME}" -e "EXTERNAL_CONTRACTS_GROUP_ID=${PROJECT_GROUP}" -e "EXTERNAL_CONTRACTS_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/build/contracts_git/:/contracts_git:rw" -v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"
29+
mkdir -p build/spring-cloud-contract/output
30+
docker run --rm -e "PUBLISH_STUBS_TO_SCM=true" -e "PUBLISH_ARTIFACTS=false" -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" -e "PROJECT_NAME=${PROJECT_NAME}" -e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" -e "PROJECT_VERSION=${PROJECT_VERSION}" -e "EXTERNAL_CONTRACTS_REPO_WITH_BINARIES_URL=git://file:/contracts_git/" -e "EXTERNAL_CONTRACTS_ARTIFACT_ID=${PROJECT_NAME}" -e "EXTERNAL_CONTRACTS_GROUP_ID=${PROJECT_GROUP}" -e "EXTERNAL_CONTRACTS_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/build/contracts_git/:/contracts_git:rw" -v "${CURRENT_DIR}/build/spring-cloud-contract/output:/spring-cloud-contract-output/" springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"

run_tests_for_external.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ echo -e "\n\nRunning tests against Artifactory with external contracts\n\n"
88
./stop_infra.sh
99
./setup_infra.sh
1010

11+
# Upload artifact of external contracts
12+
./upload_external_contracts_to_artifactory.sh
13+
1114
# Kill & Run app
1215
pkill -f "node app" || echo "Failed to kill app"
1316
echo "Working around certificate issues" && npm config set strict-ssl false

setup_infra.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
#!/bin/bash
2+
echo "Fetching submodules"
3+
git submodule init
4+
git submodule update
5+
git submodule foreach git pull
26

7+
echo "Building docker"
38
pushd docker
49
docker-compose build
510
docker-compose up -d
611
popd
12+
echo "Waiting for 30 seconds for artifactory to boot properly"
13+
sleep 30

spring-cloud-contract.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,11 +278,12 @@ $ export PROJECT_GROUP="com.example"
278278
$ export PROJECT_VERSION="0.0.1.RELEASE"
279279

280280
# Execute contract tests
281+
$ mkdir -p build/spring-cloud-contract/output
281282
$ docker run --rm -e "APPLICATION_BASE_URL=${APPLICATION_BASE_URL}" \
282283
-e "PUBLISH_ARTIFACTS=true" -e "PROJECT_NAME=${PROJECT_NAME}" \
283284
-e "PROJECT_GROUP=${PROJECT_GROUP}" -e "REPO_WITH_BINARIES_URL=${ARTIFACTORY_URL}" \
284285
-e "PROJECT_VERSION=${PROJECT_VERSION}" -v "${CURRENT_DIR}/contracts/:/contracts:ro" \
285-
-v "${CURRENT_DIR}/node_modules/spring-cloud-contract/output:/spring-cloud-contract-output/" \
286+
-v "${CURRENT_DIR}/build/spring-cloud-contract/output:/spring-cloud-contract-output/" \
286287
springcloud/spring-cloud-contract:"${SC_CONTRACT_DOCKER_VERSION}"
287288

288289
# Kill app
@@ -298,7 +299,7 @@ What will happen is that, through the bash scripts:
298299
* The NodeJS application is started (on port `3000`) and is available at `192.168.0.100`.
299300
* Contract tests are generated by Docker and tests are executed against the running application.
300301
** The contracts are taken from the `/contracts` folder.
301-
** The output of the test execution is available at `node_modules/spring-cloud-contract/output`.
302+
** The output of the test execution is available at `build/spring-cloud-contract/output`.
302303
* The stubs are uploaded to Artifactory. You can check them out
303304
at http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/ .
304305
The stubs are at http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/bookstore-0.0.1.RELEASE-stubs.jar.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/bash
2+
3+
set -o errexit
4+
5+
# Here we assume that you've pushed to artifactory an artifact containing all contracts for all projects.
6+
# Example of such a project is available under https://github.com/spring-cloud-samples/spring-cloud-contract-nodejs-external-contracts
7+
8+
SC_CONTRACT_DOCKER_VERSION="${SC_CONTRACT_DOCKER_VERSION:-2.0.0.BUILD-SNAPSHOT}"
9+
APP_IP="$( ./whats_my_ip.sh )"
10+
APP_PORT="${APP_PORT:-3000}"
11+
ARTIFACTORY_PORT="${ARTIFACTORY_PORT:-8081}"
12+
APPLICATION_BASE_URL="http://${APP_IP}:${APP_PORT}"
13+
ARTIFACTORY_URL="http://admin:password@${APP_IP}:${ARTIFACTORY_PORT}/artifactory/libs-release-local"
14+
15+
pushd spring-cloud-contract-nodejs-external-contracts
16+
echo "Running the build"
17+
./mvnw clean deploy -Ddistribution.management.snapshot.url="${ARTIFACTORY_URL}" -Ddistribution.management.release.url="${ARTIFACTORY_URL}"
18+
popd

0 commit comments

Comments
 (0)