summaryrefslogtreecommitdiffstats
path: root/.github/workflows/rpm.yml
blob: d3be4063cfc3cdbfa231ba785b865cc110d7bef4 (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: .rpm

on:
  push:
    branches:
      - master
      - 'support/*'
  pull_request: {}

jobs:
  rpm:
    name: .rpm (${{ matrix.distro.name }}, ${{ matrix.distro.release }})

    strategy:
      fail-fast: false
      matrix:
        distro:
          - name: rhel
            release: 8
            subscription: true
          - name: rhel
            release: 7
            subscription: true
          - name: centos
            release: 7
            subscription: false
          - name: amazon-linux
            release: al2:x86_64
            subscription: true
          - name: fedora
            release: 36
            subscription: false
          - name: fedora
            release: 35
            subscription: false
          - name: sles
            release: '15.4'
            subscription: true
          - name: sles
            release: '15.3'
            subscription: true
          - name: sles
            release: '12.5'
            subscription: true
          - name: opensuse
            release: '15.4'
            subscription: false
          - name: opensuse
            release: '15.3'
            subscription: false

    runs-on: ubuntu-latest

    steps:
      - name: Cancel previous jobs for the same PR
        if: "github.event_name == 'pull_request'"
        uses: styfle/cancel-workflow-action@89f242ee29e10c53a841bfe71cc0ce7b2f065abc
        with:
          workflow_id: deb.yml,docker.yml,raspbian.yml,rpm.yml,windows.yml
          access_token: ${{ secrets.GITHUB_TOKEN }}

      - name: Vars
        id: vars
        env:
          GITLAB_RO_TOKEN: '${{ secrets.GITLAB_RO_TOKEN }}'
        run: |
          if [ ${{ matrix.distro.subscription }} = true ]; then
            if [ "$(tr -d '\n' <<<"$GITLAB_RO_TOKEN" |wc -c)" -eq 0 ]; then
              echo '::set-output name=CAN_BUILD::false'
              echo '::set-output name=NEED_LOGIN::false'
            else
              echo '::set-output name=CAN_BUILD::true'
              echo '::set-output name=NEED_LOGIN::true'
            fi
          else
            echo '::set-output name=CAN_BUILD::true'
            echo '::set-output name=NEED_LOGIN::false'
          fi

      - name: Checkout HEAD
        if: "steps.vars.outputs.CAN_BUILD == 'true'"
        uses: actions/checkout@v1

      - name: Login
        if: "steps.vars.outputs.NEED_LOGIN == 'true'"
        env:
          GITLAB_RO_TOKEN: '${{ secrets.GITLAB_RO_TOKEN }}'
        run: |
          docker login registry.icinga.com -u github-actions --password-stdin <<<"$GITLAB_RO_TOKEN"

      - name: rpm-icinga2
        if: "steps.vars.outputs.CAN_BUILD == 'true' && !matrix.distro.subscription"
        run: |
          set -exo pipefail
          git clone https://git.icinga.com/packaging/rpm-icinga2.git
          chmod o+w rpm-icinga2

      - name: subscription-rpm-icinga2
        if: "steps.vars.outputs.CAN_BUILD == 'true' && matrix.distro.subscription"
        env:
          GITLAB_RO_TOKEN: '${{ secrets.GITLAB_RO_TOKEN }}'
        run: |
          set -exo pipefail
          git config --global credential.helper store
          cat <<EOF >~/.git-credentials
          https://github-actions:${GITLAB_RO_TOKEN}@git.icinga.com
          EOF
          git clone https://git.icinga.com/packaging/subscription-rpm-icinga2.git rpm-icinga2
          chmod o+w rpm-icinga2

      - name: Restore/backup ccache
        if: "steps.vars.outputs.CAN_BUILD == 'true'"
        id: ccache
        uses: actions/cache@v1
        with:
          path: rpm-icinga2/ccache
          key: |-
            ${{ matrix.distro.name }}/${{ matrix.distro.release }}-ccache-${{ hashFiles('rpm-icinga2/ccache') }}

      - name: Binary
        if: "steps.vars.outputs.CAN_BUILD == 'true'"
        run: |
          set -exo pipefail
          git checkout -B master
          if [ -e rpm-icinga2/ccache ]; then
            chmod -R o+w rpm-icinga2/ccache
          fi
          docker run --rm \
            -v "$(pwd)/rpm-icinga2:/rpm-icinga2" \
            -v "$(pwd)/.git:/icinga2.git:ro" \
            -w /rpm-icinga2 \
            -e ICINGA_BUILD_PROJECT=icinga2 \
            -e ICINGA_BUILD_TYPE=snapshot \
            -e UPSTREAM_GIT_URL=file:///icinga2.git \
            registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.release }} \
            icinga-build-package

      - name: Test
        if: "steps.vars.outputs.CAN_BUILD == 'true'"
        run: |
          set -exo pipefail
          docker run --rm \
            -v "$(pwd)/rpm-icinga2:/rpm-icinga2" \
            -w /rpm-icinga2 \
            -e ICINGA_BUILD_PROJECT=icinga2 \
            -e ICINGA_BUILD_TYPE=snapshot \
            registry.icinga.com/build-docker/${{ matrix.distro.name }}/${{ matrix.distro.release }} \
            icinga-build-test