v1.9.16 #267
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: MoviePilot Builder | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
paths: | |
- version.py | |
jobs: | |
Docker-build: | |
runs-on: ubuntu-latest | |
name: Build Docker Image | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Release version | |
id: release_version | |
run: | | |
app_version=$(cat version.py |sed -ne "s/APP_VERSION\s=\s'v\(.*\)'/\1/gp") | |
echo "app_version=$app_version" >> $GITHUB_ENV | |
- name: Docker Meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: ${{ secrets.DOCKER_USERNAME }}/moviepilot | |
tags: | | |
type=raw,value=${{ env.app_version }} | |
type=raw,value=latest | |
- name: Set Up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set Up Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login DockerHub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Build Image | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
file: Dockerfile | |
platforms: | | |
linux/amd64 | |
linux/arm64/v8 | |
push: true | |
build-args: | | |
MOVIEPILOT_VERSION=${{ env.app_version }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-from: type=gha, scope=${{ github.workflow }}-docker | |
cache-to: type=gha, scope=${{ github.workflow }}-docker | |
Windows-build: | |
runs-on: windows-latest | |
name: Build Windows Binary | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Init Python 3.11.4 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11.4' | |
cache: 'pip' | |
- name: Install Dependent Packages | |
run: | | |
python -m pip install --upgrade pip | |
pip install wheel pyinstaller | |
pip install -r requirements.txt | |
shell: pwsh | |
- name: Prepare Frontend | |
run: | | |
# 下载nginx | |
Invoke-WebRequest -Uri "http://nginx.org/download/nginx-1.25.2.zip" -OutFile "nginx.zip" | |
Expand-Archive -Path "nginx.zip" -DestinationPath "nginx-1.25.2" | |
Move-Item -Path "nginx-1.25.2/nginx-1.25.2" -Destination "nginx" | |
Remove-Item -Path "nginx.zip" | |
Remove-Item -Path "nginx-1.25.2" -Recurse -Force | |
# 下载前端 | |
$FRONTEND_VERSION = (Invoke-WebRequest -Uri "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest" | ConvertFrom-Json).tag_name | |
Invoke-WebRequest -Uri "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/$FRONTEND_VERSION/dist.zip" -OutFile "dist.zip" | |
Expand-Archive -Path "dist.zip" -DestinationPath "dist" | |
Move-Item -Path "dist/dist/*" -Destination "nginx/html" -Force | |
Remove-Item -Path "dist.zip" | |
Remove-Item -Path "dist" -Recurse -Force | |
Move-Item -Path "nginx/html/nginx.conf" -Destination "nginx/conf/nginx.conf" -Force | |
New-Item -Path "nginx/temp" -ItemType Directory -Force | |
New-Item -Path "nginx/temp/__keep__.txt" -ItemType File -Force | |
New-Item -Path "nginx/logs" -ItemType Directory -Force | |
New-Item -Path "nginx/logs/__keep__.txt" -ItemType File -Force | |
# 下载插件 jxxghp | |
Invoke-WebRequest -Uri "https://github.com/jxxghp/MoviePilot-Plugins/archive/refs/heads/main.zip" -OutFile "MoviePilot-Plugins-main.zip" | |
Expand-Archive -Path "MoviePilot-Plugins-main.zip" -DestinationPath "MoviePilot-Plugins-main" | |
Move-Item -Path "MoviePilot-Plugins-main/MoviePilot-Plugins-main/plugins/*" -Destination "app/plugins/" -Force -ErrorAction SilentlyContinue | |
Remove-Item -Path "MoviePilot-Plugins-main.zip" | |
Remove-Item -Path "MoviePilot-Plugins-main" -Recurse -Force | |
# 下载插件 thsrite | |
Invoke-WebRequest -Uri "https://github.com/thsrite/MoviePilot-Plugins/archive/refs/heads/main.zip" -OutFile "MoviePilot-Plugins-main.zip" | |
Expand-Archive -Path "MoviePilot-Plugins-main.zip" -DestinationPath "MoviePilot-Plugins-main" | |
Move-Item -Path "MoviePilot-Plugins-main/MoviePilot-Plugins-main/plugins/*" -Destination "app/plugins/" -Force -ErrorAction SilentlyContinue | |
Remove-Item -Path "MoviePilot-Plugins-main.zip" | |
Remove-Item -Path "MoviePilot-Plugins-main" -Recurse -Force | |
# 下载插件 honue | |
Invoke-WebRequest -Uri "https://github.com/honue/MoviePilot-Plugins/archive/refs/heads/main.zip" -OutFile "MoviePilot-Plugins-main.zip" | |
Expand-Archive -Path "MoviePilot-Plugins-main.zip" -DestinationPath "MoviePilot-Plugins-main" | |
Move-Item -Path "MoviePilot-Plugins-main/MoviePilot-Plugins-main/plugins/*" -Destination "app/plugins/" -Force -ErrorAction SilentlyContinue | |
Remove-Item -Path "MoviePilot-Plugins-main.zip" | |
Remove-Item -Path "MoviePilot-Plugins-main" -Recurse -Force | |
# 下载插件 InfinityPacer | |
Invoke-WebRequest -Uri "https://github.com/InfinityPacer/MoviePilot-Plugins/archive/refs/heads/main.zip" -OutFile "MoviePilot-Plugins-main.zip" | |
Expand-Archive -Path "MoviePilot-Plugins-main.zip" -DestinationPath "MoviePilot-Plugins-main" | |
Move-Item -Path "MoviePilot-Plugins-main/MoviePilot-Plugins-main/plugins/*" -Destination "app/plugins/" -Force -ErrorAction SilentlyContinue | |
Remove-Item -Path "MoviePilot-Plugins-main.zip" | |
Remove-Item -Path "MoviePilot-Plugins-main" -Recurse -Force | |
# 下载资源 | |
Invoke-WebRequest -Uri "https://github.com/jxxghp/MoviePilot-Resources/archive/refs/heads/main.zip" -OutFile "MoviePilot-Resources-main.zip" | |
Expand-Archive -Path "MoviePilot-Resources-main.zip" -DestinationPath "MoviePilot-Resources-main" | |
Move-Item -Path "MoviePilot-Resources-main/MoviePilot-Resources-main/resources/*" -Destination "app/helper/" -Force | |
Remove-Item -Path "MoviePilot-Resources-main.zip" | |
Remove-Item -Path "MoviePilot-Resources-main" -Recurse -Force | |
shell: pwsh | |
- name: Pyinstaller | |
run: | | |
pyinstaller frozen.spec | |
shell: pwsh | |
- name: Upload Windows File | |
uses: actions/upload-artifact@v3 | |
with: | |
name: windows | |
path: dist/MoviePilot.exe | |
Linux-build-amd64: | |
runs-on: ubuntu-latest | |
name: Build Linux Amd64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Init Python 3.11.4 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.11.4' | |
cache: 'pip' | |
- name: Install Dependent Packages | |
run: | | |
python -m pip install --upgrade pip | |
pip install wheel pyinstaller | |
pip install -r requirements.txt | |
find app/plugins -name requirements.txt -exec pip install -r {} \; | |
- name: Prepare Frontend | |
run: | | |
wget https://github.com/jxxghp/MoviePilot-Plugins/archive/refs/heads/main.zip | |
unzip main.zip | |
mv MoviePilot-Plugins-main/plugins/* app/plugins/ | |
rm main.zip | |
rm -rf MoviePilot-Plugins-main | |
wget https://github.com/jxxghp/MoviePilot-Resources/archive/refs/heads/main.zip | |
unzip main.zip | |
mv MoviePilot-Resources-main/resources/* app/helper/ | |
rm main.zip | |
rm -rf MoviePilot-Resources-main | |
- name: Pyinstaller | |
run: | | |
pyinstaller frozen.spec | |
mv dist/MoviePilot dist/MoviePilot_Amd64 | |
- name: Upload Linux File | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux-amd64 | |
path: dist/MoviePilot_Amd64 | |
Create-release: | |
permissions: write-all | |
runs-on: ubuntu-latest | |
needs: [ Windows-build, Docker-build, Linux-build-amd64] | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Release Version | |
id: release_version | |
run: | | |
app_version=$(cat version.py |sed -ne "s/APP_VERSION\s=\s'v\(.*\)'/\1/gp") | |
echo "app_version=$app_version" >> $GITHUB_ENV | |
- name: Download Artifact | |
uses: actions/download-artifact@v3 | |
- name: get release_informations | |
shell: bash | |
run: | | |
mkdir releases | |
mv ./windows/MoviePilot.exe ./releases/MoviePilot_Win_v${{ env.app_version }}.exe | |
mv ./linux-amd64/MoviePilot_Amd64 ./releases/MoviePilot_Amd64_v${{ env.app_version }} | |
- name: Create Release | |
id: create_release | |
uses: actions/create-release@latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v${{ env.app_version }} | |
release_name: v${{ env.app_version }} | |
body: ${{ github.event.commits[0].message }} | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
uses: dwenegar/upload-release-assets@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
release_id: ${{ steps.create_release.outputs.id }} | |
assets_path: | | |
./releases/ |