diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9b9187a..08b2aef 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -10,26 +10,16 @@ on: workflow_dispatch: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true jobs: setup_release: name: Setup Release outputs: - changelog_changes: ${{ steps.setup_release.outputs.changelog_changes }} - changelog_date: ${{ steps.setup_release.outputs.changelog_date }} - changelog_exists: ${{ steps.setup_release.outputs.changelog_exists }} - changelog_release_exists: ${{ steps.setup_release.outputs.changelog_release_exists }} - changelog_url: ${{ steps.setup_release.outputs.changelog_url }} - changelog_version: ${{ steps.setup_release.outputs.changelog_version }} - publish_pre_release: ${{ steps.setup_release.outputs.publish_pre_release }} publish_release: ${{ steps.setup_release.outputs.publish_release }} - publish_stable_release: ${{ steps.setup_release.outputs.publish_stable_release }} - release_body: ${{ steps.setup_release.outputs.release_body }} release_build: ${{ steps.setup_release.outputs.release_build }} release_commit: ${{ steps.setup_release.outputs.release_commit }} - release_generate_release_notes: ${{ steps.setup_release.outputs.release_generate_release_notes }} release_tag: ${{ steps.setup_release.outputs.release_tag }} release_version: ${{ steps.setup_release.outputs.release_version }} runs-on: ubuntu-latest @@ -39,7 +29,7 @@ jobs: - name: Setup Release id: setup_release - uses: LizardByte/setup-release-action@v2023.1210.1904 + uses: LizardByte/setup-release-action@v2024.520.193857 with: github_token: ${{ secrets.GITHUB_TOKEN }} @@ -54,8 +44,8 @@ jobs: with: path: Plugger.bundle - - name: Install Python - uses: LizardByte/setup-python-action@v2023.1210.35516 + - name: Set up Python + uses: LizardByte/setup-python-action@v2024.515.10401 with: python-version: '2.7' @@ -73,6 +63,11 @@ jobs: python -m pip install --upgrade --target=./Contents/Libraries/Shared -r \ requirements.txt --no-warn-script-location + - name: Compile Locale Translations + working-directory: Plugger.bundle + run: | + python ./scripts/_locale.py --compile + - name: Install npm packages working-directory: Plugger.bundle run: | @@ -80,18 +75,13 @@ jobs: mv ./node_modules ./Contents/Resources/web - name: Build plist + shell: bash working-directory: Plugger.bundle env: BUILD_VERSION: ${{ needs.setup_release.outputs.release_tag }} run: | python ./scripts/build_plist.py - - name: Test Plex Plugin - # todo - replace with pytest - working-directory: Plugger.bundle - run: | - python ./Contents/Code/__init__.py - - name: Package Release shell: bash run: | @@ -102,6 +92,8 @@ jobs: "-xr!plexhints*" \ "-xr!Plugger.bundle/.*" \ "-xr!Plugger.bundle/cache.sqlite" \ + "-xr!Plugger.bundle/codecov.yml" \ + "-xr!Plugger.bundle/crowdin.yml" \ "-xr!Plugger.bundle/DOCKER_README.md" \ "-xr!Plugger.bundle/Dockerfile" \ "-xr!Plugger.bundle/docs" \ @@ -122,14 +114,77 @@ jobs: - name: Create/Update GitHub Release if: ${{ needs.setup_release.outputs.publish_release == 'true' }} - uses: LizardByte/create-release-action@v2023.1210.832 + uses: LizardByte/create-release-action@v2024.520.193838 with: allowUpdates: true - body: '' discussionCategory: announcements generateReleaseNotes: true name: ${{ needs.setup_release.outputs.release_tag }} - # use pre-release for now - prerelease: true # ${{ needs.setup_release.outputs.publish_pre_release }} + prerelease: true tag: ${{ needs.setup_release.outputs.release_tag }} token: ${{ secrets.GH_BOT_TOKEN }} + + pytest: + needs: [build] + strategy: + fail-fast: false + matrix: + os: [windows-latest, ubuntu-latest, macos-latest] + + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: Plugger.bundle + + - name: Extract artifacts zip + shell: bash + run: | + # extract zip + 7z x Plugger.bundle.zip -o. + + # move all files from "Plugger.bundle" to root, with no target directory + cp -r ./Plugger.bundle/. . + + # remove zip + rm Plugger.bundle.zip + + - name: Set up Python + uses: LizardByte/setup-python-action@v2024.202.205923 + with: + python-version: '2.7' + + - name: Install python dependencies + shell: bash + run: | + python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade \ + pip setuptools wheel + python -m pip --no-python-version-warning --disable-pip-version-check install --no-build-isolation \ + -r requirements-dev.txt + + - name: Test with pytest + id: test + shell: bash + run: | + python -m pytest \ + -rxXs \ + --tb=native \ + --verbose \ + --cov=Contents/Code \ + tests + + - name: Upload coverage + # any except canceled or skipped + if: >- + always() && + (steps.test.outcome == 'success' || steps.test.outcome == 'failure') && + startsWith(github.repository, 'LizardByte/') + uses: codecov/codecov-action@v4 + with: + fail_ci_if_error: true + flags: ${{ runner.os }} + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ci-docker.yml b/.github/workflows/ci-docker.yml index 266da1a..03f909c 100644 --- a/.github/workflows/ci-docker.yml +++ b/.github/workflows/ci-docker.yml @@ -29,7 +29,7 @@ on: workflow_dispatch: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true jobs: @@ -102,19 +102,9 @@ jobs: needs: - check_dockerfiles outputs: - changelog_changes: ${{ steps.setup_release.outputs.changelog_changes }} - changelog_date: ${{ steps.setup_release.outputs.changelog_date }} - changelog_exists: ${{ steps.setup_release.outputs.changelog_exists }} - changelog_release_exists: ${{ steps.setup_release.outputs.changelog_release_exists }} - changelog_url: ${{ steps.setup_release.outputs.changelog_url }} - changelog_version: ${{ steps.setup_release.outputs.changelog_version }} - publish_pre_release: ${{ steps.setup_release.outputs.publish_pre_release }} publish_release: ${{ steps.setup_release.outputs.publish_release }} - publish_stable_release: ${{ steps.setup_release.outputs.publish_stable_release }} - release_body: ${{ steps.setup_release.outputs.release_body }} release_build: ${{ steps.setup_release.outputs.release_build }} release_commit: ${{ steps.setup_release.outputs.release_commit }} - release_generate_release_notes: ${{ steps.setup_release.outputs.release_generate_release_notes }} release_tag: ${{ steps.setup_release.outputs.release_tag }} release_version: ${{ steps.setup_release.outputs.release_version }} runs-on: ubuntu-latest @@ -124,7 +114,7 @@ jobs: - name: Setup Release id: setup_release - uses: LizardByte/setup-release-action@v2023.1210.1904 + uses: LizardByte/setup-release-action@v2024.520.181643 with: dotnet: ${{ needs.check_dockerfiles.outputs.dotnet }} github_token: ${{ secrets.GITHUB_TOKEN }} @@ -171,7 +161,7 @@ jobs: steps: - name: Maximize build space - uses: easimon/maximize-build-space@v8 + uses: easimon/maximize-build-space@v10 with: root-reserve-mb: 30720 # https://github.com/easimon/maximize-build-space#caveats remove-dotnet: 'true' @@ -287,7 +277,7 @@ jobs: id: buildx - name: Cache Docker Layers - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: /tmp/.buildx-cache key: Docker-buildx${{ matrix.tag }}-${{ github.sha }} @@ -373,21 +363,20 @@ jobs: - name: Create/Update GitHub Release if: ${{ needs.setup_release.outputs.publish_release == 'true' && steps.prepare.outputs.artifacts == 'true' }} - uses: LizardByte/create-release-action@v2023.1210.832 + uses: LizardByte/create-release-action@v2024.520.180003 with: allowUpdates: true artifacts: "*artifacts/*" - body: '' discussionCategory: announcements generateReleaseNotes: true name: ${{ needs.setup_release.outputs.release_tag }} - prerelease: ${{ needs.setup_release.outputs.publish_pre_release }} + prerelease: true tag: ${{ needs.setup_release.outputs.release_tag }} token: ${{ secrets.GH_BOT_TOKEN }} - name: Update Docker Hub Description if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} - uses: peter-evans/dockerhub-description@v3 + uses: peter-evans/dockerhub-description@v4 with: username: ${{ secrets.DOCKER_HUB_USERNAME }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} # token is not currently supported diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml deleted file mode 100644 index c2e9206..0000000 --- a/.github/workflows/python-tests.yml +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Python Tests - -on: - pull_request: - branches: [master, nightly] - types: [opened, synchronize, reopened] - -jobs: - pytest: - strategy: - fail-fast: false - matrix: - os: [windows-latest, ubuntu-latest, macos-latest] - - runs-on: ${{ matrix.os }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Python - uses: LizardByte/action-setup-python@master - with: - python-version: '2.7' - - - name: Install python dependencies - shell: bash - run: | - python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade \ - pip setuptools wheel - python -m pip --no-python-version-warning --disable-pip-version-check install -r requirements-dev.txt - python -m pip --no-python-version-warning --disable-pip-version-check install \ - --target=./Contents/Libraries/Shared -r requirements.txt --no-warn-script-location - - - name: Test with pytest - shell: bash # our Python 2.7 setup action doesn't support PowerShell - run: | - python -m pytest -v