summaryrefslogtreecommitdiff
path: root/Meta/Azure/Serenity.yml
blob: 42a406fe0f8f37998915ae417aef240d9334f3dc (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
parameters:
  arch: 'i686'

jobs:
  - job: 'Serenity_Clang_${{ parameters.arch }}'
    timeoutInMinutes: 0 # Setting to 0 means the maximum allowed timeout is used.

    variables:
    - name: CCACHE_DIR
      value: $(Build.SourcesDirectory)/.ccache

    pool:
      vmImage: ubuntu-20.04

    steps:
    - template: Setup.yml
      parameters:
        os: 'Serenity'

    - template: Caches.yml
      parameters:
        arch: '${{ parameters.arch }}'
        toolchain: 'clang'
        build_directory: 'Build'

    - script: ./Toolchain/BuildClang.sh
      displayName: Build Toolchain
      env:
        TRY_USE_LOCAL_TOOLCHAIN: 'y'
        ARCH: '${{ parameters.arch }}'

    - script: |
        mkdir -p Build
      displayName: 'Create Build Directory'

    - script: |
        cmake -GNinja \
          -DSERENITY_ARCH=${{ parameters.arch }} \
          -DUSE_CLANG_TOOLCHAIN=ON \
          -DENABLE_UNDEFINED_SANITIZER=ON \
          -DENABLE_PCI_IDS_DOWNLOAD=OFF \
          -DENABLE_USB_IDS_DOWNLOAD=OFF \
          -DCMAKE_C_COMPILER=gcc-10 \
          -DCMAKE_CXX_COMPILER=g++-10 \
          ..
      displayName: 'Create Build Environment'
      workingDirectory: $(Build.SourcesDirectory)/Build

    - script: |
        cmake --build .
      displayName: 'Build'
      workingDirectory: $(Build.SourcesDirectory)/Build

    - script: |
        ninja install && ninja image
      displayName: 'Create RootFS'
      workingDirectory: $(Build.SourcesDirectory)/Build

    - script: |
        ninja run

        echo "##[group]Verify Output File"
        mkdir fsmount
        sudo mount -t ext2 -o loop,rw _disk_image fsmount

        echo "Results: "
        sudo cat fsmount/home/anon/test-results.log
        echo "##[endgroup]"

        if ! sudo grep -q "Failed: 0" fsmount/home/anon/test-results.log
        then
          echo "##[error]:^( Tests failed, failing job"
          exit 1
        fi
      displayName: 'Test'
      workingDirectory: $(Build.SourcesDirectory)/Build
      timeoutInMinutes: 60
      env:
        SERENITY_QEMU_CPU: 'max,vmx=off'
        SERENITY_KERNEL_CMDLINE: 'boot_mode=self-test'
        SERENITY_RUN: 'ci'

    - script: |
        [ ! -e debug.log ] || cat debug.log
      displayName: 'Print Target Logs'
      workingDirectory: $(Build.SourcesDirectory)/Build
      condition: failed()

    - script: |
        ccache -s
      displayName: 'Cache Stats'