mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:20:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			130 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
name: Release
 | 
						|
on: workflow_dispatch
 | 
						|
permissions:
 | 
						|
  contents: read
 | 
						|
 | 
						|
jobs:
 | 
						|
  prepare:
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
    runs-on: ubuntu-latest
 | 
						|
    outputs:
 | 
						|
      version: ${{ steps.update_version.outputs.version }}
 | 
						|
      head_sha: ${{ steps.push_release.outputs.head_sha }}
 | 
						|
 | 
						|
    steps:
 | 
						|
      - uses: actions/checkout@v3
 | 
						|
        with:
 | 
						|
          fetch-depth: 0
 | 
						|
 | 
						|
      - uses: actions/setup-python@v4
 | 
						|
        with:
 | 
						|
          python-version: "3.10"
 | 
						|
 | 
						|
      - name: Update version
 | 
						|
        id: update_version
 | 
						|
        run: |
 | 
						|
          python devscripts/update-version.py ${{ vars.PUSH_VERSION_COMMIT == '' && '"$(date -u +"%H%M%S")"' || '' }} | \
 | 
						|
            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
 | 
						|
        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
 | 
						|
          echo "head_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
 | 
						|
 | 
						|
      - name: Update master
 | 
						|
        if: vars.PUSH_VERSION_COMMIT != ''
 | 
						|
        run: git push origin ${{ github.event.ref }}
 | 
						|
 | 
						|
  publish_pypi_homebrew:
 | 
						|
    needs: prepare
 | 
						|
    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 != ''
 | 
						|
        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 != ''
 | 
						|
        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 != ''
 | 
						|
        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
 | 
						|
 | 
						|
  build:
 | 
						|
    needs: prepare
 | 
						|
    uses: ./.github/workflows/build.yml
 | 
						|
    with:
 | 
						|
      version: ${{ needs.prepare.outputs.version }}
 | 
						|
    permissions:
 | 
						|
      contents: read
 | 
						|
      packages: write # For package cache
 | 
						|
    secrets:
 | 
						|
      GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }}
 | 
						|
 | 
						|
  publish:
 | 
						|
    needs: [prepare, build]
 | 
						|
    uses: ./.github/workflows/publish.yml
 | 
						|
    permissions:
 | 
						|
      contents: write
 | 
						|
    with:
 | 
						|
      version: ${{ needs.prepare.outputs.version }}
 | 
						|
      target_commitish: ${{ needs.prepare.outputs.head_sha }}
 |