yacreader/azure-pipelines.yml
2019-11-20 15:57:35 +00:00

172 lines
5.8 KiB
YAML

# aka.ms/yaml
trigger:
- master
- develop
jobs:
- job: Initialization
pool:
vmImage: 'vs2017-win2016'
steps:
- template: azure-pipelines-build-number.yml
- job: CodeFormatValidation
dependsOn: Initialization
pool:
vmImage: 'macOS-10.14'
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
if [ "$(git diff $(Build.SourceVersion))" != "" ]; then exit 1; fi
displayName: 'clang-format'
- job: Linux
dependsOn: CodeFormatValidation
pool:
vmImage: 'ubuntu-16.04'
steps:
- script: |
sudo add-apt-repository 'deb http://download.opensuse.org/repositories/home:/selmf/xUbuntu_16.04/ /'
sudo add-apt-repository ppa:kubuntu-ppa/backports
sudo apt-get update
sudo apt-get install -y --allow-unauthenticated qt-default qt5-qmake \
qtbase5-dev qtmultimedia5-dev libpoppler-qt5-dev qtscript5-dev \
libqt5opengl5-dev libglu1-mesa-dev libunarr-dev qtdeclarative5-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:
- group: macos-codesign
pool:
vmImage: 'macOS-10.14'
steps:
- script: |
brew install qt
brew link qt --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'
- 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 '"' )"
SKIP_CODESIGN="$(tr [A-Z] [a-z] <<< "$(System.PullRequest.IsFork)")"
./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.12.6'
qt_spec: 'msvc2017_64'
qt_aqt_spec: 'win64_msvc2017_64'
vc_redist_url: 'https://go.microsoft.com/fwlink/?LinkId=746572'
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.12.6'
qt_spec: 'msvc2017'
qt_aqt_spec: 'win32_msvc2017'
vc_redist_url: 'https://go.microsoft.com/fwlink/?LinkId=746571'
vc_redist_file_name: 'vc_redist.x86.exe'
vc_vars: 'vcvars32.bat'
- job: PublishDevBuilds
dependsOn:
- Linux
- MacOS
- Windows_x86
- Windows_x64
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
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)/
- 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