Skip to content
This repository has been archived by the owner on Aug 9, 2024. It is now read-only.

ci: use prerelease logic #497

ci: use prerelease logic

ci: use prerelease logic #497

Workflow file for this run

---
name: CI
on:
pull_request:
branches: [master]
types: [opened, synchronize, reopened]
push:
branches: [master]
workflow_dispatch:
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
jobs:
setup_release:
name: Setup Release
outputs:
publish_release: ${{ steps.setup_release.outputs.publish_release }}
release_build: ${{ steps.setup_release.outputs.release_build }}
release_commit: ${{ steps.setup_release.outputs.release_commit }}
release_tag: ${{ steps.setup_release.outputs.release_tag }}
release_version: ${{ steps.setup_release.outputs.release_version }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Release
id: setup_release
uses: LizardByte/setup-release-action@v2024.520.193857
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
pytest:
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
python: ["2.7"]
docker: [false]
include:
- os: ubuntu-latest
python: "2.7"
docker: true
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Bootstrap Plex server
id: bootstrap
uses: ./
with:
use_docker: ${{ matrix.docker }}
expose_plex_data_files_for_docker: ${{ matrix.docker }}
- name: Set up Python
uses: LizardByte/setup-python-action@v2024.515.10401
with:
python-version: ${{ matrix.python }}
- name: Install python dependencies
shell: bash
run: |
python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade \
pip setuptools wheel
# install requirements
if [[ "${{ matrix.python }}" == "2.7" ]]; then
# required for building PyYAML on macos-14 runner
python -m pip install "Cython<3.0.0"
fi
python -m pip install --no-build-isolation -e .
python -m pip install --upgrade -r requirements-dev.txt
- name: Test with pytest
env:
PLEXAPI_AUTH_SERVER_BASEURL: ${{ steps.bootstrap.outputs.PLEX_SERVER_BASEURL }}
PLEXTOKEN: ${{ steps.bootstrap.outputs.PLEXTOKEN }}
PLEX_APP_DATA_PATH: ${{ steps.bootstrap.outputs.PLEX_APP_DATA_PATH }}
PLEX_PLUGIN_LOG_PATH: ${{ steps.bootstrap.outputs.PLEX_PLUGIN_LOG_PATH }}
PLEX_PLUGIN_PATH: ${{ steps.bootstrap.outputs.PLEX_PLUGIN_PATH }}
id: test
shell: bash
run: |
python -m pytest \
-rxXs \
--tb=native \
--verbose \
--cov=Contents/Code \
--cov=plexhints \
tests
- name: Upload coverage
# any except canceled or skipped
if: >-
always() &&
(steps.test.outcome == 'success' || steps.test.outcome == 'failure') &&
(matrix.docker == false)
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: true
flags: Python-${{ matrix.python }}-${{ runner.os }}
token: ${{ secrets.CODECOV_TOKEN }}
build:
needs:
- setup_release
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: LizardByte/setup-python-action@v2024.515.10401
with:
python-version: '2.7'
- name: Set up Python Dependencies
run: |
echo "Installing Requirements"
python --version
python -m pip --no-python-version-warning --disable-pip-version-check install --upgrade \
pip setuptools twine wheel
# install python requirements
python -m pip install -e .
python -m pip install --upgrade -r requirements-dev.txt
- name: build
env:
BUILD_VERSION: ${{ needs.setup_release.outputs.release_tag }}
run: |
python setup.py sdist bdist_wheel
- name: Verify README
# https://packaging.python.org/guides/making-a-pypi-friendly-readme/#validating-restructuredtext-markup
run: |
python -m twine check dist/*
- name: Install builds
run: |
echo "::group::Installing tar.gz dist"
python -m pip install --upgrade dist/*.tar.gz
echo "::endgroup::"
echo "::group::Installing wheel dist"
python -m pip install --upgrade dist/*.whl
echo "::endgroup::"
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: dist
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
path: dist
publish:
name: Publish
if: >-
(github.event_name == 'push' && github.ref == 'refs/heads/master') ||
(github.event_name == 'workflow_dispatch')
needs:
- setup_release
- build
runs-on: ubuntu-latest
environment:
name: publish
url: https://pypi.org/p/plexhints
permissions:
id-token: write
steps:
- name: Download dist artifacts
# this will be published to PyPI
uses: actions/download-artifact@v3
with:
name: dist
path: dist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
- name: Create/Update GitHub Release
if: ${{ needs.setup_release.outputs.publish_release == 'true' }}
uses: LizardByte/create-release-action@v2024.520.193838
with:
allowUpdates: false
artifacts: "${{ github.workspace }}/dist/*"
discussionCategory: announcements
generateReleaseNotes: true
name: ${{ needs.setup_release.outputs.release_tag }}
prerelease: true
tag: ${{ needs.setup_release.outputs.release_tag }}
token: ${{ secrets.GH_BOT_TOKEN }}