Browse Source

misc: migrate to YAML azure pipelines

NGPixel 4 years ago
parent
commit
752ac61bf5
2 changed files with 159 additions and 1 deletions
  1. 158 0
      azure-pipelines.yml
  2. 1 1
      dev/cypress/ci-setup.sh

+ 158 - 0
azure-pipelines.yml

@@ -0,0 +1,158 @@
+name: 2.5.$(Rev:r)
+
+trigger:
+- dev
+- latest
+
+stages:
+- stage: build
+  displayName: Build stage
+  jobs:
+
+  # -------------------------------
+  # BUILD - LINUX
+  # -------------------------------
+
+  - job: buildLinux
+    displayName: Linux Build
+    timeoutInMinutes: 60
+    cancelTimeoutInMinutes: 1
+    pool:
+      name: Azure Pipelines
+      vmImage: ubuntu-latest
+    steps:
+      - task: CmdLine@2
+        displayName: Disable dev flag
+        inputs:
+          script: |
+            sudo apt-get install jq -y
+            mv package.json pkg-temp.json
+            jq -r '.dev |= false' pkg-temp.json > package.json
+            rm pkg-temp.json
+          workingDirectory: '$(Build.SourcesDirectory)'
+
+      - task: CmdLine@2
+        displayName: Set Package Version
+        inputs:
+          script: |
+            mv package.json pkg-temp.json
+            jq -r '.version |= "$(Build.BuildNumber)"' pkg-temp.json > package.json
+            rm pkg-temp.json
+            cat package.json
+          workingDirectory: '$(Build.SourcesDirectory)'
+
+      - task: Docker@2
+        displayName: Build Docker image
+        inputs:
+          containerRegistry: Docker Hub
+          repository: requarks/wiki
+          Dockerfile: dev/build/Dockerfile
+          buildContext: '$(System.DefaultWorkingDirectory)'
+          tags: |
+            canary
+            canary-$(Build.BuildNumber)
+          addPipelineData: false
+
+      - task: CmdLine@2
+        displayName: Extract compiled files
+        inputs:
+          script: |
+            docker create --name wiki requarks/wiki:canary
+            docker cp wiki:/wiki $(Build.StagingDirectory)
+            docker rm wiki
+            rm $(Build.StagingDirectory)/wiki/config.yml
+            cp $(System.DefaultWorkingDirectory)/config.sample.yml $(Build.StagingDirectory)/wiki/config.sample.yml
+            find $(Build.StagingDirectory)/wiki/ -printf "%P\n" | tar -czf wiki-js.tar.gz --no-recursion -C $(Build.StagingDirectory)/wiki/ -T -
+          workingDirectory: '$(Build.SourcesDirectory)'
+
+      - task: PublishBuildArtifacts@1
+        displayName: Publish Build Artifacts
+        inputs:
+          PathtoPublish: 'wiki-js.tar.gz'
+          ArtifactName: 'drop'
+
+  # -------------------------------
+  # TESTS - CYPRESS E2E TESTS
+  # -------------------------------
+
+  - job: testCypress
+    displayName: Cypress E2E Tests
+    dependsOn: linuxBuild
+    strategy:
+      maxParallel: 5
+      matrix:
+        MariaDB:
+          MATRIXENV: mariadb
+        MySQL:
+          MATRIXENV: mysql
+        MSSQLServer:
+          MATRIXENV: mssql
+        PostgreSQL:
+          MATRIXENV: postgres
+        SQLite:
+          MATRIXENV: sqlite
+    timeoutInMinutes: 30
+    cancelTimeoutInMinutes: 1
+    pool:
+      name: Azure Pipelines
+      vmImage: ubuntu-latest
+    steps:
+    - task: Bash@3
+      displayName: Setup Environment
+      inputs:
+        targetType: filePath
+        filePath: './dev/cypress/ci-setup.sh'
+        workingDirectory: '$(Build.SourcesDirectory)'
+
+    - script: |
+        docker run --name cypress --ipc=host --shm-size 1G -v $BUILD_SOURCESDIRECTORY:/e2e -w /e2e cypress/included:4.9.0 --record --key "$(CYPRESS_KEY)" --headless --group "$MATRIXENV" --ci-build-id "$BUILD_BUILDNUMBER" --config baseUrl=http://172.17.0.1:3000'
+      displayName: 'Run Tests'
+
+  # -------------------------------
+  # BUILD - WINDOWS
+  # -------------------------------
+
+  - job: buildWindows
+    displayName: Windows Build
+    dependsOn: linuxBuild
+    pool:
+      name: Azure Pipelines
+      vmImage: windows-latest
+    timeoutInMinutes: 30
+    cancelTimeoutInMinutes: 1
+    steps:
+    - task: NodeTool@0
+      displayName: 'Use Node 14.x'
+      inputs:
+        versionSpec: 14.x
+
+    - task: 'geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3'
+      displayName: 'Use Yarn 1.x'
+
+    - task: DownloadBuildArtifacts@0
+      displayName: 'Download Build Artifacts'
+      inputs:
+        artifactName: drop
+
+    - script: |
+        mkdir -p $(Build.SourcesDirectory)\win
+        tar -xzf $(System.ArtifactsDirectory)\drop\wiki-js.tar.gz -C $(Build.SourcesDirectory)\win --exclude=node_modules
+      displayName: 'Extract build'
+    - script: 'yarn --production --frozen-lockfile --non-interactive'
+      workingDirectory: win
+      displayName: 'Install dependencies'
+
+    - task: ArchiveFiles@2
+      displayName: 'Archive app'
+      inputs:
+        rootFolderOrFile: '$(System.DefaultWorkingDirectory)\win'
+        includeRootFolder: false
+        archiveType: tar
+        archiveFile: 'wiki-js-windows.tar.gz'
+
+    - task: PublishBuildArtifacts@1
+      displayName: Publish Build Artifacts
+      inputs:
+        PathtoPublish: 'wiki-js-windows.tar.gz'
+        ArtifactName: 'drop-win'
+

+ 1 - 1
dev/cypress/ci-setup.sh

@@ -1,4 +1,4 @@
-case $TEST_MATRIX in
+case $MATRIXENV in
 postgres)
   echo "Using PostgreSQL..."
   docker run -d -p 5432:5432 --name db --network="host" -e "POSTGRES_PASSWORD=Password123!" -e "POSTGRES_USER=wiki" -e "POSTGRES_DB=wiki" postgres:11