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