Merge pull request #977 from puppetlabs/release-prep
[puppet-modules/puppetlabs-apt.git] / .github / workflows / nightly.yml
1 name: "nightly"
2
3 on:
4   schedule:
5     - cron: '0 0 * * *'
6
7 env:
8   HONEYCOMB_WRITEKEY: 7f3c63a70eecc61d635917de46bea4e6
9   HONEYCOMB_DATASET: litmus tests
10
11 jobs:
12   setup_matrix:
13     name: "Setup Test Matrix"
14     runs-on: ubuntu-20.04
15     outputs:
16       matrix: ${{ steps.get-matrix.outputs.matrix }}
17
18     steps:
19     - name: "Honeycomb: Start recording"
20       uses: puppetlabs/kvrhdn-gha-buildevents@pdk-templates-v1
21       with:
22         apikey: ${{ env.HONEYCOMB_WRITEKEY }}
23         dataset: ${{ env.HONEYCOMB_DATASET }}
24         job-status: ${{ job.status }}
25
26     - name: "Honeycomb: Start first step"
27       run: |
28         echo STEP_ID=setup-environment >> $GITHUB_ENV
29         echo STEP_START=$(date +%s) >> $GITHUB_ENV
30
31     - name: Checkout Source
32       uses: actions/checkout@v2
33       if: ${{ github.repository_owner == 'puppetlabs' }}
34
35     - name: Activate Ruby 2.7
36       uses: ruby/setup-ruby@v1
37       if: ${{ github.repository_owner == 'puppetlabs' }}
38       with:
39         ruby-version: "2.7"
40         bundler-cache: true
41
42     - name: Print bundle environment
43       if: ${{ github.repository_owner == 'puppetlabs' }}
44       run: |
45         echo ::group::bundler environment
46         buildevents cmd $TRACE_ID $STEP_ID 'bundle env' -- bundle env
47         echo ::endgroup::
48
49     - name: "Honeycomb: Record Setup Environment time"
50       if: ${{ github.repository_owner == 'puppetlabs' }}
51       run: |
52         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Environment'
53         echo STEP_ID=Setup-Acceptance-Test-Matrix >> $GITHUB_ENV
54         echo STEP_START=$(date +%s) >> $GITHUB_ENV
55
56     - name: Setup Acceptance Test Matrix
57       id: get-matrix
58       if: ${{ github.repository_owner == 'puppetlabs' }}
59       run: |
60         if [ '${{ github.repository_owner }}' == 'puppetlabs' ]; then
61           buildevents cmd $TRACE_ID $STEP_ID matrix_from_metadata -- bundle exec matrix_from_metadata_v2
62         else
63           echo  "::set-output name=matrix::{}"
64         fi
65
66     - name: "Honeycomb: Record Setup Test Matrix time"
67       if: ${{ always() }}
68       run: |
69         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Setup Test Matrix'
70
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         sed -e 's/password: .*/password: "[redacted]"/' < inventory.yaml || true
135         echo ::endgroup::
136
137     - name: Install agent
138       run: |
139         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_agent ${{ matrix.collection }}' -- bundle exec rake 'litmus:install_agent[${{ matrix.collection }}]'
140
141     - name: Install module
142       run: |
143         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:install_module' -- bundle exec rake 'litmus:install_module'
144
145     - name: "Honeycomb: Record deployment times"
146       if: ${{ always() }}
147       run: |
148         echo ::group::honeycomb step
149         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Deploy test system'
150         echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-3 >> $GITHUB_ENV
151         echo STEP_START=$(date +%s) >> $GITHUB_ENV
152         echo ::endgroup::
153
154     - name: Run acceptance tests
155       run: |
156         buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:acceptance:parallel' -- bundle exec rake 'litmus:acceptance:parallel'
157
158     - name: "Honeycomb: Record acceptance testing times"
159       if: ${{ always() }}
160       run: |
161         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Run acceptance tests'
162         echo STEP_ID=${{ matrix.platforms.image }}-${{ matrix.collection }}-4 >> $GITHUB_ENV
163         echo STEP_START=$(date +%s) >> $GITHUB_ENV
164
165     - name: Remove test environment
166       if: ${{ always() }}
167       continue-on-error: true
168       run: |
169         if [ -f inventory.yaml ]; then
170           buildevents cmd $TRACE_ID $STEP_ID 'rake litmus:tear_down' -- bundle exec rake 'litmus:tear_down'
171           echo ::group::=== REQUEST ===
172           cat request.json || true
173           echo
174           echo ::endgroup::
175         fi
176
177     - name: "Honeycomb: Record removal times"
178       if: ${{ always() }}
179       run: |
180         buildevents step $TRACE_ID $STEP_ID $STEP_START 'Remove test environment'
181
182   slack-workflow-status:
183     if: always()
184     name: Post Workflow Status To Slack
185     needs:
186       - Acceptance
187     runs-on: ubuntu-20.04
188     steps:
189       - name: Slack Workflow Notification
190         uses: puppetlabs/Gamesight-slack-workflow-status@pdk-templates-v1
191         with:
192           # Required Input
193           repo_token: ${{ secrets.GITHUB_TOKEN }}
194           slack_webhook_url: ${{ secrets.SLACK_WEBHOOK }}
195           # Optional Input
196           channel: '#team-ia-bots'
197           name: 'GABot'