|
1 |
| -name: Python Package |
2 |
| - |
| 1 | +name: Build Python Package |
3 | 2 | on:
|
4 | 3 | push:
|
5 |
| - branches: [ "*" ] |
6 |
| - |
| 4 | + branches: [ "**" ] |
| 5 | + tags-ignore: [ "**" ] |
7 | 6 | jobs:
|
8 |
| - build: |
| 7 | + build-package: |
9 | 8 | runs-on: ubuntu-latest
|
10 |
| - strategy: |
11 |
| - fail-fast: false |
12 |
| - matrix: |
13 |
| - python-version: ["3.9", "3.10", "3.11"] |
14 |
| - primary-config: ["true", "false"] |
15 |
| - # There may be a better way to do this, but it was the first way I found to set a variable for specific matrix entry |
16 |
| - exclude: |
17 |
| - - python-version: "3.9" |
18 |
| - primary-config: "true" |
19 |
| - - python-version: "3.10" |
20 |
| - primary-config: "true" |
21 |
| - - python-version: "3.11" |
22 |
| - primary-config: "false" |
23 | 9 | steps:
|
24 |
| - - uses: actions/checkout@v4 |
25 |
| - - name: Set up Python ${{ matrix.python-version }} |
26 |
| - uses: actions/setup-python@v3 |
27 |
| - with: |
28 |
| - python-version: ${{ matrix.python-version }} |
29 |
| - - name: Install |
30 |
| - run: | |
31 |
| - python -m pip install --upgrade pip |
32 |
| - python -m pip install .[dev] flake8 |
33 |
| - - name: Lint with flake8 |
34 |
| - run: | |
35 |
| - # stop the build if there are Python syntax errors or undefined names |
36 |
| - flake8 src --count --select=E9,F63,F7,F82 --show-source --statistics |
37 |
| - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide |
38 |
| - flake8 src --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics |
39 |
| - - name: Test with pytest (only on Python 3.11 to avoid concurrency issues) |
40 |
| - if: ${{ (github.ref == 'refs/heads/master') && (matrix.primary-config == 'true') }} |
41 |
| - env: |
42 |
| - ONE_JOB_ONLY_TESTS: ${{ matrix.primary-config }} |
43 |
| - WIOTP_API_KEY: ${{ secrets.WIOTP_API_KEY }} |
44 |
| - WIOTP_API_TOKEN: ${{ secrets.WIOTP_API_TOKEN }} |
45 |
| - WIOTP_ORG_ID: ${{ secrets.WIOTP_ORG_ID }} |
46 |
| - CLOUDANT_HOST: ${{ secrets.CLOUDANT_HOST }} |
47 |
| - CLOUDANT_PORT: ${{ secrets.CLOUDANT_PORT }} |
48 |
| - CLOUDANT_USERNAME: ${{ secrets.CLOUDANT_USERNAME }} |
49 |
| - CLOUDANT_PASSWORD: ${{ secrets.CLOUDANT_PASSWORD }} |
50 |
| - EVENTSTREAMS_API_KEY: ${{ secrets.EVENTSTREAMS_API_KEY }} |
51 |
| - EVENTSTREAMS_ADMIN_URL: ${{ secrets.EVENTSTREAMS_ADMIN_URL }} |
52 |
| - EVENTSTREAMS_BROKER1: ${{ secrets.EVENTSTREAMS_BROKER1 }} |
53 |
| - EVENTSTREAMS_BROKER2: ${{ secrets.EVENTSTREAMS_BROKER2 }} |
54 |
| - EVENTSTREAMS_BROKER3: ${{ secrets.EVENTSTREAMS_BROKER3 }} |
55 |
| - EVENTSTREAMS_BROKER4: ${{ secrets.EVENTSTREAMS_BROKER4 }} |
56 |
| - EVENTSTREAMS_BROKER5: ${{ secrets.EVENTSTREAMS_BROKER5 }} |
57 |
| - EVENTSTREAMS_BROKER6: ${{ secrets.EVENTSTREAMS_BROKER6 }} |
58 |
| - EVENTSTREAMS_USER: ${{ secrets.EVENTSTREAMS_USER }} |
59 |
| - EVENTSTREAMS_PASSWORD: ${{ secrets.EVENTSTREAMS_PASSWORD }} |
60 |
| - run: | |
61 |
| - pytest |
| 10 | + # 1. Initialize the build |
| 11 | + # ------------------------------------------------------------------------------------------- |
| 12 | + - name: Checkout |
| 13 | + uses: actions/checkout@v4 |
| 14 | + # Without this option, we don't get the tag information |
| 15 | + with: |
| 16 | + fetch-depth: 0 |
| 17 | + |
| 18 | + - name: Initialise the build system |
| 19 | + run: | |
| 20 | + chmod u+x $GITHUB_WORKSPACE/build/bin/*.sh |
| 21 | + $GITHUB_WORKSPACE/build/bin/initbuild.sh |
| 22 | + source $GITHUB_WORKSPACE/build/bin/.functions.sh |
| 23 | +
|
| 24 | + # 2. Python Package Build |
| 25 | + # ------------------------------------------------------------------------------------------- |
| 26 | + - name: Set up Python 3.11 |
| 27 | + uses: actions/setup-python@v5 |
| 28 | + with: |
| 29 | + python-version: 3.11 |
| 30 | + |
| 31 | + - name: Build the Python package |
| 32 | + run: | |
| 33 | + sed -i "s#__version__ = \"100.0.0\"#__version__ = \"${{ env.VERSION_NOPREREL }}\"#g" ${GITHUB_WORKSPACE}/src/wiotp/sdk/__init__.py |
| 34 | + cat ${GITHUB_WORKSPACE}/src/wiotp/sdk/__init__.py |
| 35 | + python -m pip install --upgrade pip |
| 36 | + pip install .[dev] |
| 37 | + python -m pytest |
| 38 | + env: |
| 39 | + ONE_JOB_ONLY_TESTS: "true" |
| 40 | + WIOTP_API_KEY: ${{ secrets.WIOTP_API_KEY }} |
| 41 | + WIOTP_API_TOKEN: ${{ secrets.WIOTP_API_TOKEN }} |
| 42 | + WIOTP_ORG_ID: ${{ secrets.WIOTP_ORG_ID }} |
| 43 | + CLOUDANT_HOST: ${{ secrets.CLOUDANT_HOST }} |
| 44 | + CLOUDANT_PORT: ${{ secrets.CLOUDANT_PORT }} |
| 45 | + CLOUDANT_USERNAME: ${{ secrets.CLOUDANT_USERNAME }} |
| 46 | + CLOUDANT_PASSWORD: ${{ secrets.CLOUDANT_PASSWORD }} |
| 47 | + EVENTSTREAMS_API_KEY: ${{ secrets.EVENTSTREAMS_API_KEY }} |
| 48 | + EVENTSTREAMS_ADMIN_URL: ${{ secrets.EVENTSTREAMS_ADMIN_URL }} |
| 49 | + EVENTSTREAMS_BROKER1: ${{ secrets.EVENTSTREAMS_BROKER1 }} |
| 50 | + EVENTSTREAMS_BROKER2: ${{ secrets.EVENTSTREAMS_BROKER2 }} |
| 51 | + EVENTSTREAMS_BROKER3: ${{ secrets.EVENTSTREAMS_BROKER3 }} |
| 52 | + EVENTSTREAMS_BROKER4: ${{ secrets.EVENTSTREAMS_BROKER4 }} |
| 53 | + EVENTSTREAMS_BROKER5: ${{ secrets.EVENTSTREAMS_BROKER5 }} |
| 54 | + EVENTSTREAMS_BROKER6: ${{ secrets.EVENTSTREAMS_BROKER6 }} |
| 55 | + EVENTSTREAMS_USER: ${{ secrets.EVENTSTREAMS_USER }} |
| 56 | + EVENTSTREAMS_PASSWORD: ${{ secrets.EVENTSTREAMS_PASSWORD }} |
| 57 | + |
| 58 | + - name: Lint with flake8 |
| 59 | + run: | |
| 60 | + # stop the build if there are Python syntax errors or undefined names |
| 61 | + flake8 src --count --select=E9,F63,F7,F82 --show-source --statistics |
| 62 | + # exit-zero treats all errors as warnings. |
| 63 | + flake8 src --count --exit-zero --max-complexity=10 --max-line-length=200 --statistics |
0 commit comments