@@ -19,30 +19,50 @@ install:
1919 - npm install
2020jobs :
2121 include :
22+ # ####################### PR TO STAGING ########################
2223 # PR tests for staging branch
2324 - stage : Test-PR-staging
2425 if : branch = staging AND type = pull_request
2526 script : npm run test
2627 name : kubernetes-monitor PR tests
27- # merge tests before building the product on staging branch
28- - stage : Test-Merge-staging
28+ # ####################### MERGE TO STAGING ########################
29+ - stage : test-and-build
2930 if : branch = staging AND type = push
30- script : npm run test # TODO: only check linting, unittest
31- name : kubernetes-monitor merge initial tests
32- # building the product on staging branch after merging
33- - stage : Build
34- if : branch = staging AND type = push
35- # we will need to change the tag to test-candidate, then use the image, then re-tag to test-approved
36- script : docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} && docker build -t snyk/kubernetes-monitor:test-approved --no-cache . && docker push snyk/kubernetes-monitor:test-approved && ./scripts/slack-notify-push.sh test-approved
37- name : build the kubernetes-monitor image
38- # TODO: run integration tests with the image we just built, then mark it as test-passed
31+ script : npm run lint &&
32+ npm run build &&
33+ npm run test:unit &&
34+ docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} &&
35+ npx semantic-release &&
36+ NEW_VERSION=`cat ./package.json | jq -r '.version'` &&
37+ IMAGE_NAME_CANDIDATE=snyk/kubernetes-monitor:${NEW_VERSION}-candidate &&
38+ ./scripts/build-image.sh ${IMAGE_NAME_CANDIDATE} &&
39+ docker push ${IMAGE_NAME_CANDIDATE} &&
40+ ./scripts/slack-notify-push.sh ${IMAGE_NAME_CANDIDATE} &&
41+ KUBERNETES_MONITOR_IMAGE_NAME_AND_TAG=${IMAGE_NAME_CANDIDATE} npm run test:integration &&
42+ IMAGE_NAME_APPROVED=snyk/kubernetes-monitor:${NEW_VERSION}-approved &&
43+ docker tag ${IMAGE_NAME_CANDIDATE} ${IMAGE_NAME_APPROVED} &&
44+ docker push ${IMAGE_NAME_APPROVED} &&
45+ ./scripts/slack-notify-push.sh ${IMAGE_NAME_APPROVED}
46+ name : Test and Build
47+ # ####################### PR TO MASTER ########################
3948 - stage : pre-publish
4049 if : branch = master AND type = pull_request AND head_branch = staging
4150 script : ./scripts/slack-notify-pr.sh
4251 name : pre-publish notification
52+ # ####################### MERGE TO MASTER ########################
4353 - stage : Publish
4454 if : branch = master AND type = push
45- script : docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} && docker pull snyk/kubernetes-monitor:test-approved && docker tag snyk/kubernetes-monitor:test-approved snyk/kubernetes-monitor:latest && docker push snyk/kubernetes-monitor:latest && ./scripts/slack-notify-push.sh latest
55+ script : LATEST_TAG=`git describe --abbrev=0 --tags ${TRAVIS_COMMIT}` &&
56+ IMAGE_NAME_APPROVED=snyk/kubernetes-monitor:${LATEST_TAG}-approved &&
57+ IMAGE_NAME_PUBLISHED=snyk/kubernetes-monitor:${LATEST_TAG} &&
58+ docker login --username ${DOCKERHUB_USER} --password ${DOCKERHUB_PASSWORD} &&
59+ docker pull ${IMAGE_NAME_APPROVED} &&
60+ docker tag ${IMAGE_NAME_APPROVED} ${IMAGE_NAME_PUBLISHED} &&
61+ docker push ${IMAGE_NAME_PUBLISHED} &&
62+ ./scripts/slack-notify-push.sh ${IMAGE_NAME_PUBLISHED} &&
63+ docker tag ${IMAGE_NAME_APPROVED} snyk/kubernetes-monitor:latest &&
64+ docker push ${IMAGE_NAME_PUBLISHED} &&
65+ ./scripts/slack-notify-push.sh snyk/kubernetes-monitor:latest
4666 name : publish the kubernetes-monitor (npm, container, helm)
4767branches :
4868 only :
0 commit comments