name: 2.6.$(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: buildLinux 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: buildLinux 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'