diff --git a/.travis.yml b/.travis.yml index 50075c160..bba7c5bcf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,34 +43,20 @@ jobs: branch: develop after_deploy: - | - export FILENAME=`ls iofogcontroller-*.tgz` && sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP \ - "iofog-controller stop; rm -f /iofogcontroller*" && + "iofog-controller stop; rm -R /iofogcontroller*" + + - | + export FILENAME=`ls iofogcontroller-*.tgz` && sshpass -p $DEV_MACHINE_PASSWORD scp -o StrictHostKeyChecking=no $FILENAME \ $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP:/$FILENAME && sshpass -p $DEV_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $DEV_MACHINE_USERNAME@$DEV_MACHINE_IP \ "npm i --unsafe-perm -g /${FILENAME}; iofog-controller start" && - sshpass -p $JRC_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $JRC_MACHINE_USERNAME@$JRC_MACHINE_IP \ - "iofog-controller stop; rm -f /iofogcontroller*" && - sshpass -p $JRC_MACHINE_PASSWORD scp -o StrictHostKeyChecking=no $FILENAME \ - $JRC_MACHINE_USERNAME@$JRC_MACHINE_IP:/$FILENAME && - sshpass -p $JRC_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $JRC_MACHINE_USERNAME@$JRC_MACHINE_IP \ - "npm i --unsafe-perm -g /${FILENAME}; iofog-controller start" && - sshpass -p $JRC_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $JRC_MACHINE_USERNAME@$JRC_MACHINE_IP \ - "iofog-controller start; iofog-controller user add -f John -l Doe -e user@domain.com -p ${JRC_MACHINE_PASSWORD}" && - sshpass -p $ATTINAD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $ATTINAD_MACHINE_USERNAME@$ATTINAD_MACHINE_IP \ - "iofog-controller stop; rm -f /iofogcontroller*" && - sshpass -p $ATTINAD_MACHINE_PASSWORD scp -o StrictHostKeyChecking=no $FILENAME \ - $ATTINAD_MACHINE_USERNAME@$ATTINAD_MACHINE_IP:/$FILENAME && - sshpass -p $ATTINAD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $ATTINAD_MACHINE_USERNAME@$ATTINAD_MACHINE_IP \ - "npm i --unsafe-perm -g /${FILENAME}; iofog-controller start" && - sshpass -p $ATTINAD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $ATTINAD_MACHINE_USERNAME@$ATTINAD_MACHINE_IP \ - "iofog-controller start; iofog-controller user add -f John -l Doe -e user@domain.com -p ${ATTINAD_MACHINE_PASSWORD}" && docker build -t iofog/controller-develop:latest --build-arg FILENAME=$FILENAME . -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 + docker push iofog/controller-develop:$COMMIT || travis_terminate 1 - stage: pre_release_deploy before_install: - sudo apt-get install sshpass @@ -86,8 +72,8 @@ 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" - | - sshpass -p $PREPROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PREPROD_MACHINE_USERNAME@$PREPROD_MACHINE_IP "iofog-controller stop" && sshpass -p $PREPROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PREPROD_MACHINE_USERNAME@$PREPROD_MACHINE_IP \ "npm i --unsafe-perm -g iofogcontroller@dev; iofog-controller start" && export VERSION=`npm view iofogcontroller version` && @@ -95,7 +81,7 @@ jobs: 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 + docker push iofog/controller:rc-$VERSION || travis_terminate 1 - stage: release_deploy before_install: - sudo apt-get install sshpass @@ -111,8 +97,8 @@ jobs: on: branch: master after_deploy: + - sshpass -p $PROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PROD_MACHINE_USERNAME@$PROD_MACHINE_IP "iofog-controller stop" - | - sshpass -p $PROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PROD_MACHINE_USERNAME@$PROD_MACHINE_IP "iofog-controller stop" && sshpass -p $PROD_MACHINE_PASSWORD ssh -o StrictHostKeyChecking=no $PROD_MACHINE_USERNAME@$PROD_MACHINE_IP \ "npm update --unsafe-perm -g iofogcontroller; iofog-controller start" && export VERSION=`npm view iofogcontroller version` && @@ -120,4 +106,4 @@ jobs: 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 + docker push iofog/controller:$VERSION || travis_terminate 1 diff --git a/Dockerfile.dev b/Dockerfile.dev index 7ca90a17d..d88df7ef7 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM iofog/node:alpine +FROM iofog/node-alpine-x86:8.16.0 ARG FILENAME ENV NODE_ENV=development @@ -6,8 +6,8 @@ ENV NODE_ENV=development COPY ${FILENAME} /tmp RUN npm i --unsafe-perm -g /tmp/${FILENAME} && \ - rm /tmp/${FILENAME} && \ + rm -rf /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 +CMD [ "sh", "/start.sh" ] diff --git a/Dockerfile.rel b/Dockerfile.rel index 29a102d97..6d35e464b 100644 --- a/Dockerfile.rel +++ b/Dockerfile.rel @@ -1,11 +1,11 @@ -FROM iofog/node:alpine +FROM iofog/node-alpine-x86:8.16.0 ARG FILENAME COPY ${FILENAME} /tmp RUN npm i --unsafe-perm -g /tmp/${FILENAME} && \ - rm /tmp/${FILENAME} && \ + rm -rf /tmp/${FILENAME} && \ echo "iofog-controller start && tail -f /dev/null" >> /start.sh -CMD [ "sh", "/start.sh" ] \ No newline at end of file +CMD [ "sh", "/start.sh" ] diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 000000000..f4ef93b9f --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,130 @@ +trigger: + tags: + include: + - v.* + branches: + include: + - develop + - master + paths: + exclude: + - README.md + +pr: + - master + +pool: + vmImage: 'Ubuntu-16.04' + +variables: + repository: 'focal-freedom-236620/controller' + type: $(Build.SourceBranchName) + commit: $(Build.SourceVersion) + controller_tar: + +steps: + - task: NodeTool@0 + inputs: + versionSpec: '8.x' + displayName: 'Install Node.js' + + - script: | + npm install + npm run build + displayName: 'npm install and build' + + - script: | + npm test + displayName: 'unit tests' + + - script: | + echo "npm test" + displayName: 'integration tests' + + - script: | + npm pack + pwd + ls + displayName: 'npm pack' + + - bash: | + echo checking pack file exists.. + tar=$(ls iofogcontroller-*.tgz) + echo $tar + echo "##vso[task.setvariable variable=controller_tar]$tar" + displayName: 'controller_tar check' + name: setcontrollertarvarStep + + - task: Docker@2 + displayName: 'build dev docker' + inputs: + containerRegistry: 'Edgeworx GCP' + repository: $(repository) + command: 'build' + Dockerfile: 'Dockerfile.dev' + arguments: --build-arg FILENAME=$(controller_tar) + tags: | + dev-$(commit) + dev-$(type) + dev-latest + + - task: Docker@2 + displayName: 'push dev docker' + inputs: + containerRegistry: 'Edgeworx GCP' + repository: $(repository) + command: 'push' + Dockerfile: 'Dockerfile.dev' + tags: | + dev-$(commit) + dev-$(type) + dev-latest + + - task: Docker@2 + displayName: 'build rel docker' + inputs: + containerRegistry: 'Edgeworx GCP' + repository: $(repository) + command: 'build' + Dockerfile: 'Dockerfile.rel' + arguments: --build-arg FILENAME=$(controller_tar) + tags: | + rel-$(commit) + rel-$(type) + rel-latest + + - task: Docker@2 + displayName: 'push rel docker' + inputs: + containerRegistry: 'Edgeworx GCP' + repository: $(repository) + command: 'push' + Dockerfile: 'Dockerfile.rel' + tags: | + rel-$(commit) + rel-$(type) + rel-latest + + - script: | + echo "npm test" + displayName: 'api tests' + + - task: CopyFiles@2 + inputs: + SourceFolder: $(System.DefaultWorkingDirectory) + TargetFolder: $(Build.ArtifactStagingDirectory) + Contents: | + *.tgz + OverWrite: true + + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)' + ArtifactName: 'controller' + +# - task: Npm@1 +# displayName: 'publish npm package' +# inputs: +# command: 'publish' +# publishRegistry: 'useFeed' +# publishFeed: 'edgeworx' diff --git a/package.json b/package.json index b1cec6abd..602a85e74 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "iofogcontroller", - "version": "1.0.37", + "version": "1.0.38", "description": "ioFog Controller project for Eclipse IoFog @ iofog.org \\nCopyright (c) 2018 Edgeworx, Inc.", "main": "./src/main.js", "author": "Saeid Baghbidi",