123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- 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 }}
|