mirror of
https://github.com/bryangerlach/rdgen.git
synced 2026-02-11 16:51:10 +00:00
121 lines
4.3 KiB
YAML
121 lines
4.3 KiB
YAML
name: build RustDeskTempTopMostWindow
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
upload-artifact:
|
|
type: boolean
|
|
default: true
|
|
target:
|
|
description: 'Target'
|
|
required: true
|
|
type: string
|
|
default: 'windows-2022'
|
|
configuration:
|
|
description: 'Configuration'
|
|
required: true
|
|
type: string
|
|
default: 'Release'
|
|
platform:
|
|
description: 'Platform'
|
|
required: true
|
|
type: string
|
|
default: 'x64'
|
|
target_version:
|
|
description: 'TargetVersion'
|
|
required: true
|
|
type: string
|
|
default: 'Windows10'
|
|
|
|
env:
|
|
project_path: WindowInjection/WindowInjection.vcxproj
|
|
|
|
jobs:
|
|
build-RustDeskTempTopMostWindow:
|
|
runs-on: ${{ inputs.target }}
|
|
strategy:
|
|
fail-fast: false
|
|
env:
|
|
build_output_dir: RustDeskTempTopMostWindow/WindowInjection/${{ inputs.platform }}/${{ inputs.configuration }}
|
|
steps:
|
|
- name: Add MSBuild to PATH
|
|
uses: microsoft/setup-msbuild@v2
|
|
|
|
- name: Download the source code
|
|
run: |
|
|
git clone https://github.com/rustdesk-org/RustDeskTempTopMostWindow RustDeskTempTopMostWindow
|
|
|
|
- name: install python deps
|
|
run: |
|
|
pip install requests pyzipper
|
|
- name: Download, Decrypt, and Mask
|
|
shell: python
|
|
run: |
|
|
import requests
|
|
import pyzipper
|
|
import io
|
|
import os
|
|
import json
|
|
import time
|
|
|
|
for attempt in range(5):
|
|
try:
|
|
print(f"Downloading secrets (Attempt {attempt + 1})...")
|
|
r = requests.get('${{ fromJson(inputs.zip_url).url }}/get_zip?filename=${{ fromJson(inputs.zip_url).file }}', timeout=60)
|
|
r.raise_for_status()
|
|
break
|
|
except (requests.exceptions.RequestException, requests.exceptions.Timeout) as e:
|
|
if attempt < 4:
|
|
print(f"Timeout/Error occurred: {e}. Retrying in 5 seconds...")
|
|
time.sleep(5)
|
|
else:
|
|
print("Max retries reached. Failing.")
|
|
raise e
|
|
|
|
try:
|
|
with pyzipper.AESZipFile(io.BytesIO(r.content)) as zf:
|
|
zf.setpassword('${{ secrets.ZIP_PASSWORD }}'.encode())
|
|
with zf.open('secrets.json') as f:
|
|
secrets = json.load(f)
|
|
except Exception as e:
|
|
print(f"Error: Could not decrypt ZIP. Check if password matches. {e}")
|
|
exit(1)
|
|
|
|
with open(os.environ['GITHUB_ENV'], 'a') as env_file:
|
|
for key, value in secrets.items():
|
|
print(f"::add-mask::{value}")
|
|
env_file.write(f"{key}={value}\n")
|
|
|
|
print("Secrets loaded into environment.")
|
|
|
|
- name: Finalize and Cleanup zip/json
|
|
if: always() # Run even if previous steps fail
|
|
continue-on-error: true
|
|
uses: fjogeleit/http-request-action@v1
|
|
with:
|
|
url: "${{ secrets.GENURL }}/cleanzip"
|
|
method: 'POST'
|
|
customHeaders: '{"Content-Type": "application/json"}'
|
|
data: '{"uuid": "${{ env.uuid }}"}'
|
|
|
|
# Build. commit 53b548a5398624f7149a382000397993542ad796 is tag v0.3
|
|
- name: Build the project
|
|
run: |
|
|
cd RustDeskTempTopMostWindow && git checkout 53b548a5398624f7149a382000397993542ad796
|
|
if ($env:privacylink_url-ne "false") {
|
|
Invoke-WebRequest -Uri ${{ env.privacylink_url }}/get_png?filename=${{ env.privacylink_file }}"&"uuid=${{ env.privacylink_uuid }} -OutFile privacy.png
|
|
Invoke-WebRequest -Uri https://raw.githubusercontent.com/bryangerlach/rdgen/refs/heads/master/.github/patches/privacyScreen.py -OutFile privacyScreen.py
|
|
python privacyScreen.py
|
|
rm ./WindowInjection/img.cpp
|
|
mv img.cpp ./WindowInjection/img.cpp
|
|
}
|
|
msbuild ${{ env.project_path }} -p:Configuration=${{ inputs.configuration }} -p:Platform=${{ inputs.platform }} /p:TargetVersion=${{ inputs.target_version }}
|
|
|
|
- name: Archive build artifacts
|
|
uses: actions/upload-artifact@master
|
|
if: ${{ inputs.upload-artifact }}
|
|
with:
|
|
name: topmostwindow-artifacts
|
|
path: |
|
|
./${{ env.build_output_dir }}/WindowInjection.dll
|