From 5c5014be0c5797ea0541b0a4db53e8c5bfe7e693 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Thu, 17 Feb 2022 16:15:34 +0900 Subject: [PATCH 1/8] [build] add file --- .github/workflows/build.yml | 187 ++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..a5d6414ba --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,187 @@ +name: Build + +on: + workflow_dispatch: + schedule: + - cron: "0 2 * * *" + +jobs: + build_unix: + runs-on: ubuntu-latest + outputs: + version_suffix: ${{ steps.version_suffix.outputs.version_suffix }} + ytdl_version: ${{ steps.bump_version.outputs.ytdl_version }} + upload_url: ${{ steps.create_release.outputs.upload_url }} + sha256_bin: ${{ steps.sha256_bin.outputs.sha256_bin }} + sha512_bin: ${{ steps.sha512_bin.outputs.sha512_bin }} + sha256_tar: ${{ steps.sha256_tar.outputs.sha256_tar }} + sha512_tar: ${{ steps.sha512_tar.outputs.sha512_tar }} + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + - name: Install packages + run: sudo apt-get -y install zip pandoc man + - name: Set version suffix + id: version_suffix + run: echo ::set-output name=version_suffix::114514 + - name: Bump version + id: bump_version + run: | + python devscripts/update-version.py ${{ steps.version_suffix.outputs.version_suffix }} + make issuetemplates + - name: Push to release + id: push_release + run: echo ::set-output name=head_sha::$(git rev-parse HEAD) + - name: Get Changelog + id: get_changelog + run: | + changelog=$(cat Changelog.md | grep -oPz '(?s)(?<=### ${{ steps.bump_version.outputs.ytdl_version }}\n{2}).+?(?=\n{2,3}###)') || true + echo "changelog<> $GITHUB_ENV + echo "$changelog" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + + - name: Run Make + run: make all tar + - name: Get SHA2-256SUMS for youtube-dl + id: sha256_bin + run: echo "::set-output name=sha256_bin::$(sha256sum youtube-dl | awk '{print $1}')" + - name: Get SHA2-256SUMS for youtube-dl.tar.gz + id: sha256_tar + run: echo "::set-output name=sha256_tar::$(sha256sum youtube-dl.tar.gz | awk '{print $1}')" + - name: Get SHA2-512SUMS for youtube-dl + id: sha512_bin + run: echo "::set-output name=sha512_bin::$(sha512sum youtube-dl | awk '{print $1}')" + - name: Get SHA2-512SUMS for youtube-dl.tar.gz + id: sha512_tar + run: echo "::set-output name=sha512_tar::$(sha512sum youtube-dl.tar.gz | awk '{print $1}')" + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.bump_version.outputs.ytdl_version }} + release_name: youtube-dl ${{ steps.bump_version.outputs.ytdl_version }} + commitish: ${{ steps.push_release.outputs.head_sha }} + body: This is a daily build of youtube-dl. + draft: false + prerelease: false + - name: Upload youtube-dl Unix binary + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./youtube-dl + asset_name: youtube-dl + asset_content_type: application/octet-stream + - name: Upload Source tar + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./youtube-dl.tar.gz + asset_name: youtube-dl-${{ steps.bump_version.outputs.ytdl_version }}.tar.gz + asset_content_type: application/gzip + + build_windows: + runs-on: windows-2022 + needs: build_unix + outputs: + sha256_win: ${{ steps.sha256_win.outputs.sha256_win }} + sha512_win: ${{ steps.sha512_win.outputs.sha512_win }} + + steps: + - uses: actions/checkout@v2 + # reason to choose 3.4: https://media.discordapp.net/attachments/807245652072857613/942409077701619742/unknown.png + - name: Set up Python 3.4 + uses: actions/setup-python@v2 + with: + python-version: '3.4' + architecture: 'x86' + - name: Install packages + # https://setuptools.pypa.io/en/latest/history.html#v44-0-0 + # https://pypi.org/project/py2exe/0.9.2.2/ + # https://pip.pypa.io/en/stable/news/#v19-2 + # https://wheel.readthedocs.io/en/stable/news.html + run: python -m pip install --upgrade "pip<19.2" "setuptools<44" "wheel<0.34.0" py2exe==0.9.2.2 + - name: Bump version + id: bump_version + env: + version_suffix: ${{ needs.build_unix.outputs.version_suffix }} + run: python devscripts/update-version.py ${{ env.version_suffix }} + # - name: Run PyInstaller Script + # run: python -m PyInstaller --onefile --console --distpath dist/ -n youtube-dl youtube_dl\__main__.py + - name: Build EXE file + run: python setup.py py2exe + - name: Upload youtube-dl.exe Windows binary + id: upload-release-windows + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.build_unix.outputs.upload_url }} + asset_path: ./youtube-dl.exe + asset_name: youtube-dl.exe + asset_content_type: application/vnd.microsoft.portable-executable + - name: Get SHA2-256SUMS for youtube-dl.exe + id: sha256_win + run: echo "::set-output name=sha256_win::$((Get-FileHash youtube-dl.exe -Algorithm SHA256).Hash.ToLower())" + - name: Get SHA2-512SUMS for youtube-dl.exe + id: sha512_win + run: echo "::set-output name=sha512_win::$((Get-FileHash youtube-dl.exe -Algorithm SHA512).Hash.ToLower())" + + finish: + runs-on: ubuntu-latest + needs: [build_unix, build_windows] + env: + YTDL_VERSION: ${{ needs.build_unix.outputs.ytdl_version }} + + steps: + - name: Make SHA2-256SUMS file + env: + SHA256_BIN: ${{ needs.build_unix.outputs.sha256_bin }} + SHA256_TAR: ${{ needs.build_unix.outputs.sha256_tar }} + SHA256_WIN: ${{ needs.build_windows.outputs.sha256_win }} + run: | + echo "${{ env.SHA256_BIN }} youtube-dl" >> SHA2-256SUMS + echo "${{ env.SHA256_TAR }} youtube-dl-${YTDL_VERSION}.tar.gz" >> SHA2-256SUMS + echo "${{ env.SHA256_WIN }} youtube-dl.exe" >> SHA2-256SUMS + - name: Upload 256SUMS file + id: upload-sums + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.build_unix.outputs.upload_url }} + asset_path: ./SHA2-256SUMS + asset_name: SHA2-256SUMS + asset_content_type: text/plain + - name: Make SHA2-512SUMS file + env: + SHA512_BIN: ${{ needs.build_unix.outputs.sha512_bin }} + SHA512_TAR: ${{ needs.build_unix.outputs.sha512_tar }} + SHA512_WIN: ${{ needs.build_windows.outputs.sha512_win }} + run: | + echo "${{ env.SHA512_BIN }} youtube-dl" >> SHA2-512SUMS + echo "${{ env.SHA512_TAR }} youtube-dl-${YTDL_VERSION}.tar.gz" >> SHA2-512SUMS + echo "${{ env.SHA512_WIN }} youtube-dl.exe" >> SHA2-512SUMS + - name: Upload 512SUMS file + id: upload-512sums + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.build_unix.outputs.upload_url }} + asset_path: ./SHA2-512SUMS + asset_name: SHA2-512SUMS + asset_content_type: text/plain From 41bec3409d2c8a270ad11f0f222931a24c37681c Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Thu, 17 Feb 2022 16:20:14 +0900 Subject: [PATCH 2/8] add update-version.py --- devscripts/update-version.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 devscripts/update-version.py diff --git a/devscripts/update-version.py b/devscripts/update-version.py new file mode 100644 index 000000000..ce8d66ee6 --- /dev/null +++ b/devscripts/update-version.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 +from datetime import datetime +import sys + + +with open('youtube_dl/version.py', 'rt') as f: + exec(compile(f.read(), 'youtube_dl/version.py', 'exec')) +old_version = locals()['__version__'] + +old_version_list = old_version.split('.') + +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 = (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 + +VERSION_FILE = '''# Autogenerated by devscripts/update-version.py + +__version__ = {!r} +'''.format(VERSION) + +with open('youtube_dl/version.py', 'wt') as f: + f.write(VERSION_FILE) + +print('::set-output name=ytdl_version::' + VERSION) +print('\nVersion = %s' % VERSION) From 157f272b0f85a53106d6aef656885d94e85074e1 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Thu, 17 Feb 2022 16:28:51 +0900 Subject: [PATCH 3/8] chnagelog --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5d6414ba..3d3542dd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,7 +70,7 @@ jobs: tag_name: ${{ steps.bump_version.outputs.ytdl_version }} release_name: youtube-dl ${{ steps.bump_version.outputs.ytdl_version }} commitish: ${{ steps.push_release.outputs.head_sha }} - body: This is a daily build of youtube-dl. + body: ${{ env.changelog }} draft: false prerelease: false - name: Upload youtube-dl Unix binary From 11fcef99197786efced4a08a471d72ff521be900 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Thu, 17 Feb 2022 16:29:21 +0900 Subject: [PATCH 4/8] filename --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3d3542dd8..bd0b37388 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: - name: Get Changelog id: get_changelog run: | - changelog=$(cat Changelog.md | grep -oPz '(?s)(?<=### ${{ steps.bump_version.outputs.ytdl_version }}\n{2}).+?(?=\n{2,3}###)') || true + changelog=$(cat ChangeLog | grep -oPz '(?s)(?<=### ${{ steps.bump_version.outputs.ytdl_version }}\n{2}).+?(?=\n{2,3}###)') || true echo "changelog<> $GITHUB_ENV echo "$changelog" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV From 0e75609ddc2f635004f3be8646e7bae94fa5990c Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Thu, 17 Feb 2022 16:33:03 +0900 Subject: [PATCH 5/8] future --- devscripts/update-version.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/devscripts/update-version.py b/devscripts/update-version.py index ce8d66ee6..f317672c8 100644 --- a/devscripts/update-version.py +++ b/devscripts/update-version.py @@ -1,4 +1,6 @@ #!/usr/bin/env python3 +from __future__ import unicode_literals + from datetime import datetime import sys From 5a854e61d335788348dbba822a6444b619b6f500 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Sun, 20 Feb 2022 18:03:55 +0900 Subject: [PATCH 6/8] partially reverted the part to give .114514 in its version --- .github/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bd0b37388..a848020df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,10 @@ jobs: run: sudo apt-get -y install zip pandoc man - name: Set version suffix id: version_suffix - run: echo ::set-output name=version_suffix::114514 + 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: | From 393ef9e73d7739915eddb5172c582459e4d609fc Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Sun, 20 Feb 2022 18:09:38 +0900 Subject: [PATCH 7/8] handle youtube-dl's ChangeLog file correctly (partially tested) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a848020df..6ef7ecbb2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - name: Get Changelog id: get_changelog run: | - changelog=$(cat ChangeLog | grep -oPz '(?s)(?<=### ${{ steps.bump_version.outputs.ytdl_version }}\n{2}).+?(?=\n{2,3}###)') || true + changelog=$(cat ChangeLog | grep -oPz '(?s)(?<=version ${{ steps.bump_version.outputs.ytdl_version }}\n{2}).+?(?=\n{2,3}version)') || true echo "changelog<> $GITHUB_ENV echo "$changelog" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV From 9d679fabe0671988436731701f6cd50ff31bc9b8 Mon Sep 17 00:00:00 2001 From: Lesmiscore Date: Sun, 20 Feb 2022 18:10:56 +0900 Subject: [PATCH 8/8] trigger build only by workflow_dispatch --- .github/workflows/build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6ef7ecbb2..5ca706b3f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,9 +1,6 @@ name: Build -on: - workflow_dispatch: - schedule: - - cron: "0 2 * * *" +on: workflow_dispatch jobs: build_unix: