Skip to content

Merge pull request #651 from luewh/master #336

Merge pull request #651 from luewh/master

Merge pull request #651 from luewh/master #336

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