Release #6
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |