-
Notifications
You must be signed in to change notification settings - Fork 154
85 lines (75 loc) · 2.87 KB
/
build-and-test.yml
File metadata and controls
85 lines (75 loc) · 2.87 KB
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
# Live workflow. Legacy token-keeper snapshot: docs/ci/legacy/build-and-test.token-keeper.yml
name: Build and Test
on:
push:
branches:
- main
schedule:
- cron: "0 13 * * 1"
workflow_dispatch:
workflow_call:
jobs:
build-and-test:
name: Build and Test
runs-on: ubuntu-latest
environment: webex-ci
env:
POETRY_VIRTUALENVS_CREATE: false
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- uses: Gr1N/setup-poetry@v9
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Install Dependencies
run: |
poetry self add "poetry-dynamic-versioning[plugin]"
poetry install --no-root --only=dev
- name: Get Webex access token
id: webex_token
env:
WEBEX_ACCESS_TOKEN_STATIC: ${{ secrets.WEBEX_ACCESS_TOKEN }}
WEBEX_CLIENT_ID: ${{ secrets.WEBEX_CLIENT_ID }}
WEBEX_CLIENT_SECRET: ${{ secrets.WEBEX_CLIENT_SECRET }}
WEBEX_REFRESH_TOKEN: ${{ secrets.WEBEX_REFRESH_TOKEN }}
run: |
set -euo pipefail
if [ -n "${WEBEX_ACCESS_TOKEN_STATIC:-}" ]; then
echo "WEBEX_ACCESS_TOKEN=$WEBEX_ACCESS_TOKEN_STATIC" >> "$GITHUB_OUTPUT"
echo "::add-mask::$WEBEX_ACCESS_TOKEN_STATIC"
exit 0
fi
RESPONSE=$(curl -sS -X POST https://webexapis.com/v1/access_token \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=refresh_token" \
--data-urlencode "client_id=${WEBEX_CLIENT_ID}" \
--data-urlencode "client_secret=${WEBEX_CLIENT_SECRET}" \
--data-urlencode "refresh_token=${WEBEX_REFRESH_TOKEN}")
WEBEX_ACCESS_TOKEN=$(echo "$RESPONSE" | jq -r .access_token)
if [ "$WEBEX_ACCESS_TOKEN" = "null" ] || [ -z "$WEBEX_ACCESS_TOKEN" ]; then
echo "::error::Token refresh failed (no access_token in response)."
exit 1
fi
echo "WEBEX_ACCESS_TOKEN=$WEBEX_ACCESS_TOKEN" >> "$GITHUB_OUTPUT"
echo "::add-mask::$WEBEX_ACCESS_TOKEN"
- name: Build
run: poetry build
- name: Install
run: pip install dist/*.whl
- name: Test
run: pytest -s -m "not slow and not manual"
env:
WEBEX_ACCESS_TOKEN: ${{ steps.webex_token.outputs.WEBEX_ACCESS_TOKEN }}
WEBEX_TEST_DOMAIN: ${{ vars.WEBEX_TEST_DOMAIN }}
WEBEX_TEST_ID_START: ${{ vars.WEBEX_TEST_ID_START }}
WEBEX_TEST_FILE_URL: ${{ vars.WEBEX_TEST_FILE_URL }}
WEBEX_GUEST_ISSUER_ID: ${{ secrets.WEBEX_GUEST_ISSUER_ID }}
WEBEX_GUEST_ISSUER_SECRET: ${{ secrets.WEBEX_GUEST_ISSUER_SECRET }}
- name: Upload Distribution Files
uses: actions/upload-artifact@v4
with:
name: distribution-files
path: dist/