|
|
|
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'
|
|
|
|
|