You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wiki/azure-pipelines.yml

159 lines
4.6 KiB

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'