-
-
Notifications
You must be signed in to change notification settings - Fork 8
146 lines (133 loc) · 3.91 KB
/
release.yml
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
# This workflow is automatically run when a new tag is pushed (either manually or with "Create Tag" workflow)
name: Release and Publish
on:
push:
tags:
- '**'
workflow_call:
workflow_dispatch:
inputs:
publish-pypi:
description: 'Skip publishing this release to PyPI?'
type: choice
required: false
default: 'Do not skip'
options:
- 'Do not skip'
- 'Skip'
concurrency:
group: release
cancel-in-progress: true
jobs:
build-exe:
uses: ./.github/workflows/build-exe.yml
secrets: inherit
build-deb:
uses: ./.github/workflows/build-deb.yml
secrets: inherit
build-wheel:
name: Build PyPI dist
runs-on: ubuntu-latest
needs:
- build-exe
- build-deb
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: pdm-project/setup-pdm@v4
- name: Build a binary wheel and a source tarball
run: pdm build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
publish-to-pypi:
name: |
Publish to PyPI
needs:
- build-wheel
if: ${{ inputs.publish-pypi != 'Skip' }}
runs-on: ubuntu-latest
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: Draft GitHub Release
needs:
- build-wheel
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download all the dists
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@main
with:
inputs: |
./dist/*.tar.gz
./dist/*.whl
- name: Draft GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
gh release create \
'${{ github.ref_name }}' \
--repo '${{ github.repository }}' \
--generate-notes \
--draft
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: |
gh release upload \
'${{ github.ref_name }}' \
--repo '${{ github.repository }}' \
dist/**
# Necessary for getting executable name, since it won't match the git ref
# if we're releasing a branch build
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get base.json file
id: json-properties
uses: zoexx/[email protected]
with:
file_path: gui/src/build/settings/base.json
- name: Download Windows installer
uses: actions/download-artifact@v4
with:
name: installer-exe
- name: Download Linux installer
uses: actions/download-artifact@v4
with:
name: installer-deb
- name: Upload executable installers to Github Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: |
gh release upload \
'${{ github.ref_name }}' \
--repo '${{ github.repository }}' \
YTMusic_Deleter-${{ steps.json-properties.outputs.version }}-Windows-Installer.exe \
YTMusic_Deleter-${{ steps.json-properties.outputs.version }}-Linux-Installer.deb