diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.gitea/ISSUE_TEMPLATE/bug_report.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.yml rename to .gitea/ISSUE_TEMPLATE/bug_report.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.gitea/ISSUE_TEMPLATE/config.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/config.yml rename to .gitea/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.gitea/ISSUE_TEMPLATE/feature_request.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .gitea/ISSUE_TEMPLATE/feature_request.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 00000000..00fd42e9 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,68 @@ +name: MoviePilot Builder +on: + workflow_dispatch: + push: + branches: + - main +# paths: +# - version.py + +env: + REGISTRY: ${{ secrets.DOCKER_REGISTRY && secrets.DOCKER_REGISTRY || 'docker.io' }} + REGISTRY_MIRROR: ${{ secrets.DOCKER_REGISTRY_MIRROR && secrets.DOCKER_REGISTRY_MIRROR || 'docker.io' }} + REPOSITORY: ${{ github.repository }} + RUNNER_TOOL_CACHE: /toolcache + BASEIMAGE: ${{ secrets.BASEIMAGE && secrets.BASEIMAGE || '' }} + + +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: actions/metadata-action@v5 + with: + images: gitea.icodef.com/codfrm/moviepilot + tags: | + type=raw,value=${{ env.app_version }} + type=raw,value=latest + + - name: Set Up QEMU + uses: actions/setup-qemu-action@v3 + + - name: Set Up Buildx + uses: actions/setup-buildx-action@v3 + + - name: Login DockerHub + uses: actions/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Build Image + uses: actions/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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 7a5a2a1a..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,231 +0,0 @@ -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/