yacreader/azure-pipelines.yml
Felix Kauselmann 2e0785e3a5 Azure: Update Windows builds to use VS 2019 and Qt 5.15.2
Qt 5.15.2 and VS 2019 support all Windows platforms still supported
by YACReader. Update the build to take advantage of it.
2021-03-14 14:56:17 +01:00

183 lines
7.3 KiB
YAML

# aka.ms/yaml
trigger:
- master
- develop
variables:
is_original_repo: ${{ and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))) }}
is_fork: ${{ not(and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop')))) }}
jobs:
- job: Initialization
pool:
vmImage: 'vs2017-win2016'
steps:
- template: azure-pipelines-build-number.yml
- job: CodeFormatValidation
dependsOn: Initialization
pool:
vmImage: 'macOS-10.15'
steps:
- script: |
brew install clang-format
displayName: 'Install dependencies'
- script: |
cd $(Build.SourcesDirectory)
find . \( -name '*.h' -or -name '*.cpp' -or -name '*.c' -or -name '*.mm' -or -name '*.m' \) -print0 | xargs -0 clang-format -style=file -i
git diff $(Build.SourceVersion)
if [ "$(git diff $(Build.SourceVersion))" != "" ]; then exit 1; fi
displayName: 'clang-format'
- job: Linux
dependsOn: CodeFormatValidation
pool:
vmImage: 'ubuntu-18.04'
steps:
- script: |
sudo add-apt-repository 'deb http://download.opensuse.org/repositories/home:/selmf/xUbuntu_18.04/ /'
sudo apt-get update --allow-insecure-repositories
sudo apt-get install -y --allow-unauthenticated qt5-default qt5-qmake \
qtbase5-dev qtmultimedia5-dev libpoppler-qt5-dev \
libqt5opengl5-dev libunarr-dev qtdeclarative5-dev libqt5svg5-dev
displayName: 'Install dependencies'
- script: |
cd $(Build.SourcesDirectory)
VERSION="$(cat common/yacreader_global.h | grep '#define VERSION "' | tr -d '#define VERSION' | tr -d '"' )"
./mktarball.sh $VERSION.$(Build.BuildNumber)
mkdir tarball
cp yacreader-*-src.tar.xz* tarball\
displayName: 'Create tarball'
- script: |
export DEFINES_VAR=DEFINES+\=\"BUILD_NUMBER=\\\\\\\"$(Build.BuildNumber)\\\\\\\"\"
qmake CONFIG+="unarr" $DEFINES_VAR
make
displayName: 'Build'
- task: CopyFiles@2
inputs:
sourceFolder: $(Build.SourcesDirectory)/tarball
contents: '*'
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishPipelineArtifact@1
inputs:
path: $(Build.ArtifactStagingDirectory)
artifactName: src $(Build.BuildNumber) tarball
- job: MacOS
dependsOn: CodeFormatValidation
variables:
- ${{ if and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))) }}:
- group: macos-codesign
pool:
vmImage: 'macOS-10.15'
steps:
- script: |
brew install qt@5
brew link qt@5 --force
brew install create-dmg
brew install node
brew link --overwrite node
npm install -g appdmg
wget "https://sourceforge.net/projects/p7zip/files/p7zip/16.02/p7zip_16.02_src_all.tar.bz2" -P $(Build.SourcesDirectory)/compressed_archive
tar xjf $(Build.SourcesDirectory)/compressed_archive/p7zip_16.02_src_all.tar.bz2 -C $(Build.SourcesDirectory)/compressed_archive
mv $(Build.SourcesDirectory)/compressed_archive/p7zip_16.02 $(Build.SourcesDirectory)/compressed_archive/libp7zip
displayName: 'Install dependencies'
- ${{ if and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))) }}:
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'developerID_application.p12'
certPwd: $(P12Password)
- script: |
cd $(Build.SourcesDirectory)
VERSION="$(cat common/yacreader_global.h | grep '#define VERSION "' | tr -d '#define VERSION' | tr -d '"' )"
echo "Trying to know if we are in a forked repo: $IS_FORK"
SKIP_CODESIGN="$(tr [A-Z] [a-z] <<< "$IS_FORK")"
./compileOSX.sh $VERSION $(Build.BuildNumber) $SKIP_CODESIGN
displayName: 'Build'
- task: CopyFiles@2
inputs:
contents: '*.dmg'
targetFolder: $(Build.ArtifactStagingDirectory)
- task: PublishPipelineArtifact@1
inputs:
path: $(Build.ArtifactStagingDirectory)
artifactName: Macos $(Build.BuildNumber) dmg
- template: azure-pipelines-windows-template.yml
parameters:
name: Windows_x64
architecture: 'x64'
qt_version: '5.15.2'
qt_spec: 'msvc2019_64'
qt_aqt_spec: 'win64_msvc2019_64'
vc_redist_url: 'https://aka.ms/vs/16/release/vc_redist.x64.exe'
vc_redist_file_name: 'vc_redist.x64.exe'
vc_vars: 'vcvars64.bat'
- template: azure-pipelines-windows-template.yml
parameters:
name: Windows_x86
architecture: 'x86'
qt_version: '5.15.2'
qt_spec: 'msvc2019'
qt_aqt_spec: 'win32_msvc2019'
vc_redist_url: 'https://aka.ms/vs/16/release/vc_redist.x86.exe'
vc_redist_file_name: 'vc_redist.x86.exe'
vc_vars: 'vcvars32.bat'
- ${{ if and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))) }}:
- job: PublishDevBuilds
dependsOn:
- Linux
- MacOS
- Windows_x86
- Windows_x64
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'), true)
variables:
- group: bintray
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
targetPath: $(Build.SourcesDirectory)/dev_bin
- script: |
ls -lah $(Build.SourcesDirectory)/dev_bin/**/*.*
- task: cURLUploader@2
inputs:
files: '$(Build.SourcesDirectory)/dev_bin/**/*.*'
authType: 'userAndPass'
username: $(username)
password: $(api-key)
options: -H "X-Bintray-Publish:1"
remotePath: ''
url: https://api.bintray.com/content/luisangelsm/YACReader/DevBuilds/$(Build.BuildNumber)/
- ${{ if and(eq(variables['System.TeamFoundationCollectionUri'], 'https://dev.azure.com/luisangelsm/'), or(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))) }}:
- job: Release
dependsOn:
- Linux
- MacOS
- Windows_x86
- Windows_x64
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
variables:
- group: github-releases
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
targetPath: $(Build.ArtifactStagingDirectory)
- script: |
find $(Build.ArtifactStagingDirectory) -name '*.*' -exec cp {} $(Build.ArtifactStagingDirectory) \;
displayName: 'flatten artifact staging directory'
- script: |
VERSION="$(cat common/yacreader_global.h | grep '#define VERSION "' | tr -d '#define VERSION' | tr -d '"' )"
echo "##vso[task.setvariable variable=VERSION]$VERSION"
displayName: 'Version'
- task: GitHubRelease@0
inputs:
gitHubConnection: yacreader-releases
title: $(VERSION)
tagSource: 'manual'
tag: $(VERSION)
addChangeLog: false