From ef119d950565477c22ac8444568ce1fb70d6b770 Mon Sep 17 00:00:00 2001 From: baghbidi Date: Tue, 16 Apr 2019 23:40:31 -0700 Subject: [PATCH 1/3] Support Env vars and CMD in Pods --- src/services/kubelet-service.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/services/kubelet-service.js b/src/services/kubelet-service.js index 65a4cd13c..d55154947 100644 --- a/src/services/kubelet-service.js +++ b/src/services/kubelet-service.js @@ -90,6 +90,13 @@ const kubeletCreatePod = async function (createPodData, fogNodeUuid, user, trans ports: ms.ports || [], routes: ms.routes || [], } + if (ms.env && ms.env.length > 0) { + microserviceData.env = ms.env + } + if (ms.cmd && ms.cmd.length > 0) { + microserviceData.cmd = ms.cmd + } + microservice = await MicroservicesService.createMicroserviceEndPoint(microserviceData, user, false, transaction) microservicesIds.push(microservice.uuid) } @@ -123,7 +130,7 @@ const kubeletUpdatePod = async function (uploadPodData, fogNodeUuid, user, trans msDup.map((ms) => { const name = `${flowData.name}-${ms.name}` - return { + const microserviceData = { name: name, config: ms.config, catalogItemId: ms['catalog-item-id'], @@ -134,6 +141,14 @@ const kubeletUpdatePod = async function (uploadPodData, fogNodeUuid, user, trans ports: ms.ports || [], routes: ms.routes || [], } + if (ms.env && ms.env.length > 0) { + microserviceData.env = ms.env + } + if (ms.cmd && ms.cmd.length > 0) { + microserviceData.cmd = ms.cmd + } + + return microserviceData }) } From 3ea858a7829a756632a505cf51c510208d957318 Mon Sep 17 00:00:00 2001 From: baghbidi Date: Mon, 22 Apr 2019 23:22:09 -0700 Subject: [PATCH 2/3] Dockerfiles --- .travis.yml | 15 +++++++++++++++ Dockerfile.dev | 13 +++++++++++++ Dockerfile.rel | 11 +++++++++++ 3 files changed, 39 insertions(+) create mode 100644 Dockerfile.dev create mode 100644 Dockerfile.rel diff --git a/.travis.yml b/.travis.yml index b127b8313..eab84eb41 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,9 @@ notifications: on_failure: always template: - "Build <%{build_url}|#%{build_number}> (<%{compare_url}|%{commit}>) of %{repository_slug}@%{branch} in PR <%{pull_request_url}|#%{pull_request_number}> by %{author} %{result} in %{duration}" +env: + global: + - COMMIT=${TRAVIS_COMMIT::8} stages: - name: test if: branch =~ /^release-.*$/ OR branch IN (develop, master) @@ -46,10 +49,17 @@ jobs: $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP:/iofogcontroller - sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP "npm i --unsafe-perm -g /iofogcontroller/iofogcontroller-*.tgz; iofog-controller start" + - docker build -t edgeworx/controller-dev:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.dev + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push edgeworx/controller-dev:latest + - docker tag edgeworx/controller-dev:latest edgeworx/controller-dev:$COMMIT + - docker push edgeworx/controller-dev:$COMMIT - stage: pre_release_deploy before_install: - sudo apt-get install sshpass script: skip + before_deploy: + - npm pack #- npm version prerelease --preid=prerelease -m "upgrade to %s for prerelease package" deploy: skip_cleanup: true @@ -62,6 +72,11 @@ jobs: after_deploy: - sshpass -p $PREPROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PREPROD_MACHINE_USERNAME@$PREPROD_MACHINE_IP "iofog-controller stop; npm i --unsafe-perm -g iofogcontroller@dev; iofog-controller start" + - docker build -t edgeworx/controller:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.dev + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push edgeworx/controller:latest + - docker tag edgeworx/controller:latest edgeworx/controller:$COMMIT + - docker push edgeworx/controller:$COMMIT - stage: release_deploy before_install: - sudo apt-get install sshpass diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 000000000..dde6db245 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,13 @@ +FROM node:alpine + +ARG FILENAME +ENV NODE_ENV=development + +COPY ${FILENAME} /tmp + +RUN npm i --unsafe-perm -g /tmp/${FILENAME} && \ + rm /tmp/${FILENAME} && \ + iofog-controller config dev-mode --on && \ + echo "iofog-controller start && tail -f /dev/null" >> /start.sh + +CMD [ "sh", "/start.sh" ] \ No newline at end of file diff --git a/Dockerfile.rel b/Dockerfile.rel new file mode 100644 index 000000000..9b99a1fd5 --- /dev/null +++ b/Dockerfile.rel @@ -0,0 +1,11 @@ +FROM node:alpine + +ARG FILENAME + +COPY ${FILENAME} /tmp + +RUN npm i --unsafe-perm -g /tmp/${FILENAME} && \ + rm /tmp/${FILENAME} && \ + echo "iofog-controller start && tail -f /dev/null" >> /start.sh + +CMD [ "sh", "/start.sh" ] \ No newline at end of file From ff20dba1465d7301fa0a992045520192b6e2b850 Mon Sep 17 00:00:00 2001 From: baghbidi Date: Tue, 23 Apr 2019 00:00:37 -0700 Subject: [PATCH 3/3] Update image tags --- .travis.yml | 66 +++++++++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/.travis.yml b/.travis.yml index eab84eb41..20fb25d70 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,38 +29,36 @@ jobs: - script: "npm run postman_test" - stage: dev_deploy before_install: - - sudo apt-get install sshpass + - sudo apt-get install sshpass script: skip before_deploy: - - npm pack - #- export VERSION=`npm view iofogcontroller version` + - npm pack deploy: skip_cleanup: true provider: script script: - - sshpass -p $EDGEWORX_PASSWORD scp -o StrictHostKeyChecking=no iofogcontroller-*.tgz - $EDGEWORX_USERNAME@$EDGEWORX_IP:/var/www/vhosts/edgeworx.io/downloads/builds/iofogcontroller.tgz + - sshpass -p $EDGEWORX_PASSWORD scp -o StrictHostKeyChecking=no iofogcontroller-*.tgz + $EDGEWORX_USERNAME@$EDGEWORX_IP:/var/www/vhosts/edgeworx.io/downloads/builds/iofogcontroller.tgz on: branch: develop after_deploy: - - sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP - "iofog-controller stop; rm -f /iofogcontroller/*" - - sshpass -p $DEV_MACHINE_PASSWORD scp -o StrictHostKeyChecking=no iofogcontroller-*.tgz - $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP:/iofogcontroller - - sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP - "npm i --unsafe-perm -g /iofogcontroller/iofogcontroller-*.tgz; iofog-controller start" - - docker build -t edgeworx/controller-dev:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.dev - - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin - - docker push edgeworx/controller-dev:latest - - docker tag edgeworx/controller-dev:latest edgeworx/controller-dev:$COMMIT - - docker push edgeworx/controller-dev:$COMMIT + - sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP + "iofog-controller stop; rm -f /iofogcontroller/*" + - sshpass -p $DEV_MACHINE_PASSWORD scp -o StrictHostKeyChecking=no iofogcontroller-*.tgz + $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP:/iofogcontroller + - sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP + "npm i --unsafe-perm -g /iofogcontroller/iofogcontroller-*.tgz; iofog-controller start" + - docker build -t iofog/controller-develop:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.dev + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push iofog/controller-develop:latest + - docker tag iofog/controller-develop:latest iofog/controller-develop:$COMMIT + - docker push iofog/controller-develop:$COMMIT - stage: pre_release_deploy before_install: - - sudo apt-get install sshpass + - sudo apt-get install sshpass script: skip before_deploy: - - npm pack - #- npm version prerelease --preid=prerelease -m "upgrade to %s for prerelease package" + - npm pack deploy: skip_cleanup: true provider: npm @@ -70,18 +68,20 @@ jobs: on: all_branches: true after_deploy: - - sshpass -p $PREPROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PREPROD_MACHINE_USERNAME@$PREPROD_MACHINE_IP - "iofog-controller stop; npm i --unsafe-perm -g iofogcontroller@dev; iofog-controller start" - - docker build -t edgeworx/controller:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.dev - - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin - - docker push edgeworx/controller:latest - - docker tag edgeworx/controller:latest edgeworx/controller:$COMMIT - - docker push edgeworx/controller:$COMMIT + - sshpass -p $PREPROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PREPROD_MACHINE_USERNAME@$PREPROD_MACHINE_IP + "iofog-controller stop; npm i --unsafe-perm -g iofogcontroller@dev; iofog-controller start" + - export VERSION=`npm view iofogcontroller version` + - docker build -t iofog/controller:rc --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.rel + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push iofog/controller:rc + - docker tag iofog/controller:rc iofog/controller:rc-$VERSION + - docker push iofog/controller:rc-$VERSION - stage: release_deploy before_install: - - sudo apt-get install sshpass + - sudo apt-get install sshpass script: skip - #- npm version patch -m "upgrade to %s for release" + before_deploy: + - npm pack deploy: skip_cleanup: true provider: npm @@ -91,5 +91,11 @@ jobs: on: branch: master after_deploy: - - sshpass -p $PROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PROD_MACHINE_USERNAME@$PROD_MACHINE_IP - "iofog-controller stop; npm update --unsafe-perm -g iofogcontroller; iofog-controller start" + - sshpass -p $PROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PROD_MACHINE_USERNAME@$PROD_MACHINE_IP + "iofog-controller stop; npm update --unsafe-perm -g iofogcontroller; iofog-controller start" + - export VERSION=`npm view iofogcontroller version` + - docker build -t iofog/controller:latest --build-arg FILENAME=$(ls iofogcontroller-*.tgz) . -f Dockerfile.rel + - echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin + - docker push iofog/controller:latest + - docker tag iofog/controller:latest iofog/controller:$VERSION + - docker push iofog/controller:$VERSION