forked from yt-dlp/yt-dlp
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[build] Automated builds and nightly releases (yt-dlp#6220)
Closes yt-dlp#1839 Authored by: Grub4K, bashonly Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
- Loading branch information
1 parent
4f80a99
commit ff3038f
Showing
9 changed files
with
559 additions
and
340 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
name: Publish | ||
on: | ||
workflow_call: | ||
inputs: | ||
nightly: | ||
default: false | ||
required: false | ||
type: boolean | ||
version: | ||
required: true | ||
type: string | ||
target_commitish: | ||
required: true | ||
type: string | ||
secrets: | ||
ARCHIVE_REPO_TOKEN: | ||
required: false | ||
|
||
permissions: | ||
contents: write | ||
|
||
jobs: | ||
publish: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/download-artifact@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: "3.10" | ||
|
||
- name: Generate release notes | ||
run: | | ||
cat >> ./RELEASE_NOTES << EOF | ||
#### A description of the various files are in the [README](https://github.com/yt-dlp/yt-dlp#release-files) | ||
--- | ||
<details><summary><h3>Changelog</h3></summary> | ||
$(python ./devscripts/make_changelog.py -vv) | ||
</details> | ||
EOF | ||
echo "**This is an automated nightly pre-release build**" >> ./PRERELEASE_NOTES | ||
cat ./RELEASE_NOTES >> ./PRERELEASE_NOTES | ||
echo "Generated from: https://github.com/${{ github.repository }}/commit/${{ inputs.target_commitish }}" >> ./ARCHIVE_NOTES | ||
cat ./RELEASE_NOTES >> ./ARCHIVE_NOTES | ||
- name: Archive nightly release | ||
env: | ||
GH_TOKEN: ${{ secrets.ARCHIVE_REPO_TOKEN }} | ||
GH_REPO: ${{ vars.ARCHIVE_REPO }} | ||
if: | | ||
inputs.nightly && env.GH_TOKEN != '' && env.GH_REPO != '' | ||
run: | | ||
gh release create \ | ||
--notes-file ARCHIVE_NOTES \ | ||
--title "Build ${{ inputs.version }}" \ | ||
${{ inputs.version }} \ | ||
artifact/* | ||
- name: Prune old nightly release | ||
if: inputs.nightly | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: | | ||
gh release delete --yes --cleanup-tag "nightly" || true | ||
git tag --delete "nightly" || true | ||
sleep 5 # Enough time to cover deletion race condition | ||
- name: Publish release${{ inputs.nightly && ' (nightly)' || '' }} | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: | | ||
gh release create \ | ||
--notes-file ${{ inputs.nightly && 'PRE' || '' }}RELEASE_NOTES \ | ||
--target ${{ inputs.target_commitish }} \ | ||
--title "yt-dlp ${{ inputs.nightly && 'nightly ' || '' }}${{ inputs.version }}" \ | ||
${{ inputs.nightly && '--prerelease "nightly"' || inputs.version }} \ | ||
artifact/* |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
name: Release (nightly) | ||
on: | ||
push: | ||
branches: | ||
- master | ||
paths: | ||
- "**.py" | ||
- "!yt_dlp/version.py" | ||
concurrency: | ||
group: release-nightly | ||
cancel-in-progress: true | ||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
prepare: | ||
if: vars.BUILD_NIGHTLY != '' | ||
runs-on: ubuntu-latest | ||
outputs: | ||
version: ${{ steps.get_version.outputs.version }} | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Get version | ||
id: get_version | ||
run: | | ||
python devscripts/update-version.py "$(date -u +"%H%M%S")" | grep -Po "version=\d+(\.\d+){3}" >> "$GITHUB_OUTPUT" | ||
build: | ||
needs: prepare | ||
uses: ./.github/workflows/build.yml | ||
with: | ||
version: ${{ needs.prepare.outputs.version }} | ||
channel: nightly | ||
permissions: | ||
contents: read | ||
packages: write # For package cache | ||
|
||
publish: | ||
needs: [prepare, build] | ||
uses: ./.github/workflows/publish.yml | ||
secrets: | ||
ARCHIVE_REPO_TOKEN: ${{ secrets.ARCHIVE_REPO_TOKEN }} | ||
permissions: | ||
contents: write | ||
with: | ||
nightly: true | ||
version: ${{ needs.prepare.outputs.version }} | ||
target_commitish: ${{ github.sha }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
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: | | ||
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/* | ||
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 | ||
|
||
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 }} |
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
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
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
Oops, something went wrong.