(maint) Update github actions
[puppet-modules/puppetlabs-apt.git] / .github / workflows / pr_test.yml
1 name: "PR Testing"
2
3 on: [pull_request]
4
5 env:
6   HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
7   HONEYCOMB_DATASET: litmus tests
8
9 jobs:
10   setup_matrix:
11     name: "Setup Test Matrix"
12     runs-on: ubuntu-20.04
13     outputs:
14       matrix: ${{ steps.get-matrix.outputs.matrix }}
15
16     steps:
17     - name: "Honeycomb: Start recording"
18       uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
19       with:
20         apikey: ${{ env.HONEYCOMB_WRITEKEY }}
21         dataset: ${{ env.HONEYCOMB_DATASET }}
22         job-status: ${{ job.status }}
23
24     - name: "Honeycomb: Start first step"
25       run: |
26         echo STEP_ID=setup-environment >> $GITHUB_ENV
27         echo STEP_START=$(date +%s) >> $GITHUB_ENV
28
29     - name: Checkout Source
30       uses: actions/checkout@v2
31       if: ${{ github.repository_owner == 'puppetlabs' }}
32
33     - name: Activate Ruby 2.7
34       uses: ruby/setup-ruby@v1
35       if: ${{ github.repository_owner == 'puppetlabs' }}
36       with:
37         ruby-version: "2.7"
38         bundler-cache: true
39
40     - name: Print bundle environment
41       if: ${{ github.repository_owner == 'puppetlabs' }}
42       run: |
43         echo ::group::bundler environment
44         buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
45         echo ::endgroup::
46
47     - name: "Honeycomb: Record Setup Environment time"
48       if: ${{ github.repository_owner == 'puppetlabs' }}
49       run: |
50         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
51         echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV
52         echo STEP_START=$(date +%s) >> $GITHUB_ENV
53
54     - name: Setup Acceptance Test Matrix
55       id: get-matrix
56       run: |
57         if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then
58           buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata
59         else
60           echo  "::set-output name=matrix::{}"
61         fi
62
63     - name: "Honeycomb: Record Setup Test Matrix time"
64       if: ${{ always() }}
65       run: |
66         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix'
67
68   Acceptance:
69     needs:
70       - setup_matrix
71     if: ${{ needs.setup_matrix.outputs.matrix != '{}' }}
72
73     runs-on: ubuntu-20.04
74     strategy:
75       fail-fast: false
76       matrix: ${{fromJson(needs.setup_matrix.outputs.matrix)}}
77
78     env:
79       BUILDEVENT_FILE: '../buildevents.txt'
80
81     steps:
82     - run: |
83         echo 'platform=${{ matrix.platform }}' >> $BUILDEVENT_FILE
84         echo 'collection=${{ matrix.collection }}' >> $BUILDEVENT_FILE
85
86     - name: "Honeycomb: Start recording"
87       uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
88       with:
89         apikey: ${{ env.HONEYCOMB_WRITEKEY }}
90         dataset: ${{ env.HONEYCOMB_DATASET }}
91         job-status: ${{ job.status }}
92         matrix-key: ${{ matrix.platform }}-${{ matrix.collection }}
93
94     - name: "Honeycomb: start first step"
95       run: |
96         echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-1 >> $GITHUB_ENV
97         echo STEP_START=$(date +%s) >> $GITHUB_ENV
98
99     - name: Checkout Source
100       uses: actions/checkout@v2
101
102     - name: Activate Ruby 2.7
103       uses: ruby/setup-ruby@v1
104       with:
105         ruby-version: "2.7"
106         bundler-cache: true
107
108     - name: Print bundle environment
109       run: |
110         echo ::group::bundler environment
111         buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
112         echo ::endgroup::
113
114     - name: "Honeycomb: Record Setup Environment time"
115       if: ${{ always() }}
116       run: |
117         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
118         echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-2 >> $GITHUB_ENV
119         echo STEP_START=$(date +%s) >> $GITHUB_ENV
120
121     - name: Provision test environment
122       run: |
123         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:provision ${{ matrix.platform }}' -- bundle exec rake 'litmus:provision[provision::provision_service,${{ matrix.platform }}]'
124         echo ::group::=== REQUEST ===
125         cat request.json || true
126         echo
127         echo ::endgroup::
128         echo ::group::=== INVENTORY ===
129         sed -e 's/password: .*/password: "[redacted]"/' < inventory.yaml || true
130         echo ::endgroup::
131
132     - name: Install agent
133       run: |
134         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]'
135
136     - name: Install module
137       run: |
138         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_module' -- bundle exec rake 'litmus:install_module'
139
140     - name: "Honeycomb: Record deployment times"
141       if: ${{ always() }}
142       run: |
143         echo ::group::honeycomb step
144         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Deploy test system'
145         echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-3 >> $GITHUB_ENV
146         echo STEP_START=$(date +%s) >> $GITHUB_ENV
147         echo ::endgroup::
148
149     - name: Run acceptance tests
150       run: |
151         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel'
152
153     - name: "Honeycomb: Record acceptance testing times"
154       if: ${{ always() }}
155       run: |
156         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests'
157         echo STEP_ID=${{ matrix.platform }}-${{ matrix.collection }}-4 >> $GITHUB_ENV
158         echo STEP_START=$(date +%s) >> $GITHUB_ENV
159
160     - name: Remove test environment
161       if: ${{ always() }}
162       continue-on-error: true
163       run: |
164         if [ -f inventory.yaml ]; then
165           buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:tear_down' -- bundle exec rake 'litmus:tear_down'
166           echo ::group::=== REQUEST ===
167           cat request.json || true
168           echo
169           echo ::endgroup::
170         fi
171
172     - name: "Honeycomb: Record removal times"
173       if: ${{ always() }}
174       run: |
175         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment'