diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d12d4693c..0b29a49d8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,14 +1,11 @@ name: Build - -on: - push: - branches: - - release +on: workflow_dispatch jobs: build_unix: runs-on: ubuntu-latest outputs: + version_suffix: ${{ steps.version_suffix.outputs.version_suffix }} ytdlp_version: ${{ steps.bump_version.outputs.ytdlp_version }} upload_url: ${{ steps.create_release.outputs.upload_url }} sha256_bin: ${{ steps.sha256_bin.outputs.sha256_bin }} @@ -26,21 +23,32 @@ jobs: python-version: '3.8' - name: Install packages run: sudo apt-get -y install zip pandoc man + - name: Set version suffix + id: version_suffix + env: + PUSH_VERSION_COMMIT: ${{ secrets.PUSH_VERSION_COMMIT }} + if: "env.PUSH_VERSION_COMMIT == ''" + run: echo ::set-output name=version_suffix::$(date -u +"%H%M%S") - name: Bump version id: bump_version run: | - python devscripts/update-version.py + python devscripts/update-version.py ${{ steps.version_suffix.outputs.version_suffix }} make issuetemplates - - name: Update master - id: push_update + - name: Push to release + id: push_release run: | - git config --global user.email "${{ github.event.pusher.email }}" - git config --global user.name "${{ github.event.pusher.name }}" + git config --global user.name github-actions + git config --global user.email github-actions@example.com git add -u - git commit -m "[version] update" -m ":ci skip all" - git pull --rebase origin ${{ github.event.repository.master_branch }} - git push origin ${{ github.event.ref }}:${{ github.event.repository.master_branch }} + git commit -m "[version] update" -m "Created by: ${{ github.event.sender.login }}" -m ":ci skip all" + git push origin --force ${{ github.event.ref }}:release echo ::set-output name=head_sha::$(git rev-parse HEAD) + - name: Update master + id: push_master + env: + PUSH_VERSION_COMMIT: ${{ secrets.PUSH_VERSION_COMMIT }} + if: "env.PUSH_VERSION_COMMIT != ''" + run: git push origin ${{ github.event.ref }} - name: Get Changelog id: get_changelog run: | @@ -231,7 +239,9 @@ jobs: pip install "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-4.5.1-py3-none-any.whl" mutagen pycryptodomex websockets - name: Bump version id: bump_version - run: python devscripts/update-version.py + env: + version_suffix: ${{ needs.build_unix.outputs.version_suffix }} + run: python devscripts/update-version.py ${{ env.version_suffix }} - name: Build lazy extractors id: lazy_extractors run: python devscripts/make_lazy_extractors.py @@ -318,7 +328,9 @@ jobs: pip install "https://yt-dlp.github.io/Pyinstaller-Builds/i686/pyinstaller-4.5.1-py3-none-any.whl" mutagen pycryptodomex websockets - name: Bump version id: bump_version - run: python devscripts/update-version.py + env: + version_suffix: ${{ needs.build_unix.outputs.version_suffix }} + run: python devscripts/update-version.py ${{ env.version_suffix }} - name: Build lazy extractors id: lazy_extractors run: python devscripts/make_lazy_extractors.py diff --git a/Changelog.md b/Changelog.md index 7bb8c7888..f15377b4f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,10 +7,8 @@ * Update Changelog.md and CONTRIBUTORS * Change "Merged with ytdl" version in Readme.md if needed * Add new/fixed extractors in "new features" section of Readme.md -* Commit as `Release ` -* Push to origin/release using `git push origin master:release` - build task will now run - +* Commit as `Release ` and push to master +* Dispatch the workflow https://github.com/yt-dlp/yt-dlp/actions/workflows/build.yml on master --> diff --git a/README.md b/README.md index 1a5f84cc9..18cf3f8fe 100644 --- a/README.md +++ b/README.md @@ -288,7 +288,7 @@ Then simply run `make`. You can also run `make yt-dlp` instead to compile only t **Note**: In either platform, `devscripts/update-version.py` can be used to automatically update the version number -You can also fork the project on github and push it to a release branch in your fork for the [build workflow](https://github.com/yt-dlp/yt-dlp/blob/master/.github/workflows/build.yml) to automatically make a release for you +You can also fork the project on github and run your fork's [build workflow](.github/workflows/build.yml) to automatically build a release # USAGE AND OPTIONS diff --git a/devscripts/update-version.py b/devscripts/update-version.py index 770926f0c..0dc920b32 100644 --- a/devscripts/update-version.py +++ b/devscripts/update-version.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 from datetime import datetime +import sys import subprocess @@ -13,7 +14,10 @@ old_ver = '.'.join(old_version_list[:3]) old_rev = old_version_list[3] if len(old_version_list) > 3 else '' ver = datetime.utcnow().strftime("%Y.%m.%d") -rev = str(int(old_rev or 0) + 1) if old_ver == ver else '' + +rev = (sys.argv[1:] or [''])[0] # Use first argument, if present as revision number +if not rev: + rev = str(int(old_rev or 0) + 1) if old_ver == ver else '' VERSION = '.'.join((ver, rev)) if rev else ver diff --git a/yt_dlp/update.py b/yt_dlp/update.py index 9fadae90c..4225512e9 100644 --- a/yt_dlp/update.py +++ b/yt_dlp/update.py @@ -102,6 +102,7 @@ def run_update(ydl): return tuple(map(int, version_str.split('.'))) version_id = version_info['tag_name'] + ydl.to_screen(f'Latest version: {version_id}, Current version: {__version__}') if version_tuple(__version__) >= version_tuple(version_id): ydl.to_screen(f'yt-dlp is up to date ({__version__})') return