summaryrefslogtreecommitdiff
path: root/azure-pipelines/docker.yml
blob: 0e1988c8a96b5a42a1fcab20323070a2f56634cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# These are the steps used in a container-based build in VSTS.
steps:
- ${{ if eq(parameters.qemu, 'true') }}:
  - script: docker run --rm --privileged multiarch/qemu-user-static:register --reset
    displayName: 'Register Docker QEMU'

- task: cache@2
  displayName: Cache Docker layers
  inputs:
    key: docker
    path: /tmp/dockercache
- script: |
    if [ -f /tmp/dockercache/${{parameters.docker.image}}.tar ]; then docker load < /tmp/dockercache/${{parameters.docker.image}}.tar; fi
  displayName: 'Load Docker cache'
- script: |
    cd $(Build.SourcesDirectory)/azure-pipelines/docker
    docker build -t libgit2/${{parameters.docker.image}} --build-arg BASE=${{parameters.docker.base}} -f ${{parameters.docker.image}} .
    if [ ! -d /tmp/dockercache ]; then mkdir /tmp/dockercache; fi
    docker save libgit2/${{parameters.docker.image}} $(docker history -q libgit2/${{parameters.docker.image}} | grep -v '<missing>') > /tmp/dockercache/${{parameters.docker.image}}.tar
  displayName: 'Build Docker image'
- task: docker@0
  displayName: Build
  inputs:
    action: 'Run an image'
    imageName: libgit2/${{ parameters.docker.image }}
    volumes: |
     $(Build.SourcesDirectory):/home/libgit2/source
     $(Build.BinariesDirectory):/home/libgit2/build
    envVars: ${{ parameters.environmentVariables }}
    workDir: '/home/libgit2/build'
    containerCommand: '/home/libgit2/source/azure-pipelines/build.sh'
    detached: false
- task: docker@0
  displayName: Test
  inputs:
    action: 'Run an image'
    imageName: libgit2/${{ parameters.docker.image }}
    volumes: |
     $(Build.SourcesDirectory):/home/libgit2/source
     $(Build.BinariesDirectory):/home/libgit2/build
    envVars: ${{ parameters.environmentVariables }}
    workDir: '/home/libgit2/build'
    containerCommand: '/home/libgit2/source/azure-pipelines/test.sh'
    detached: false
- task: publishtestresults@2
  displayName: Publish Test Results
  condition: succeededOrFailed()
  inputs:
    testResultsFiles: 'results_*.xml'
    searchFolder: '$(Build.BinariesDirectory)'
    mergeTestResults: true