Skip to content

Create release

Create release #30

Workflow file for this run

name: Create release
on: [workflow_dispatch]
jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Install Hatch
run: pipx install hatch
- name: Set variables
id: set_variables
run: |
tag="$(git describe --tags --abbrev=0)"
echo "::group::Variables"
cat << EOF | tee -a "$GITHUB_OUTPUT"
tag=${tag}
version=$(hatch project metadata | jq -r .version)
project_name=$(hatch project metadata | jq -r .name)
EOF
echo "::endgroup::"
- name: Get Changelog Entry
id: changelog_reader
uses: mindsers/changelog-reader-action@v2
with:
validation_level: error
version: ${{ steps.set_variables.outputs.version }}
path: ./CHANGELOG.md
- name: Bundle release
env:
GH_TOKEN: ${{ github.token }}
tag: ${{ steps.set_variables.outputs.tag }}
version: v${{ steps.set_variables.outputs.version }}
if: |
env.tag != env.version
run: |
sources="$(\
hatch run default:pip list --verbose --format json \
| jq -r '.[] | select(.editable_project_location == null) | "\(.name);\(.location)"' \
)"
echo "::group::Dependencies"
printf '%s\n' "${sources}"
echo "::endgroup::"
mkdir bundle/
cp -r yt_dlp_plugins bundle/
while IFS=';' read -r name path; do
if [[ ! "${name}" =~ ^(pip|setuptools|wheel|yt-dlp)$ ]]; then
package_name="$(tr '[:upper:]' '[:lower:]' <<<"${name}" | sed 's/-/_/g')"
cp -r "${path}/${package_name}" bundle/
fi
done <<<"${sources}"
cd bundle/
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
zip -9 --recurse-paths "${{ steps.set_variables.outputs.project_name }}" *
- name: Create release
uses: ncipollo/release-action@v1
with:
tag: v${{ steps.set_variables.outputs.version }}
name: ${{ steps.set_variables.outputs.project_name }} v${{ steps.set_variables.outputs.version }}
body: ${{ steps.changelog_reader.outputs.changes }}
makeLatest: true
artifacts: bundle/${{ steps.set_variables.outputs.project_name }}.zip
release_pypi:
runs-on: ubuntu-latest
permissions:
id-token: write # mandatory for trusted publishing
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build hatchling
- name: Build
run: |
rm -rf dist/*
printf '%s\n\n' \
'Official repository: <https://github.com/coletdjnz/yt-dlp-get-pot>' > ./README.md.new
cat ./README.md >> ./README.md.new && mv -f ./README.md.new ./README.md
python -m build --no-isolation .
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true