mirror of
https://github.com/Dvorinka/swingmusic-extended.git
synced 2026-06-03 20:13:02 +00:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 55ba9e7b6e | |||
| fbf4a71ea5 | |||
| 5ed457d79d | |||
| 93b0f81990 | |||
| f27f8504bb | |||
| 274c51d44b | |||
| 37a60b98d7 | |||
| 5d06dda687 | |||
| e26cf25e6f | |||
| d5c664d753 | |||
| 523ebf1c94 | |||
| 58f720d7de | |||
| facff2d322 | |||
| 1648e0fea2 | |||
| 69244c9429 | |||
| 8661101706 |
@@ -0,0 +1,67 @@
|
|||||||
|
name: Build and Push Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master", "main" ]
|
||||||
|
paths:
|
||||||
|
- 'src/**'
|
||||||
|
- 'swingmusic-webclient/**'
|
||||||
|
- 'pyproject.toml'
|
||||||
|
- 'requirements.txt'
|
||||||
|
- 'Dockerfile'
|
||||||
|
workflow_dispatch:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: ghcr.io
|
||||||
|
IMAGE_NAME: ${{ github.repository }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Extract metadata for Docker
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
uses: docker/build-push-action@v7
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
@@ -15,7 +15,7 @@ jobs:
|
|||||||
name: Backend Lint & Type Check
|
name: Backend Lint & Type Check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
name: Backend Tests
|
name: Backend Tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ jobs:
|
|||||||
run: python -m pytest tests/ -v --tb=short --cov=src/swingmusic --cov-report=xml --cov-report=term-missing
|
run: python -m pytest tests/ -v --tb=short --cov=src/swingmusic --cov-report=xml --cov-report=term-missing
|
||||||
|
|
||||||
- name: Upload coverage
|
- name: Upload coverage
|
||||||
uses: codecov/codecov-action@v4
|
uses: codecov/codecov-action@v5
|
||||||
with:
|
with:
|
||||||
files: ./coverage.xml
|
files: ./coverage.xml
|
||||||
fail_ci_if_error: false
|
fail_ci_if_error: false
|
||||||
@@ -75,7 +75,7 @@ jobs:
|
|||||||
name: Backend Startup Check
|
name: Backend Startup Check
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
@@ -104,7 +104,7 @@ jobs:
|
|||||||
working-directory: swingmusic_mobile
|
working-directory: swingmusic_mobile
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
@@ -131,12 +131,12 @@ jobs:
|
|||||||
working-directory: swingmusic-webclient
|
working-directory: swingmusic-webclient
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -162,12 +162,12 @@ jobs:
|
|||||||
working-directory: swingmusic-desktop
|
working-directory: swingmusic-desktop
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -186,7 +186,7 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v3
|
uses: github/codeql-action/init@v3
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
@@ -69,7 +69,7 @@ jobs:
|
|||||||
name: Python Dependency Audit
|
name: Python Dependency Audit
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v5
|
uses: actions/setup-python@v5
|
||||||
@@ -90,12 +90,12 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
working-directory: swingmusic-webclient
|
working-directory: swingmusic-webclient
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
|
||||||
@@ -113,12 +113,12 @@ jobs:
|
|||||||
run:
|
run:
|
||||||
working-directory: swingmusic-desktop
|
working-directory: swingmusic-desktop
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
|
|
||||||
@@ -136,7 +136,7 @@ jobs:
|
|||||||
name: Secret Scanning
|
name: Secret Scanning
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ jobs:
|
|||||||
release_notes: ${{ steps.version.outputs.release_notes }}
|
release_notes: ${{ steps.version.outputs.release_notes }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ jobs:
|
|||||||
rust_target: 'x86_64-unknown-linux-gnu'
|
rust_target: 'x86_64-unknown-linux-gnu'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Initialize submodules
|
- name: Initialize submodules
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
@@ -177,7 +177,7 @@ jobs:
|
|||||||
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
|
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -211,7 +211,7 @@ jobs:
|
|||||||
npm run tauri build -- --target ${{ matrix.rust_target }}
|
npm run tauri build -- --target ${{ matrix.rust_target }}
|
||||||
|
|
||||||
- name: Upload Linux artifacts
|
- name: Upload Linux artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: desktop-${{ matrix.platform }}
|
name: desktop-${{ matrix.platform }}
|
||||||
path: |
|
path: |
|
||||||
@@ -234,7 +234,7 @@ jobs:
|
|||||||
rust_target: 'x86_64-pc-windows-gnu'
|
rust_target: 'x86_64-pc-windows-gnu'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Initialize submodules
|
- name: Initialize submodules
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ jobs:
|
|||||||
sudo apt-get install -y mingw-w64 g++-multilib nsis libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev patchelf
|
sudo apt-get install -y mingw-w64 g++-multilib nsis libgtk-3-dev libwebkit2gtk-4.1-dev librsvg2-dev patchelf
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -278,7 +278,7 @@ jobs:
|
|||||||
npm run tauri build -- --target ${{ matrix.rust_target }}
|
npm run tauri build -- --target ${{ matrix.rust_target }}
|
||||||
|
|
||||||
- name: Upload Windows artifacts
|
- name: Upload Windows artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: desktop-${{ matrix.platform }}
|
name: desktop-${{ matrix.platform }}
|
||||||
path: |
|
path: |
|
||||||
@@ -303,12 +303,12 @@ jobs:
|
|||||||
rust_target: 'aarch64-apple-darwin'
|
rust_target: 'aarch64-apple-darwin'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Initialize submodules
|
- name: Initialize submodules
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
node-version: '18'
|
node-version: '18'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -342,7 +342,7 @@ jobs:
|
|||||||
npm run tauri build -- --target ${{ matrix.rust_target }}
|
npm run tauri build -- --target ${{ matrix.rust_target }}
|
||||||
|
|
||||||
- name: Upload macOS artifacts
|
- name: Upload macOS artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: desktop-${{ matrix.platform }}
|
name: desktop-${{ matrix.platform }}
|
||||||
path: |
|
path: |
|
||||||
@@ -358,7 +358,7 @@ jobs:
|
|||||||
if: contains(github.event.inputs.components, 'mobile') || github.event_name == 'push'
|
if: contains(github.event.inputs.components, 'mobile') || github.event_name == 'push'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Initialize submodules
|
- name: Initialize submodules
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ jobs:
|
|||||||
flutter build apk --release --no-pub
|
flutter build apk --release --no-pub
|
||||||
|
|
||||||
- name: Upload Mobile artifacts
|
- name: Upload Mobile artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: mobile-release
|
name: mobile-release
|
||||||
path: swingmusic_mobile/build/app/outputs/flutter-apk/app-release.apk
|
path: swingmusic_mobile/build/app/outputs/flutter-apk/app-release.apk
|
||||||
@@ -395,7 +395,7 @@ jobs:
|
|||||||
if: contains(github.event.inputs.components, 'backend') || github.event_name == 'push'
|
if: contains(github.event.inputs.components, 'backend') || github.event_name == 'push'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
- name: Initialize submodules
|
- name: Initialize submodules
|
||||||
run: git submodule update --init --recursive
|
run: git submodule update --init --recursive
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ jobs:
|
|||||||
sudo apt-get install -y libev-dev
|
sudo apt-get install -y libev-dev
|
||||||
|
|
||||||
- name: Cache Python dependencies
|
- name: Cache Python dependencies
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v5
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pip
|
path: ~/.cache/pip
|
||||||
key: pip-${{ hashFiles('**/requirements.txt') }}
|
key: pip-${{ hashFiles('**/requirements.txt') }}
|
||||||
@@ -427,7 +427,7 @@ jobs:
|
|||||||
python -m build
|
python -m build
|
||||||
|
|
||||||
- name: Upload Backend artifacts
|
- name: Upload Backend artifacts
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: backend-package
|
name: backend-package
|
||||||
path: dist/
|
path: dist/
|
||||||
@@ -441,7 +441,7 @@ jobs:
|
|||||||
if: success()
|
if: success()
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Download all artifacts
|
- name: Download all artifacts
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
|
|||||||
+1
-4
@@ -36,12 +36,9 @@ RUN apt-get update \
|
|||||||
COPY pyproject.toml requirements.txt version.txt ./
|
COPY pyproject.toml requirements.txt version.txt ./
|
||||||
COPY src/ ./src/
|
COPY src/ ./src/
|
||||||
|
|
||||||
# Install the package and its dependencies
|
# Install the package and its dependencies (includes aiohttp, aiofiles, redis)
|
||||||
RUN pip install --no-cache-dir .
|
RUN pip install --no-cache-dir .
|
||||||
|
|
||||||
# Install Redis library for DragonflyDB support
|
|
||||||
RUN pip install --no-cache-dir redis
|
|
||||||
|
|
||||||
# Ship a deterministic web client with the backend image so startup does not
|
# Ship a deterministic web client with the backend image so startup does not
|
||||||
# depend on downloading release assets at runtime.
|
# depend on downloading release assets at runtime.
|
||||||
COPY --from=webclient-builder /webclient/dist /app/client
|
COPY --from=webclient-builder /webclient/dist /app/client
|
||||||
|
|||||||
+2
-2
@@ -34,8 +34,8 @@ dependencies = [
|
|||||||
"ffmpeg-python>=0.2.0",
|
"ffmpeg-python>=0.2.0",
|
||||||
"schedule>=1.2.2",
|
"schedule>=1.2.2",
|
||||||
"pillow>=11.1.0",
|
"pillow>=11.1.0",
|
||||||
"flask-openapi3==3.0.2",
|
"flask-openapi3==4.3.1",
|
||||||
"rapidfuzz==3.11.0",
|
"rapidfuzz==3.14.5",
|
||||||
"pendulum>=3.0.0",
|
"pendulum>=3.0.0",
|
||||||
"pystray>=0.19.5",
|
"pystray>=0.19.5",
|
||||||
"waitress>=3.0.2; sys_platform == 'win32'",
|
"waitress>=3.0.2; sys_platform == 'win32'",
|
||||||
|
|||||||
+2
-2
@@ -21,8 +21,8 @@ sortedcontainers>=2.4.0
|
|||||||
xxhash>=3.4.1
|
xxhash>=3.4.1
|
||||||
ffmpeg-python>=0.2.0
|
ffmpeg-python>=0.2.0
|
||||||
schedule>=1.2.2
|
schedule>=1.2.2
|
||||||
flask-openapi3==3.0.2
|
flask-openapi3==4.3.1
|
||||||
rapidfuzz==3.11.0
|
rapidfuzz==3.14.5
|
||||||
pendulum>=3.0.0
|
pendulum>=3.0.0
|
||||||
pystray>=0.19.5
|
pystray>=0.19.5
|
||||||
waitress==3.0.2; sys_platform == 'win32'
|
waitress==3.0.2; sys_platform == 'win32'
|
||||||
|
|||||||
Reference in New Issue
Block a user