v1.8.7 #219
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: | | |
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 | |
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 | |
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 | |
- 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/ |