File size: 2,597 Bytes
8a37e0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# Main release workflow. Triggered on tag push or manual trigger.
#
# - Runs all code checks and tests
# - Verifies the app version matches the tag version.
# - Builds the installer and build, uploading them as artifacts.
# - Publishes to TestPyPI and PyPI. Both are conditional on the previous steps passing and require a manual approval.
#
# See docs/RELEASE.md for more information on the release process.

name: release

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:

jobs:
  check-version:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: check python version
        uses: samuelcolvin/check-python-version@v4
        id: check-python-version
        with:
          version_file_path: invokeai/version/invokeai_version.py

  frontend-checks:
    uses: ./.github/workflows/frontend-checks.yml
    with:
      always_run: true

  frontend-tests:
    uses: ./.github/workflows/frontend-tests.yml
    with:
      always_run: true

  python-checks:
    uses: ./.github/workflows/python-checks.yml
    with:
      always_run: true

  python-tests:
    uses: ./.github/workflows/python-tests.yml
    with:
      always_run: true

  build:
    uses: ./.github/workflows/build-installer.yml

  publish-testpypi:
    runs-on: ubuntu-latest
    timeout-minutes: 5 # expected run time: <1 min
    needs:
      [
        check-version,
        frontend-checks,
        frontend-tests,
        python-checks,
        python-tests,
        build,
      ]
    environment:
      name: testpypi
      url: https://test.pypi.org/p/invokeai
    permissions:
      id-token: write
    steps:
      - name: download distribution from build job
        uses: actions/download-artifact@v4
        with:
          name: dist
          path: dist/

      - name: publish distribution to TestPyPI
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          repository-url: https://test.pypi.org/legacy/

  publish-pypi:
    runs-on: ubuntu-latest
    timeout-minutes: 5 # expected run time: <1 min
    needs:
      [
        check-version,
        frontend-checks,
        frontend-tests,
        python-checks,
        python-tests,
        build,
      ]
    environment:
      name: pypi
      url: https://pypi.org/p/invokeai
    permissions:
      id-token: write
    steps:
      - name: download distribution from build job
        uses: actions/download-artifact@v4
        with:
          name: dist
          path: dist/

      - name: publish distribution to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1