Merge pull request #651 from luewh/master #336
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
name: Build Windows Releases | |
on: | |
push: | |
branches: | |
- master | |
- actions | |
tags: | |
- '*' | |
jobs: | |
get_version_name: | |
name: Get version name | |
runs-on: ubuntu-latest | |
outputs: | |
rev_count: ${{ steps.rev.outputs.rev_count }} | |
version_name: ${{ steps.rev.outputs.version_name }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set version name | |
id: rev | |
run: | | |
cd ${{ github.workspace }} | |
REVCOUNT=`git rev-list --count HEAD` | |
echo "rev_count=${REVCOUNT}" >> $GITHUB_OUTPUT | |
if [[ "${{ github.ref }}" =~ "refs/tags/" ]]; then | |
VERSION=$(echo ${{ github.ref }} | sed -e "s#refs/tags/##g") | |
else | |
VERSION=r${REVCOUNT} | |
fi | |
echo "version_name=${VERSION}" >> $GITHUB_OUTPUT | |
build: | |
name: Upload Release Asset | |
runs-on: windows-2019 | |
needs: get_version_name | |
defaults: | |
run: | |
shell: cmd | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86 | |
platform: Win32 | |
cuda_ver_major: 11 | |
cuda_ver_minor: 1 | |
cuda_download_url: https://developer.download.nvidia.com/compute/cuda/11.1.1/network_installers/cuda_11.1.1_win10_network.exe | |
- arch: x64 | |
platform: x64 | |
cuda_ver_major: 10 | |
cuda_ver_minor: 1 | |
cuda_download_url: https://developer.download.nvidia.com/compute/cuda/10.1/Prod/network_installers/cuda_10.1.243_win10_network.exe | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Checkout dependencies | |
run: | | |
curl -s -o ffmpeg_lgpl.7z -L https://github.com/rigaya/ffmpeg_dlls_for_hwenc/releases/download/20241102/ffmpeg_dlls_for_hwenc_20241102.7z | |
7z x -offmpeg_lgpl -y ffmpeg_lgpl.7z | |
if "${{ matrix.arch }}" == "x64" curl -s -o NVEncNVOFFRUC_x64.7z -L https://github.com/rigaya/NVEnc/releases/download/7.42/NVEncNVOFFRUC_20240303_x64.7z | |
if "${{ matrix.arch }}" == "x64" 7z x -oNVEncNVOFFRUCBin -y NVEncNVOFFRUC_x64.7z | |
if "${{ matrix.arch }}" == "x64" curl -s -o NVEncNVSDKNGX_x64.7z -L https://github.com/rigaya/NVEnc/releases/download/7.55/NVEncNVSDKNGX_20240629_x64.7z | |
if "${{ matrix.arch }}" == "x64" 7z x -oNVEncNVSDKNGXBin -y NVEncNVSDKNGX_x64.7z | |
git clone https://github.com/AviSynth/AviSynthPlus.git ..\AviSynthPlus | |
git clone https://github.com/vapoursynth/vapoursynth.git ..\vapoursynth | |
git clone https://github.com/KhronosGroup/OpenCL-Headers.git ..\openclheaders | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
msbuild-architecture: ${{ matrix.arch }} | |
- name: Setup CUDA | |
run: | | |
curl -s -o cuda_installer.exe -L ${{ matrix.cuda_download_url }} | |
cuda_installer.exe -s nvcc_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} cudart_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} curand_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} curand_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} npp_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} npp_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvml_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvrtc_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvrtc_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} visual_studio_integration_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} | |
- name: MSBuild | |
run: | | |
chcp 932 | |
set AVISYNTH_SDK=${{ github.workspace }}\..\AviSynthPlus\avs_core | |
set VAPOURSYNTH_SDK=${{ github.workspace }}\..\vapoursynth | |
set OPENCL_HEADERS=${{ github.workspace }}\..\openclheaders | |
set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} | |
if "${{ matrix.cuda_ver_major }}" == "10" set CUDA_PATH_V10_1=%CUDA_PATH% | |
if "${{ matrix.cuda_ver_major }}" == "11" set CUDA_PATH_V11_1=%CUDA_PATH% | |
msbuild NVEnc.sln /t:build /p:configuration=RelStatic /p:Platform=${{ matrix.platform }} -maxcpucount | |
- name: Create Archieve | |
id: archieve | |
run: | | |
mkdir NVEncC_Release | |
copy _build\${{ matrix.platform }}\RelStatic\NVEncC*.exe NVEncC_Release | |
copy _build\${{ matrix.platform }}\RelStatic\*.dll NVEncC_Release | |
if "${{ matrix.arch }}" == "x64" copy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }}\bin\nvrtc64_*_0.dll" NVEncC_Release | |
if "${{ matrix.arch }}" == "x64" copy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }}\bin\nvrtc-builtins64_*.dll" NVEncC_Release | |
if "${{ matrix.arch }}" == "x64" copy NVEncNVOFFRUCBin\*.dll NVEncC_Release | |
if "${{ matrix.arch }}" == "x64" copy NVEncNVSDKNGXBin\*.dll NVEncC_Release | |
7z a -mx9 NVEncC_${{ needs.get_version_name.outputs.version_name }}_${{ matrix.platform }}.7z .\NVEncC_Release\* | |
- name: Check dll | |
run: | | |
if ("${{ matrix.platform }}" == "x64") "NVEncC_Release\NVEncC64.exe" --check-avcodec-dll | |
if ("${{ matrix.platform }}" == "Win32") "NVEncC_Release\NVEncC.exe" --check-avcodec-dll | |
- name: Check Version | |
if: startsWith(github.ref, 'refs/tags/') | |
id: check_ver | |
run: | | |
powershell "$ver = (Get-ItemProperty .\NVEncC_Release\NVEncC*.exe).VersionInfo.FileVersion; if ($ver -eq '${{ needs.get_version_name.outputs.version_name }}') { exit 0; } exit 1;" | |
- name: Calc hash | |
id: calc_hash | |
run: | | |
7z h -scrc* NVEncC_${{ needs.get_version_name.outputs.version_name }}_${{ matrix.platform }}.7z | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: NVEncC_${{ needs.get_version_name.outputs.version_name }}_${{ matrix.platform }}.7z | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: NVEncC_release_${{ needs.get_version_name.outputs.version_name }}_${{ matrix.platform }} | |
path: NVEncC_${{ needs.get_version_name.outputs.version_name }}_${{ matrix.platform }}.7z | |
upload_aviutl_release: | |
name: Upload Aviutl Release Asset | |
runs-on: windows-2019 | |
needs: [ get_version_name, build ] | |
defaults: | |
run: | |
shell: cmd | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- arch: x86 | |
platform: Win32 | |
cuda_ver_major: 11 | |
cuda_ver_minor: 1 | |
cuda_download_url: https://developer.download.nvidia.com/compute/cuda/11.1.1/network_installers/cuda_11.1.1_win10_network.exe | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Checkout dependencies | |
run: | | |
curl -s -o ffmpeg_lgpl.7z -L https://github.com/rigaya/ffmpeg_dlls_for_hwenc/releases/download/20241102/ffmpeg_dlls_for_hwenc_20241102.7z | |
7z x -offmpeg_lgpl -y ffmpeg_lgpl.7z | |
git clone https://github.com/AviSynth/AviSynthPlus.git ..\AviSynthPlus | |
git clone https://github.com/vapoursynth/vapoursynth.git ..\vapoursynth | |
git clone https://github.com/KhronosGroup/OpenCL-Headers.git ..\openclheaders | |
- name: Add msbuild to PATH | |
uses: microsoft/setup-msbuild@v2 | |
with: | |
msbuild-architecture: ${{ matrix.arch }} | |
- name: Setup CUDA | |
run: | | |
curl -s -o cuda_installer.exe -L ${{ matrix.cuda_download_url }} | |
cuda_installer.exe -s nvcc_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} cudart_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} curand_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} curand_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} npp_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} npp_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvml_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvrtc_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} nvrtc_dev_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} visual_studio_integration_${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} | |
- name: MSBuild | |
run: | | |
set AVISYNTH_SDK=${{ github.workspace }}\..\AviSynthPlus\avs_core | |
set VAPOURSYNTH_SDK=${{ github.workspace }}\..\vapoursynth | |
set OPENCL_HEADERS=${{ github.workspace }}\..\openclheaders | |
set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v${{ matrix.cuda_ver_major }}.${{ matrix.cuda_ver_minor }} | |
if "${{ matrix.cuda_ver_major }}" == "10" set CUDA_PATH_V10_1=%CUDA_PATH% | |
if "${{ matrix.cuda_ver_major }}" == "11" set CUDA_PATH_V11_1=%CUDA_PATH% | |
msbuild NVEnc.sln /t:build /p:configuration=Release /p:Platform=${{ matrix.platform }} -maxcpucount | |
- name: Download auo_setup | |
id: download_auosetup | |
run: | | |
curl -o auo_setup.zip -L https://github.com/rigaya/auo_setup/releases/download/2.01/auo_setup_2.01v2.zip | |
- name: Download NVEncC Win32 | |
uses: actions/download-artifact@v4 | |
with: | |
name: NVEncC_release_${{ needs.get_version_name.outputs.version_name }}_Win32 | |
path: NVEncC_${{ needs.get_version_name.outputs.version_name }}_Win32.7z | |
- name: Download NVEncC x64 | |
uses: actions/download-artifact@v4 | |
with: | |
name: NVEncC_release_${{ needs.get_version_name.outputs.version_name }}_x64 | |
path: NVEncC_${{ needs.get_version_name.outputs.version_name }}_x64.7z | |
- name: Create package | |
id: archieve | |
run: | | |
mkdir Aviutl_NVEnc_release | |
7z x -oAviutl_NVEnc_release\ auo_setup.zip | |
mkdir Aviutl_NVEnc_release\exe_files\NVEncC | |
mkdir Aviutl_NVEnc_release\exe_files\NVEncC\x86 | |
mkdir Aviutl_NVEnc_release\exe_files\NVEncC\x64 | |
7z x -oAviutl_NVEnc_release\exe_files\NVEncC\x86\ NVEncC_${{ needs.get_version_name.outputs.version_name }}_Win32.7z | |
7z x -oAviutl_NVEnc_release\exe_files\NVEncC\x64\ NVEncC_${{ needs.get_version_name.outputs.version_name }}_x64.7z | |
copy /y _build\Win32\Release\NVEnc.auo Aviutl_NVEnc_release\plugins\ | |
copy /y NVEnc\NVEnc.ini Aviutl_NVEnc_release\plugins\ | |
copy /y NVEnc\NVEnc.en.ini Aviutl_NVEnc_release\plugins\ | |
copy /y NVEnc\NVEnc.zh.ini Aviutl_NVEnc_release\plugins\ | |
copy /y NVEnc\auo_setup.ini Aviutl_NVEnc_release\exe_files\ | |
copy /y NVEnc\NVEnc_readme.txt Aviutl_NVEnc_release\ | |
copy /y "NVEnc\NVENCが利用可能か確認 [ダブルクリック].bat" Aviutl_NVEnc_release\ | |
echo D | xcopy /y /e NVEnc\stg Aviutl_NVEnc_release\plugins\NVEnc_stg | |
dir /b /s Aviutl_NVEnc_release\ | |
7z a -mx9 Aviutl_NVEnc_${{ needs.get_version_name.outputs.version_name }}.zip .\Aviutl_NVEnc_release\* | |
- name: Check Version | |
id: check_ver | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
powershell "$ver = (Get-ItemProperty .\Aviutl_NVEnc_release\plugins\NVEnc.auo).VersionInfo.FileVersion; if ($ver -eq '${{ needs.get_version_name.outputs.version_name }}') { exit 0; } exit 1;" | |
- name: Check dll | |
id: check_dll | |
run: | | |
"Aviutl_NVEnc_release\exe_files\NVEncC\x86\NVEncC.exe" --check-avcodec-dll | |
"Aviutl_NVEnc_release\exe_files\NVEncC\x64\NVEncC64.exe" --check-avcodec-dll | |
- name: Calc hash | |
id: calc_hash | |
run: | | |
7z h -scrc* Aviutl_NVEnc_${{ needs.get_version_name.outputs.version_name }}.zip | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: softprops/action-gh-release@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
files: Aviutl_NVEnc_${{ needs.get_version_name.outputs.version_name }}.zip | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: Aviutl_NVEnc_${{ needs.get_version_name.outputs.version_name }} | |
path: Aviutl_NVEnc_${{ needs.get_version_name.outputs.version_name }}.zip |