-
Notifications
You must be signed in to change notification settings - Fork 1
144 lines (131 loc) · 4.33 KB
/
nightly-v4-integtest.yml
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
name: Nightly v4 integration tests
on:
schedule:
- cron: "0 9 * * 0"
workflow_dispatch:
inputs:
send-slack-message:
description: 'whether to send a message to #daq-release-notifications on failure'
default: 'no'
jobs:
make_nightly_tag:
name: create nightly tag
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.create_nightly_tag.outputs.nightly_tag }}
defaults:
run:
shell: bash
steps:
- id: create_nightly_tag
run: |
date_tag=$(date +%y%m%d)
if [ "$(date +%a)" != "Sun" ]; then
date_tag=$(date +%y%m%d -d 'last sunday');
fi
echo "nightly_tag=NFD_PROD4_${date_tag}_A9" >> "$GITHUB_OUTPUT"
cat "$GITHUB_OUTPUT"
integration_tests:
name: integration_tests
runs-on: daq
timeout-minutes: 30
needs: make_nightly_tag
strategy:
fail-fast: false
matrix:
test_name: ["minimal_system_quick", "fake_data_producer", "long_window_readout", "small_footprint_quick"]
defaults:
run:
shell: bash
steps:
- name: Checkout daqsystemtest
uses: actions/checkout@v4
with:
repository: DUNE-DAQ/daqsystemtest
path: daqsystemtest
ref: production/v4
- name: setup release and run tests
env:
NIGHTLY_TAG: ${{needs.make_nightly_tag.outputs.tag}}
run: |
DET=fd
mkdir -p $GITHUB_WORKSPACE/integration_tests_$NIGHTLY_TAG
cd $GITHUB_WORKSPACE/integration_tests_$NIGHTLY_TAG
export PATH=$HOME/bin:$PATH
type get-ticket.sh && get-ticket.sh
source /cvmfs/dunedaq.opensciencegrid.org/setup_dunedaq.sh
setup_dbt latest_v4
dbt-setup-release -n $NIGHTLY_TAG
pytest -v -s --junit-xml=${{ matrix.test_name }}_test_results.xml \
$GITHUB_WORKSPACE/daqsystemtest/integtest/${{ matrix.test_name }}_test.py \
--nanorc-option partition-number 4
cd $GITHUB_WORKSPACE
rm -rf daqsystemtest
parse_results:
runs-on: daq
if: always()
needs: [make_nightly_tag, integration_tests]
steps:
- name: Surface failing tests
#uses: pmeier/pytest-results-action@8104ed7b3d3ba4bb0d550e406fc26aa756630fcc
uses: andrewmogan/pytest-results-action@1158583ebac3346e36d76969902bc1fa7b925270
env:
NIGHTLY_TAG: ${{needs.make_nightly_tag.outputs.tag}}
with:
path: ${{ github.workspace }}/integration_tests_${{ env.NIGHTLY_TAG }}/*_test_results.xml
summary: true
display-options: fEX
fail-on-empty: true
cleanup_xml_files:
runs-on: daq
if: always()
needs: [make_nightly_tag, parse_results]
steps:
- name: Remove xml files
env:
NIGHTLY_TAG: ${{ needs.make_nightly_tag.outputs.tag }}
run: |
rm -rf ${{ github.workspace }}/integration_tests_${{ env.NIGHTLY_TAG }}
# Integration tests can sometimes collide with stale processes, leading to timeout
cleanup_stale_gunicorn_processes:
runs-on: daq
if: always()
needs: integration_tests
steps:
- name: Run cleanup script
run: |
/home/nfs/dunedaq/kill_stale_gunicorn_processes.sh
send_slack_message:
if: failure() || (github.event_name == 'workflow_dispatch' && github.event.inputs.send-slack-message == 'yes')
runs-on: daq
name: send slack message
needs: integration_tests
steps:
- name: Send JSON data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.27.0
with:
# For posting a rich message using Block Kit
payload: |
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":rotating_light: Failed: ${{ github.workflow }} :rotating_light:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Full report: <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|link>."
}
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK