-
Notifications
You must be signed in to change notification settings - Fork 851
132 lines (111 loc) · 4.17 KB
/
Test-CI-dev.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
name: "Test Library CI (dev)"
# please note the comments in `test-CI-main.yml`
on:
push:
branches:
- dev
pull_request_target:
branches:
- dev
workflow_dispatch:
defaults:
run:
shell: bash
jobs:
test:
permissions:
id-token: write
contents: read
runs-on: ubuntu-latest
steps:
#
# Setup Repository
#
- name: Checkout repository
uses: actions/checkout@v4
- name: Checkout the target branch
id: checkout
run: |
set -ex
# Debugging: initial git status
echo "==== Git status before checkout ===="
git status
# Handle different GitHub Actions events
if [[ "${{ github.event_name }}" == "pull_request_target" ]]; then
echo "Handling pull_request_target event"
echo "SHOULD_TEST_ALL_FILES=false" >> $GITHUB_ENV
if [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.repository }}" ]; then
echo "PR from a fork detected. Checking out the fork's branch."
git remote add fork https://github.com/${{ github.event.pull_request.head.repo.full_name }}.git
git fetch fork ${{ github.event.pull_request.head.ref }}
git checkout -B ci-testing-branch FETCH_HEAD # Tested code is comming from this branch (contributer's)
else
echo "PR from the same repository detected. Checking out the branch."
git fetch origin ${{ github.event.pull_request.head.ref }}
git checkout ${{ github.event.pull_request.head.ref }}
fi
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "Handling workflow_dispatch event: No checkout needed"
echo "SHOULD_TEST_ALL_FILES=true" >> $GITHUB_ENV
echo "list_of_ipynb_changed=**/*.ipynb" >> $GITHUB_ENV
elif [[ "${{ github.event_name }}" == "push" ]]; then
echo "Handling push event: No checkout needed"
else
echo "Unsupported event type: ${github.event_name}. Exiting."
exit 1
fi
# Debugging: final git status
echo "==== Git status after checkout ===="
git status
#
# Setup Python
#
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
if: steps.cache-pip.outputs.cache-hit != 'true'
run: |
set -e
python -m pip install -U pip
# The `--pre` allows the installation of pre-release versions of packages (needed for Dev)
python -m pip install --extra-index-url https://pypi.org/simple --pre -U -r requirements.txt
python -m pip install --extra-index-url https://pypi.org/simple -U -r requirements_tests.txt
#
# Setup Environment
#
# Configure AWS credentials
- name: Configure AWS Credentials
uses: aws-actions/[email protected]
with:
role-to-assume: ${{ secrets.AWS_ROLE }}
aws-region: us-east-1
mask-aws-account-id: true
# Set authentication with M2M token
- name: Set authentication
run: .github/scripts/get_m2m_token.sh
env:
IS_DEV: "true"
M2M_SECRET_ARN: "${{ secrets.NIGHTLY_M2M_SECRET_ARN }}"
#
# Propagate CI information to python tests
#
- name: Get changed notebook files
id: changed-files-ipynb
uses: tj-actions/changed-files@v44
with:
files: |
**/*.ipynb
# Run Notebook Tests
- name: Run Notebooks
run: python -m pytest --log-cli-level=INFO tests
env:
# to disable a warning in Jupyter notebooks
JUPYTER_PLATFORM_DIRS: "1"
# Passing which notebooks changed
SHOULD_TEST_ALL_FILES: "${{ env.SHOULD_TEST_ALL_FILES }}"
LIST_OF_IPYNB_CHANGED: "${{ steps.changed-files-ipynb.outputs.all_changed_files }}"
# Passing environment information
CLASSIQ_IDE: "https://nightly.platform.classiq.io"
CLASSIQ_HOST: "https://staging.api.classiq.io"