File: test_and_release.yml

package info (click to toggle)
python-trame-client 3.11.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 3,128 kB
  • sloc: python: 9,609; javascript: 3,897; sh: 9; makefile: 6
file content (157 lines) | stat: -rw-r--r-- 3,477 bytes parent folder | download
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