diff --git a/.azure/azure-pipelines.yml b/.azure/azure-pipelines.yml index 4025994e06..ae9e0bc019 100644 --- a/.azure/azure-pipelines.yml +++ b/.azure/azure-pipelines.yml @@ -12,83 +12,100 @@ pr: - develop variables: npm_config_cache: $(Pipeline.Workspace)/.npm -jobs: - - job: Lint - displayName: Lint - pool: - vmImage: "Ubuntu 16.04" - strategy: - matrix: - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: $(node_version) - displayName: Set Node Version - - - task: CacheBeta@0 - inputs: - key: $(Build.SourcesDirectory)/package-lock.json - path: $(npm_config_cache) - displayName: Cache npm + node_version: 10.x - - script: npx npm ci - displayName: Install Dependencies +stages: +- stage: Daffodil_CI + displayName: Daffodil CI + jobs: + - job: Lint + displayName: Lint + pool: + vmImage: "Ubuntu 16.04" + strategy: + matrix: + node_10_x: + node_version: 10.x + steps: + - template: ./templates/setup-node.yml - - script: npx lerna run lint - displayName: Lint + - script: npx lerna run lint + displayName: Lint - - job: Build_And_Test - displayName: Build And Test - pool: - vmImage: "Ubuntu 16.04" - strategy: - matrix: - node_10_x: - node_version: 10.x - steps: - - task: NodeTool@0 - inputs: - versionSpec: $(node_version) - displayName: Set Node Version + - job: Build_And_Test + displayName: Build And Test + pool: + vmImage: "Ubuntu 16.04" + strategy: + matrix: + node_10_x: + node_version: 10.x + steps: + - template: ./templates/setup-node.yml - - task: CacheBeta@0 - inputs: - key: $(Build.SourcesDirectory)/package-lock.json - path: $(npm_config_cache) - displayName: Cache npm + - script: npx lerna run build && npx lerna run test + displayName: Build & Test - - script: npm ci - displayName: Install Dependencies + - template: ./templates/codeclimate.yml - - script: npx lerna run build && npx lerna run test - displayName: Build & Test + - script: npx lerna run reportcoverage + displayName: Generate Coverage Report - - template: ./templates/codeclimate.yml + - script: | + ./cc-test-reporter sum-coverage coverage/cc.*.json + ./cc-test-reporter -r $token upload-coverage + displayName: Report Code Climate + env: + token: $(CODECLIMATE_TOKEN_DAFFODIL) - - script: npx lerna run reportcoverage - displayName: Generate Coverage Report + - task: CopyFiles@2 + displayName: Prepare Artifact Staging Directory + inputs: + sourceFolder: dist + contents: '**/*' + targetFolder: $(Build.ArtifactStagingDirectory) - - script: | - ./cc-test-reporter sum-coverage coverage/cc.*.json - ./cc-test-reporter -r $token upload-coverage - displayName: Report Code Climate - env: - token: $(CODECLIMATE_TOKEN_DAFFODIL) + - task: PublishBuildArtifacts@1 + displayName: "Publish Daff.io Serverless Artifact" + inputs: + pathtoPublish: '$(Build.ArtifactStagingDirectory)/apps/daffio' + artifactName: 'daffio-serverless' + parallel: true + parallelCount: 8 +- stage: preview + displayName: Preview Environment + jobs: + - job: deploy_daffio_preview + displayName: Deploy Daff.io + condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest')) + variables: + - group: daffio-now + - group: daffio-preview-now + steps: + - template: ./templates/setup-node.yml + - template: ./templates/now-deployment.yml + parameters: + artifactName: daffio-serverless + token: $(NOW_DEPLOYMENT_TOKEN) + nowOrg: $(NOW_ORG) + nowProjectId: $(DAFFIO_PREVIEW_NOW_PROJECTID) +- stage: next + displayName: Daff.io Next Environment + jobs: + - job: deploy_next + displayName: Deploy + condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/develop')) + variables: + - group: daffio-now + - group: daffio-next-now + steps: + - template: ./templates/setup-node.yml + - template: ./templates/now-deployment.yml + parameters: + artifactName: daffio-serverless + token: $(NOW_DEPLOYMENT_TOKEN) + nowOrg: $(NOW_ORG) + nowProjectId: $(DAFFIO_NEXT_NOW_PROJECTID) - - task: CopyFiles@2 - displayName: Prepare Artifact Staging Directory - inputs: - sourceFolder: dist - contents: '**/*' - targetFolder: $(Build.ArtifactStagingDirectory) - - task: PublishBuildArtifacts@1 - displayName: "Publish Daff.io Serverless Artifact" - inputs: - pathtoPublish: '$(Build.ArtifactStagingDirectory)/apps/daffio' - artifactName: 'daffio-serverless' - parallel: true - parallelCount: 8 diff --git a/.azure/templates/now-deployment.yml b/.azure/templates/now-deployment.yml new file mode 100644 index 0000000000..fa658e9922 --- /dev/null +++ b/.azure/templates/now-deployment.yml @@ -0,0 +1,27 @@ +# File: simple-param.yml +parameters: +- name: 'artifactName' + type: string + default: false +- name: 'token' + type: string + default: false +- name: 'nowOrg' + type: string + default: false +- name: 'nowProjectId' + type: string + default: false + +steps: + - task: DownloadBuildArtifacts@0 + inputs: + artifactName: '${{ parameters.artifactName }}' + + - script: NOW_ORG_ID=$org NOW_PROJECT_ID=$projectId npx now --token=$token + workingDirectory: '$(System.ArtifactsDirectory)/${{ parameters.artifactName }}' + displayName: 'Deploy ${{ parameters.artifactName }} to Now' + env: + token: ${{ parameters.token }} + org: ${{ parameters.nowOrg }} + projectId: ${{ parameters.nowProjectId }} \ No newline at end of file diff --git a/.azure/templates/setup-node.yml b/.azure/templates/setup-node.yml new file mode 100644 index 0000000000..e5db02b770 --- /dev/null +++ b/.azure/templates/setup-node.yml @@ -0,0 +1,14 @@ +steps: + - task: NodeTool@0 + inputs: + versionSpec: $(node_version) + displayName: Set Node Version + + - task: Cache@2 + inputs: + key: $(Build.SourcesDirectory)/package-lock.json + path: $(npm_config_cache) + displayName: Cache npm + + - script: npx npm ci + displayName: Install Dependencies \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 78081fc4f1..645b967921 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8411,7 +8411,7 @@ }, "engine.io-client": { "version": "3.2.1", - "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", "dev": true, "requires": { @@ -14656,6 +14656,12 @@ "sort-keys": "^1.0.0" } }, + "now": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/now/-/now-17.1.1.tgz", + "integrity": "sha512-Hmh8eMSt4FxS1YBwaLrdJuzEVm6ZtS4JCY0AZE+JTnTtDGHVaQMUI85FaPvasSIhKLa+7xf6v7lmTgM39VW/8w==", + "dev": true + }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", @@ -17587,7 +17593,7 @@ "dependencies": { "jsesc": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "dev": true } @@ -19789,7 +19795,7 @@ }, "socket.io-parser": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", "dev": true, "requires": { @@ -20182,19 +20188,19 @@ "dev": true, "requires": { "chalk": "2.4.2", - "conventional-changelog": "3.1.10", - "conventional-changelog-config-spec": "2.0.0", - "conventional-recommended-bump": "6.0.0", + "conventional-changelog": "3.1.15", + "conventional-changelog-config-spec": "2.1.0", + "conventional-recommended-bump": "6.0.5", "detect-indent": "6.0.0", "detect-newline": "3.0.0", "dotgitignore": "2.1.0", - "figures": "3.0.0", + "figures": "3.1.0", "find-up": "4.1.0", "fs-access": "1.0.1", - "git-semver-tags": "3.0.0", + "git-semver-tags": "3.0.1", "semver": "6.3.0", - "stringify-package": "1.0.0", - "yargs": "14.0.0" + "stringify-package": "1.0.1", + "yargs": "14.2.2" }, "dependencies": { "ansi-regex": { diff --git a/package.json b/package.json index e5323ca3a6..0512312bdd 100644 --- a/package.json +++ b/package.json @@ -81,6 +81,7 @@ "karma-jasmine-html-reporter": "^1.4.0", "lerna": "^3.14.1", "ng-packagr": "^5.2.0", + "now": "^17.1.1", "plugin-error": "^1.0.1", "prettier": "1.18.2", "protractor": "^5.4.2",