summaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/testframework.yml
blob: ffe202e73df53c464aaedb23b6651339e035644e (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# Compile the test framework
---
name: DES Testframework - Build
on:
  pull_request:
    paths:
      - '**'
      - '!**/**.md'
      - '!.github/workflows/**'
      - '.github/workflows/testframework.yml'
      - "!.github/CODEOWNERS"
      - '!android/**'
      - 'android/translations-converter/**'
      - '!audits/**'
      - '!build.sh'
      - '!ci/**'
      - 'ci/cargo-ci.sh'
      - '!clippy.toml'
      - '!deny.toml'
      - '!docs/**'
      - '!graphics/**'
      - '!desktop/**'
      - '!ios/**'
      - '!scripts/**'
      - '!.*ignore'
      - '!prepare-release.sh'
      - '!rustfmt.toml'
      - '!.yamllint'
      - '!**/osv-scanner.toml'
  workflow_dispatch:

permissions: {}

jobs:
  prepare-build-test-framework-linux:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Use custom container image if specified
        if: ${{ github.event.inputs.override_container_image != '' }}
        run: echo "inner_container_image=${{ github.event.inputs.override_container_image }}"
          >> $GITHUB_ENV

      - name: Use default container image and resolve digest
        if: ${{ github.event.inputs.override_container_image == '' }}
        run: echo "inner_container_image=$(cat ./building/linux-container-image.txt)" >> $GITHUB_ENV

    outputs:
      container_image: ${{ env.inner_container_image }}

  # Build the test runner + test manager at once.
  build-test-framework-linux:
    needs: prepare-build-test-framework-linux
    runs-on: ubuntu-latest
    container:
      image: ${{ needs.prepare-build-test-framework-linux.outputs.container_image }}

    steps:
      # Fix for HOME path overridden by GH runners when building in containers, see:
      # https://github.com/actions/runner/issues/863
      - name: Fix HOME path
        run: echo "HOME=/root" >> $GITHUB_ENV

      - name: Install system dependencies # Needed to build test-manager, and is not included in the app container.
        run: apt update && apt install -y pkg-config libssl-dev libpcap-dev

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Build test framework
        working-directory: test
        run: ../ci/cargo-ci.sh build

  # Build the test runner + test manager at once.
  build-test-framework-macos:
    runs-on: macos-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Protoc
        uses: arduino/setup-protoc@v3
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Build test runner
        working-directory: test
        run: ../ci/cargo-ci.sh build

  # Build only the test-runner binary on Windows. Windows is not a supported host for test-manager.
  build-test-runner-windows:
    # Cross-compile the test runner for Windows from Linux.
    needs: prepare-build-test-framework-linux
    runs-on: ubuntu-latest
    container:
      image: ${{ needs.prepare-build-test-framework-linux.outputs.container_image }}
    continue-on-error: true
    steps:
      # Fix for HOME path overridden by GH runners when building in containers, see:
      # https://github.com/actions/runner/issues/863
      - name: Fix HOME path
        run: echo "HOME=/root" >> $GITHUB_ENV

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Rust target
        run: rustup target add x86_64-pc-windows-gnu

      - name: Build test runner
        working-directory: test
        run: ../ci/cargo-ci.sh build -p test-runner --target x86_64-pc-windows-gnu