mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-05-17 15:32:01 +00:00
166 lines
7.7 KiB
YAML
166 lines
7.7 KiB
YAML
name: Build and Release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: 'Release tag name (default mpv version)'
|
|
default: ''
|
|
|
|
jobs:
|
|
build:
|
|
permissions:
|
|
contents: write
|
|
runs-on: macos-14
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Check version to release
|
|
uses: jannekem/run-python-script-action@v1
|
|
with:
|
|
script: |
|
|
import re
|
|
|
|
def normalize_version(version_string):
|
|
version_string = re.sub(r'[^.0-9]+|-.+', '', version_string)
|
|
parts = re.split(r'\.', version_string)
|
|
major = int(parts[0])
|
|
minor = int(parts[1]) if len(parts) > 1 else 0
|
|
patch = int(parts[2]) if len(parts) > 2 else 0
|
|
return f"{major}.{minor}.{patch}"
|
|
|
|
file_path = './Sources/BuildScripts/XCFrameworkBuild/main.swift'
|
|
with open(file_path, 'r', encoding='utf-8') as file:
|
|
content = file.read()
|
|
|
|
mpvVersion = re.search(r'(case .libmpv[^"]+?)"(.+?)"', content).group(2)
|
|
ffmpegVersion = re.search(r'(case .FFmpeg[^"]+?)"(.+?)"', content).group(2)
|
|
libplaceboVersion = re.search(r'(case .libplacebo[^"]+?)"(.+?)"', content).group(2)
|
|
vulkanVersion = re.search(r'(case .vulkan[^"]+?)"(.+?)"', content).group(2)
|
|
|
|
print(f'mpv version: {mpvVersion}')
|
|
print(f'ffmpeg version: {ffmpegVersion}')
|
|
releaseVersion = '${{ github.event.inputs.version }}' or normalize_version(mpvVersion)
|
|
print(f'release version: {releaseVersion}')
|
|
set_env('BUILD_VERSION', mpvVersion)
|
|
set_env('RELEASE_VERSION', releaseVersion)
|
|
|
|
with open('/tmp/RELEASE_NOTE.txt', 'w', encoding='utf-8') as file:
|
|
file.write(f'''
|
|
* mpv version: {mpvVersion} ([changelog](https://github.com/mpv-player/mpv/releases/tag/{mpvVersion}))
|
|
* ffmpeg version: {ffmpegVersion} ([changelog](https://github.com/FFmpeg/FFmpeg/blob/{ffmpegVersion}/Changelog))
|
|
* placebo version: v{libplaceboVersion}
|
|
* MoltenVK version: v{vulkanVersion}
|
|
''')
|
|
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
brew install autoconf
|
|
brew install automake
|
|
brew install libtool
|
|
python -m pip install meson==1.4.2
|
|
brew install ninja
|
|
brew install rename
|
|
|
|
- name: Setup Xcode to support visionOS
|
|
run: |
|
|
sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer
|
|
xcodebuild -showsdks
|
|
|
|
- name: Build GPL version
|
|
run: |
|
|
make build enable-gpl version=${{ env.RELEASE_VERSION }}
|
|
|
|
cd ./dist/release
|
|
rename 's/-all\.zip/-GPL-all\.zip/' *-all.zip
|
|
rename 's/\.xcframework\.zip/-GPL\.xcframework\.zip/' *.xcframework.zip
|
|
rename 's/\.xcframework\.checksum\.txt/-GPL\.xcframework\.checksum\.txt/' *.xcframework.checksum.txt
|
|
|
|
- name: Clean GPL build files
|
|
run: |
|
|
# remove libbluray, same as LGPL version
|
|
rm -rf ./dist/release/libbluray*.zip
|
|
rm -rf ./dist/release/Libbluray*.zip
|
|
rm -rf ./dist/release/Libbluray*.txt
|
|
|
|
rm -rf ./dist/FFmpeg*
|
|
rm -rf ./dist/release/FFmpeg
|
|
rm -rf ./dist/libmpv*
|
|
rm -rf ./dist/release/libmpv
|
|
rm -rf ./dist/release/xcframework
|
|
|
|
- name: Build LGPL version
|
|
run: |
|
|
make build version=${{ env.RELEASE_VERSION }}
|
|
|
|
|
|
- name: Update Package.swift
|
|
run: |
|
|
rm -rf ./Package.swift
|
|
cp -f ./dist/release/Package.swift ./Package.swift
|
|
|
|
|
|
LibmpvGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libmpv-GPL.xcframework.zip"
|
|
LibmpvGPL_checksum=$(cat ./dist/release/Libmpv-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libmpv-GPL_url)#${LibmpvGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libmpv-GPL_checksum)#${LibmpvGPL_checksum}#g" ./Package.swift
|
|
|
|
LibavcodecGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libavcodec-GPL.xcframework.zip"
|
|
LibavcodecGPL_checksum=$(cat ./dist/release/Libavcodec-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libavcodec-GPL_url)#${LibavcodecGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libavcodec-GPL_checksum)#${LibavcodecGPL_checksum}#g" ./Package.swift
|
|
|
|
LibavdeviceGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libavdevice-GPL.xcframework.zip"
|
|
LibavdeviceGPL_checksum=$(cat ./dist/release/Libavdevice-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libavdevice-GPL_url)#${LibavdeviceGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libavdevice-GPL_checksum)#${LibavdeviceGPL_checksum}#g" ./Package.swift
|
|
|
|
LibavformatGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libavformat-GPL.xcframework.zip"
|
|
LibavformatGPL_checksum=$(cat ./dist/release/Libavformat-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libavformat-GPL_url)#${LibavformatGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libavformat-GPL_checksum)#${LibavformatGPL_checksum}#g" ./Package.swift
|
|
|
|
LibavfilterGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libavfilter-GPL.xcframework.zip"
|
|
LibavfilterGPL_checksum=$(cat ./dist/release/Libavfilter-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libavfilter-GPL_url)#${LibavfilterGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libavfilter-GPL_checksum)#${LibavfilterGPL_checksum}#g" ./Package.swift
|
|
|
|
LibavutilGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libavutil-GPL.xcframework.zip"
|
|
LibavutilGPL_checksum=$(cat ./dist/release/Libavutil-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libavutil-GPL_url)#${LibavutilGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libavutil-GPL_checksum)#${LibavutilGPL_checksum}#g" ./Package.swift
|
|
|
|
LibswresampleGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libswresample-GPL.xcframework.zip"
|
|
LibswresampleGPL_checksum=$(cat ./dist/release/Libswresample-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libswresample-GPL_url)#${LibswresampleGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libswresample-GPL_checksum)#${LibswresampleGPL_checksum}#g" ./Package.swift
|
|
|
|
LibswscaleGPL_url="https://github.com/mpvkit/MPVKit/releases/download/${{ env.RELEASE_VERSION }}/Libswscale-GPL.xcframework.zip"
|
|
LibswscaleGPL_checksum=$(cat ./dist/release/Libswscale-GPL.xcframework.checksum.txt)
|
|
sed -i '' "s#\\\(Libswscale-GPL_url)#${LibswscaleGPL_url}#g" ./Package.swift
|
|
sed -i '' "s#\\\(Libswscale-GPL_checksum)#${LibswscaleGPL_checksum}#g" ./Package.swift
|
|
|
|
|
|
- name: Push Package.swift
|
|
uses: EndBug/add-and-commit@v9
|
|
with:
|
|
default_author: github_actions
|
|
add: |
|
|
- Package.swift
|
|
message: "chore: bump version to ${{ env.RELEASE_VERSION }}"
|
|
push: "origin HEAD:${{ github.ref_name }}"
|
|
|
|
- name: Upload binary to GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
name: ${{ contains(env.RELEASE_VERSION, '-') && env.RELEASE_VERSION || env.BUILD_VERSION }}
|
|
tag_name: ${{ env.RELEASE_VERSION }}
|
|
files: |
|
|
./dist/release/*.txt
|
|
./dist/release/*.zip
|
|
prerelease: ${{ contains(env.RELEASE_VERSION, '-') }}
|
|
body_path: /tmp/RELEASE_NOTE.txt
|
|
generate_release_notes: true
|
|
fail_on_unmatched_files: true
|
|
|