hledger/azure-pipelines.yml

220 lines
8.1 KiB
YAML

# Azure Pipelines CI config
# trigger: none
trigger:
branches:
include:
- master
# - releases/*
batch: true
paths:
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/file-matching-patterns
# include: # file paths which must match to trigger a build
# - docs/*
exclude: # file paths which will not trigger a build
- CHANGES*
- CONTRIBUTING*
- LICENSE*
- Makefile
- README*
- Shake.hs
- bin/*
- cabal-install.sh
- cabal.project
- checks/*
- dev.hs
- doc/*
- examples/*
- hledger-system.mk
- hledger-install/LICENSE*
- hledger-install/README*
- hledger-lib/CHANGES*
- hledger-lib/LICENSE*
- hledger-lib/README*
- hledger-ui/CHANGES*
- hledger-ui/LICENSE*
- hledger-ui/README*
- hledger-web/CHANGES*
- hledger-web/LICENSE*
- hledger-web/README*
- hledger-web/static/*
- hledger-web/templates/*
- hledger/CHANGES*
- hledger/LICENSE*
- hledger/README*
- hledger/bench/*
- hledger/embeddedfiles/*
- shell-completion/*
- site/*
- tools/*
# pr: none
# variables:
# imageName: 'simonmichael:$(build.buildId)'
strategy:
matrix:
windows:
imageName: 'vs2017-win2016'
# mac:
# imageName: 'macos-10.13'
# linux:
# imageName: 'ubuntu-16.04'
pool:
vmImage: $(imageName)
steps:
- script: curl -skL -ostack.zip http://www.stackage.org/stack/windows-x86_64
# displayName: 'download stack'
- script: 7z x stack.zip stack.exe
# displayName: 'unzip stack'
- script: stack --version
# displayName: 'stack --version'
- script: stack build --copy-bins --local-bin-path=.
# displayName: 'stack build'
- script: 7z a -tzip hledger.zip hledger.exe hledger-web.exe
# displayName: 'zip executables'
- task: PublishPipelineArtifact@0
inputs:
artifactName: 'hledger.zip' #$(imageName)
targetPath: 'hledger.zip'
# - script: docker build -f Dockerfile -t $(imageName) .
# displayName: 'docker build'
# hledger-install won't run on ms windows agent:
# Sorry, this installer does not support your operating system: MINGW64_NT-10.0.
# 2019-02-02T20:34:47.0085295Z See http://docs.haskellstack.org/en/stable/install_and_upgrade/
#
# - script: bash hledger-install/hledger-install.sh
# displayName: 'hledger-install.sh'
#
# - bash: hledger-install/hledger-install.sh
# displayName: 'hledger-install.sh'
# # workingDirectory: #
# # failOnStderr: #
# # env: # mapping of environment variables to add
# reference
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema
# https://docs.microsoft.com/en-us/azure/devops/pipelines/build/triggers
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#trigger
# Scheduled builds are not yet supported in YAML syntax. After you create your YAML build pipeline, you can use the designer to specify a scheduled trigger.
# Someone must view a page in your organization regularly for CI and scheduled builds to run.
# The YAML file in my branch is different than the YAML file in my master branch, which one is used?
# When you have configured a CI trigger or a PR trigger, the YAML file that is in the branch being pushed is used.
# For CI triggers, the YAML file that is in the branch you are pushing is evaluated to see if a CI build should be run.
# For PR triggers, the YAML file that is in the source branch of the PR is evaluated to see if a PR build should be run.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#pr-trigger
# A pull request trigger specifies what branches will cause a pull request build to run.
# If left unspecified, pull requests to every branch will trigger a build.
# Note that pr is valid for GitHub, not any other Git provider.
# pr: none
# pr:
# #autoCancel: boolean # indicates whether additional pushes to a PR should cancel in-progress runs for the same PR. Defaults to true
# branches:
# include:
# - master
# - releases/*
# paths:
# include:
# - docs/*
# exclude:
# - docs/README.md
# https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?tabs=schema#job
# You can skip the job syntax if you need only a single job with the standard options.
# matrix and parallel are mutually-exclusive strategies for duplicating a job.
# The matrix strategy enables a job to be dispatched multiple times, with different variable sets.
# matrix: { string1: { string2: string3 } }
# For each string1 in the matrix, a copy of the job will be generated.
# string1 is the copy's name and will be appended to the name of the job.
# For each string2, a variable called string2 with the value string3 will be available to the job.
# The parallel strategy specifies how many duplicates of the job should run.
# This is useful for slicing up a large test matrix. The VS Test task understands how to divide the test load across the number of jobs scheduled.
# parallel: number
# The maxParallel tag restricts the amount of parallelism in both. It defaults to unlimited if not specified.
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema#pool
# pool:
# name: string # name of the pool to run this job in
# demands: string | [ string ] ## see below
# vmImage: string # name of the vm image you want to use, only valid in the Microsoft-hosted pool
# https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema#script
# - script: string # contents of the script to run
# displayName: string # friendly name displayed in the UI
# name: string # identifier for this step (A-Z, a-z, 0-9, and underscore)
# workingDirectory: string # initial working directory for the step
# failOnStderr: boolean # if the script writes to stderr, should that be treated as the step failing?
# condition: string
# continueOnError: boolean # 'true' if future steps should run even if this step fails; defaults to 'false'
# enabled: boolean # whether or not to run this step; defaults to 'true'
# timeoutInMinutes: number
# env: { string: string } # list of environment variables to add
# https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases#artifact-download
# # test and upload my code as an artifact named WebSite
# jobs:
# - job: Build
# pool:
# vmImage: 'ubuntu-16.04'
# steps:
# - script: npm test
# - task: PublishBuildArtifacts@1
# inputs:
# pathtoPublish: '$(System.DefaultWorkingDirectory)'
# artifactName: WebSite
# # download the artifact and deploy it only if the build job succeeded
# - job: Deploy
# pool:
# vmImage: 'ubuntu-16.04'
# steps:
# - checkout: none #skip checking out the default repository resource
# - task: DownloadBuildArtifacts@0
# displayName: 'Download Build Artifacts'
# inputs:
# artifactName: WebSite
# downloadPath: $(System.DefaultWorkingDirectory)
#
# dependsOn: Build
# condition: succeeded()
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks
# https://docs.microsoft.com/en-us/azure/devops/pipelines/artifacts/pipeline-artifacts
# - task: PublishPipelineArtifact@0
# inputs:
# artifactName: 'artifactName'
# targetPath: 'src/MyWebApp/bin/Release/netcoreapp2.0/linux-x64/publish'
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/bash
# - bash: # script path or inline
# workingDirectory: #
# displayName: #
# failOnStderr: #
# env: # mapping of environment variables to add
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/command-line
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/copy-files
# https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/curl-upload-files
# Docker image
# Build a Docker image to deploy, run, or push to a container registry.
# Add steps that use Docker Compose, tag images, push to a registry, run an image, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
# - script: |
# docker login -u $(dockerId) -p $(dockerPw)
# docker push $(dockerId)/$(imageName)