name: Build Latest on: workflow_dispatch: inputs: doRelease: description: 'Publish new release' type: boolean default: false required: false tag: type: string description: 'Release version tag (e.g. v1.2.3)' required: true ref: type: string description: 'Git ref from which to release' required: true default: 'main' env: DOTNET_SDK_VERSION: "9.0.*" ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true jobs: build-win-nt6_0-x86: runs-on: windows-latest steps: - uses: actions/checkout@v1 - name: Set up dotnet uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_SDK_VERSION }} - run: powershell -Command "(Get-Content src/N_m3u8DL-RE/N_m3u8DL-RE.csproj) -replace '.*', 'net9.0-windows' | Set-Content src/N_m3u8DL-RE/N_m3u8DL-RE.csproj" - run: dotnet add src/N_m3u8DL-RE/N_m3u8DL-RE.csproj package YY-Thunks --version 1.1.4 - run: dotnet add src/N_m3u8DL-RE/N_m3u8DL-RE.csproj package VC-LTL --version 5.1.1 - run: dotnet publish src/N_m3u8DL-RE -p:TargetPlatformMinVersion=6.0 -r win-x86 -c Release -o artifact-x86 - name: Upload Artifact[win-x86] uses: actions/upload-artifact@v3.1.3 with: name: N_m3u8DL-RE_Beta_win-NT6.0-x86 path: artifact-x86\N_m3u8DL-RE.exe build-win-x64-arm64: runs-on: windows-latest steps: - uses: actions/checkout@v1 - name: Set up dotnet uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_SDK_VERSION }} - run: dotnet publish src/N_m3u8DL-RE -r win-x64 -c Release -o artifact-x64 - run: dotnet publish src/N_m3u8DL-RE -r win-arm64 -c Release -o artifact-arm64 - name: Upload Artifact[win-x64] uses: actions/upload-artifact@v3.1.3 with: name: N_m3u8DL-RE_Beta_win-x64 path: artifact-x64\N_m3u8DL-RE.exe - name: Upload Artifact[win-arm64] uses: actions/upload-artifact@v3.1.3 with: name: N_m3u8DL-RE_Beta_win-arm64 path: artifact-arm64\N_m3u8DL-RE.exe build-linux-x64-arm64: runs-on: ubuntu-latest steps: # https://learn.microsoft.com/zh-cn/dotnet/core/deploying/native-aot/cross-compile - run: | sudo dpkg --add-architecture arm64 sudo bash -c 'cat > /etc/apt/sources.list.d/arm64.list <> $GITHUB_ENV \ || echo "already_exists=false" >> $GITHUB_ENV env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Checkout repo if: env.already_exists == 'false' uses: actions/checkout@v3 with: ref: '${{ github.event.inputs.ref }}' - name: Create release if: env.already_exists == 'false' run: > gh release create '${{ github.event.inputs.tag }}' --draft --repo '${{ github.repository }}' --title '${{ github.event.inputs.tag }}' --target '${{ github.event.inputs.ref }}' --generate-notes env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} attach_to_release: name: Attach native executables to release if: ${{ github.event.inputs.doRelease == 'true' }} needs: create_draft_release runs-on: ubuntu-latest steps: - name: Get current date id: date run: echo "date=$(date +'%Y%m%d')" >> $GITHUB_ENV - name: GH version run: gh --version - name: Fetch executables uses: actions/download-artifact@v3 - name: Tar (linux, macOS) run: for dir in *{osx,linux}*; do tar cvzfp "${dir}_${{ env.date }}.tar.gz" "$dir"; done - name: Zip (windows) run: for dir in *win*; do zip -r "${dir}_${{ env.date }}.zip" "$dir"; done - name: Upload run: | until gh release upload --clobber --repo ${{ github.repository }} ${{ github.event.inputs.tag }} *.zip *.tar.gz; do echo "Attempt $((++attempts)) to upload release artifacts failed. Will retry in 20s" sleep 20 done timeout-minutes: 10 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}