mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-14 14:46:50 +01:00
c4efa0aefe
- Wait for build before publishing to PyPI - Do not run `meta_files` job if release is cancelled - Customizable channel in release workflow - Display badges above changelog Authored by: bashonly, Grub4K
164 lines
5.3 KiB
YAML
164 lines
5.3 KiB
YAML
name: Release
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: Version tag (YYYY.MM.DD[.REV])
|
|
required: false
|
|
default: ''
|
|
type: string
|
|
channel:
|
|
description: Update channel (stable/nightly/...)
|
|
required: false
|
|
default: ''
|
|
type: string
|
|
prerelease:
|
|
description: Pre-release
|
|
default: false
|
|
type: boolean
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
prepare:
|
|
permissions:
|
|
contents: write
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
channel: ${{ steps.set_channel.outputs.channel }}
|
|
version: ${{ steps.update_version.outputs.version }}
|
|
head_sha: ${{ steps.get_target.outputs.head_sha }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10"
|
|
|
|
- name: Set channel
|
|
id: set_channel
|
|
run: |
|
|
CHANNEL="${{ github.repository == 'yt-dlp/yt-dlp' && 'stable' || github.repository }}"
|
|
echo "channel=${{ inputs.channel || '$CHANNEL' }}" > "$GITHUB_OUTPUT"
|
|
|
|
- name: Update version
|
|
id: update_version
|
|
run: |
|
|
REVISION="${{ vars.PUSH_VERSION_COMMIT == '' && '$(date -u +"%H%M%S")' || '' }}"
|
|
REVISION="${{ inputs.prerelease && '$(date -u +"%H%M%S")' || '$REVISION' }}"
|
|
python devscripts/update-version.py ${{ inputs.version || '$REVISION' }} | \
|
|
grep -Po "version=\d+\.\d+\.\d+(\.\d+)?" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Update documentation
|
|
run: |
|
|
make doc
|
|
sed '/### /Q' Changelog.md >> ./CHANGELOG
|
|
echo '### ${{ steps.update_version.outputs.version }}' >> ./CHANGELOG
|
|
python ./devscripts/make_changelog.py -vv -c >> ./CHANGELOG
|
|
echo >> ./CHANGELOG
|
|
grep -Poz '(?s)### \d+\.\d+\.\d+.+' 'Changelog.md' | head -n -1 >> ./CHANGELOG
|
|
cat ./CHANGELOG > Changelog.md
|
|
|
|
- name: Push to release
|
|
id: push_release
|
|
if: ${{ !inputs.prerelease }}
|
|
run: |
|
|
git config --global user.name github-actions
|
|
git config --global user.email github-actions@example.com
|
|
git add -u
|
|
git commit -m "Release ${{ steps.update_version.outputs.version }}" \
|
|
-m "Created by: ${{ github.event.sender.login }}" -m ":ci skip all :ci run dl"
|
|
git push origin --force ${{ github.event.ref }}:release
|
|
|
|
- name: Get target commitish
|
|
id: get_target
|
|
run: |
|
|
echo "head_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Update master
|
|
if: vars.PUSH_VERSION_COMMIT != '' && !inputs.prerelease
|
|
run: git push origin ${{ github.event.ref }}
|
|
|
|
build:
|
|
needs: prepare
|
|
uses: ./.github/workflows/build.yml
|
|
with:
|
|
version: ${{ needs.prepare.outputs.version }}
|
|
channel: ${{ needs.prepare.outputs.channel }}
|
|
permissions:
|
|
contents: read
|
|
packages: write # For package cache
|
|
secrets:
|
|
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
|
|
|
|
publish_pypi_homebrew:
|
|
needs: [prepare, build]
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.10"
|
|
|
|
- name: Install Requirements
|
|
run: |
|
|
sudo apt-get -y install pandoc man
|
|
python -m pip install -U pip setuptools wheel twine
|
|
python -m pip install -U -r requirements.txt
|
|
|
|
- name: Prepare
|
|
run: |
|
|
python devscripts/update-version.py ${{ needs.prepare.outputs.version }}
|
|
python devscripts/make_lazy_extractors.py
|
|
|
|
- name: Build and publish on PyPI
|
|
env:
|
|
TWINE_USERNAME: __token__
|
|
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
|
if: env.TWINE_PASSWORD != '' && !inputs.prerelease
|
|
run: |
|
|
rm -rf dist/*
|
|
make pypi-files
|
|
python devscripts/set-variant.py pip -M "You installed yt-dlp with pip or using the wheel from PyPi; Use that to update"
|
|
python setup.py sdist bdist_wheel
|
|
twine upload dist/*
|
|
|
|
- name: Checkout Homebrew repository
|
|
env:
|
|
BREW_TOKEN: ${{ secrets.BREW_TOKEN }}
|
|
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
if: env.BREW_TOKEN != '' && env.PYPI_TOKEN != '' && !inputs.prerelease
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: yt-dlp/homebrew-taps
|
|
path: taps
|
|
ssh-key: ${{ secrets.BREW_TOKEN }}
|
|
|
|
- name: Update Homebrew Formulae
|
|
env:
|
|
BREW_TOKEN: ${{ secrets.BREW_TOKEN }}
|
|
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
|
|
if: env.BREW_TOKEN != '' && env.PYPI_TOKEN != '' && !inputs.prerelease
|
|
run: |
|
|
python devscripts/update-formulae.py taps/Formula/yt-dlp.rb "${{ needs.prepare.outputs.version }}"
|
|
git -C taps/ config user.name github-actions
|
|
git -C taps/ config user.email github-actions@example.com
|
|
git -C taps/ commit -am 'yt-dlp: ${{ needs.prepare.outputs.version }}'
|
|
git -C taps/ push
|
|
|
|
publish:
|
|
needs: [prepare, build]
|
|
uses: ./.github/workflows/publish.yml
|
|
permissions:
|
|
contents: write
|
|
with:
|
|
channel: ${{ needs.prepare.outputs.channel }}
|
|
prerelease: ${{ inputs.prerelease }}
|
|
version: ${{ needs.prepare.outputs.version }}
|
|
target_commitish: ${{ needs.prepare.outputs.head_sha }}
|