-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (115 loc) · 3.83 KB
/
build.yml
File metadata and controls
136 lines (115 loc) · 3.83 KB
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
name: Build Music Player
on:
push:
branches: [ "main", "master" ]
tags:
- 'v*.*.*'
pull_request:
branches: [ "main", "master" ]
jobs:
build:
runs-on: ${{ matrix.os }}
environment: musique
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.11"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# Installation des dépendances selon l'OS
- name: Install dependencies (Windows)
if: matrix.os == 'windows-latest'
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Install dependencies (macOS)
if: matrix.os == 'macos-latest'
run: |
python -m pip install --upgrade pip
pip install -r requirements-mac.txt
pip install pyinstaller
- name: Install dependencies (Linux/Ubuntu)
if: matrix.os == 'ubuntu-latest'
run: |
# Les dépendances systèmes PyQt5/Audio
sudo apt-get update
sudo apt-get install -y python3-pyqt5 python3-pyqt5.qtwebengine libsdl2-mixer-2.0-0 libsdl2-image-2.0-0 libsdl2-2.0-0
python -m pip install --upgrade pip
# Installe les requirements globaux + linux (qui rajoute numba, scipy, etc.)
pip install -r requirements.txt
pip install -r requirements-Linux.txt
pip install pyinstaller
# Injection des Clés Secrètes dans un fichier .env virtuel
- name: Create .env file for Secrets
run: |
echo "IMGUR_CLIENT_ID=${{ vars.IMGUR_CLIENT_ID || '' }}" >> .env
echo "DISCORD_CLIENT_ID=${{ vars.DISCORD_CLIENT_ID || '' }}" >> .env
# Création de l'exécutable
- name: Build executable (Windows/Linux)
if: matrix.os == 'windows-latest' || matrix.os == 'ubuntu-latest'
run: pyinstaller main.spec --clean
- name: Build executable (macOS)
if: matrix.os == 'macos-latest'
run: pyinstaller main-macos.spec --clean
# Upload des Artifacts générés par PyInstaller
- name: Upload Windows executable
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: Musique-Windows
path: |
dist/*.exe
dist/*/
- name: Upload macOS App Bundle
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: Musique-macOS
path: dist/BIT_SCRIPTS_-_Musique.app/
- name: Upload Linux executable
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: Musique-Linux
path: |
dist/*
release:
name: Create GitHub Release
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: release_assets/
- name: Zip macOS App
run: |
cd release_assets
mv Musique-macOS BIT_SCRIPTS_-_Musique.app
zip -r Musique-macOS.zip BIT_SCRIPTS_-_Musique.app/
- name: Zip Linux Binaries
run: |
cd release_assets/Musique-Linux
zip -r ../Musique-Linux.zip .
- name: Zip Windows Exe
run: |
cd release_assets/Musique-Windows
zip -r ../Musique-Windows.zip .
- name: Create Release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
release_assets/Musique-macOS.zip
release_assets/Musique-Linux.zip
release_assets/Musique-Windows.zip