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 145 146 147 148 149 150 151 152 153 154 155 156 157
|
name: Test and Release
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.9"
# Install and run pre-commit
- run: |
pip install pre-commit
pre-commit install
pre-commit run --all-files
pytest:
name: Pytest ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
python-version: ["3.9"]
config:
- {
name: "Linux",
os: ubuntu-latest
}
# - {
# name: "MacOSX",
# os: macos-latest
# }
# - {
# name: "Windows",
# os: windows-latest
# }
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set Up Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build Vue2 App
run: |
cd vue2-app
npm ci
npm run build
- name: Build Vue3 App
run: |
cd vue3-app
npm ci
npm run build
- name: Install and Run Tests
run: |
pip install .
pip install -r tests/requirements.txt
# Install requirements for playwright
playwright install
# Run the tests with coverage so we get a coverage report too
pip install coverage
coverage run --source . -m pytest -s .
# Print the coverage report
coverage report -m
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v3
test-npm-build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set Up Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build Vue2 App
run: |
cd vue2-app
npm ci
npm run build
- name: Build Vue3 App
run: |
cd vue3-app
npm ci
npm run build
release:
needs: [pre-commit, pytest, test-npm-build]
runs-on: ubuntu-latest
if: github.event_name == 'push'
environment:
name: pypi
url: https://pypi.org/p/trame-client
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
contents: write # IMPORTANT: mandatory for making GitHub Releases
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Up Node
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build Vue2 App
run: |
cd vue2-app
npm ci
npm run build
- name: Build Vue3 App
run: |
cd vue3-app
npm ci
npm run build
- name: Python Semantic Release
id: release
uses: relekang/python-semantic-release@v9.15.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Publish package distributions to PyPI
if: steps.release.outputs.released == 'true'
uses: pypa/gh-action-pypi-publish@release/v1
|