diff options
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r-- | .github/workflows/build.yml | 308 |
1 files changed, 308 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..3b32e559 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,308 @@ +name: Build +run-name: Build win32, win64, mac (Intel) 🚀 +on: + push: + branches: + - develop + - stable + pull_request: + branches: + - develop + - stable + +jobs: + build-win64: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + + - name: Install poetry + run: C:\hostedtoolcache\windows\Python\3.9.13\x64\python -m pip install poetry + + - name: Restore cache - poetry + uses: actions/cache@v3 + with: + path: ~\AppData\Local\pypoetry\Cache\virtualenvs + key: ${{ runner.os }}-win64-poetry-${{ hashFiles('desktop/poetry.lock') }} + + - name: Install poetry dependencies + run: | + cd desktop + C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts\poetry install + C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts\poetry env list --full-path + + - name: Restore cache - tor + uses: actions/cache@v3 + with: + path: desktop\build\tor + key: ${{ runner.os }}-win64-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} + + - name: Get tor binaries from Tor Browser (64-bit) + run: cd desktop && C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts\poetry run python .\scripts\get-tor.py win64 + + - name: Restore cache - obfs4proxy + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\obfs4proxy.exe + key: ${{ runner.os }}-win64-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.ps1') }} + + - name: Build obfs4proxy + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\obfs4proxy.exe') -eq $True) { + Write-Output "obfs4proxy already built" + } else { + cd desktop + .\scripts\build-pt-obfs4proxy.ps1 + } + + - name: Restore cache - snowflake + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\snowflake-client.exe + key: ${{ runner.os }}-win64-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.ps1') }} + + - name: Build snowflake + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\snowflake-client.exe') -eq $True) { + Write-Output "snowflake already built" + } else { + cd desktop + .\scripts\build-pt-snowflake.ps1 + } + + - name: Restore cache - meek + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\meek-client.exe + key: ${{ runner.os }}-win64-meek-${{ hashFiles('desktop/scripts/build-pt-meek.ps1') }} + + - name: Build meek + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\meek-client.exe') -eq $True) { + Write-Output "meek already built" + } else { + cd desktop + .\scripts\build-pt-meek.ps1 + } + + - name: Build OnionShare + run: | + cd desktop + C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts\poetry run python .\setup-freeze.py build + C:\hostedtoolcache\windows\Python\3.9.13\x64\Scripts\poetry run python .\scripts\build-windows.py cleanup-build + + - name: Compress + shell: pwsh + run: | + mv desktop\build\exe.win-amd64-3.9\ ~\onionshare-win64 + Compress-Archive -LiteralPath ~\onionshare-win64 -DestinationPath ~\onionshare-win64.zip + + - uses: actions/upload-artifact@v3 + with: + name: win64-build + path: ~\onionshare-win64.zip + + build-win32: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + + - name: Install poetry + run: C:\hostedtoolcache\windows\Python\3.9.13\x86\python -m pip install poetry + + - name: Restore cache - poetry + uses: actions/cache@v3 + with: + path: ~\AppData\Local\pypoetry\Cache\virtualenvs + key: ${{ runner.os }}-win32-poetry-${{ hashFiles('desktop/poetry.lock') }} + + - name: Install poetry dependencies + run: | + cd desktop + C:\hostedtoolcache\windows\Python\3.9.13\x86\Scripts\poetry install + C:\hostedtoolcache\windows\Python\3.9.13\x86\Scripts\poetry env list --full-path + + - name: Restore cache - tor + uses: actions/cache@v3 + with: + path: desktop\build\tor + key: ${{ runner.os }}-win32-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} + + - name: Get tor binaries from Tor Browser (32-bit) + run: cd desktop && C:\hostedtoolcache\windows\Python\3.9.13\x86\Scripts\poetry run python .\scripts\get-tor.py win32 + + - name: Install golang (32-bit) + shell: pwsh + run: | + cd ~\Downloads + Invoke-WebRequest -Uri https://go.dev/dl/go1.19.1.windows-386.msi -OutFile go1.19.1.windows-386.msi + msiexec.exe /i go1.19.1.windows-386.msi /quiet /L*V go-install.log + + - name: Restore cache - obfs4proxy + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\obfs4proxy.exe + key: ${{ runner.os }}-win32-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.ps1') }} + + - name: Build obfs4proxy + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\obfs4proxy.exe') -eq $True) { + Write-Output "obfs4proxy already built" + } else { + $env:PATH = "C:\Program Files (x86)\Go\bin\go;$env:PATH" + cd desktop + .\scripts\build-pt-obfs4proxy.ps1 + } + + - name: Restore cache - snowflake + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\snowflake-client.exe + key: ${{ runner.os }}-win32-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.ps1') }} + + - name: Build snowflake + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\snowflake-client.exe') -eq $True) { + Write-Output "snowflake already built" + } else { + $env:PATH = "C:\Program Files (x86)\Go\bin\go;$env:PATH" + cd desktop + .\scripts\build-pt-snowflake.ps1 + } + + - name: Restore cache - meek + uses: actions/cache@v3 + with: + path: desktop\onionshare\resources\tor\meek-client.exe + key: ${{ runner.os }}-win32-meek-${{ hashFiles('desktop/scripts/build-pt-meek.ps1') }} + + - name: Build meek + shell: pwsh + run: | + if ((Test-Path -Path 'desktop\onionshare\resources\tor\meek-client.exe') -eq $True) { + Write-Output "meek already built" + } else { + $env:PATH = "C:\Program Files (x86)\Go\bin\go;$env:PATH" + cd desktop + .\scripts\build-pt-meek.ps1 + } + + - name: Build OnionShare + run: | + cd desktop + C:\hostedtoolcache\windows\Python\3.9.13\x86\Scripts\poetry run python .\setup-freeze.py build + C:\hostedtoolcache\windows\Python\3.9.13\x86\Scripts\poetry run python .\scripts\build-windows.py cleanup-build + + - name: Compress + shell: pwsh + run: | + mv desktop\build\exe.win32-3.9\ ~\onionshare-win32 + Compress-Archive -LiteralPath ~\onionshare-win32 -DestinationPath ~\onionshare-win32.zip + + - uses: actions/upload-artifact@v3 + with: + name: win32-build + path: ~\onionshare-win32.zip + + build-mac: + runs-on: macos-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Python 3.9.13 (Intel) + run: | + curl -L https://www.python.org/ftp/python/3.9.13/python-3.9.13-macosx10.9.pkg --output ~/Downloads/python.pkg + sudo installer -pkg ~/Downloads/python.pkg -target / + + - name: Install poetry + run: | + python3 -m pip install poetry + + - name: Restore cache - poetry + uses: actions/cache@v3 + with: + path: ~/Library/Caches/pypoetry/virtualenvs + key: ${{ runner.os }}-macos-poetry-${{ hashFiles('desktop/poetry.lock') }} + + - name: Install poetry dependencies + run: | + cd desktop + /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry install + + - name: Restore cache - tor + uses: actions/cache@v3 + with: + path: desktop/build/tor + key: ${{ runner.os }}-macos-tor-${{ hashFiles('desktop/scripts/get-tor.py') }} + + - name: Get tor binaries from Tor Browser + run: | + cd desktop + /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry run python ./scripts/get-tor.py macos + + - name: Restore cache - obfs4proxy + uses: actions/cache@v3 + with: + path: desktop/onionshare/resources/tor/obfs4proxy + key: ${{ runner.os }}-macos-obfs4proxy-${{ hashFiles('desktop/scripts/build-pt-obfs4proxy.sh') }} + + - name: Build obfs4proxy + run: | + if [[ -f "desktop/onionshare/resources/tor/obfs4proxy" ]]; then + echo "obfs4proxy already built" + else + cd desktop + ./scripts/build-pt-obfs4proxy.sh + fi + + - name: Restore cache - snowflake + uses: actions/cache@v3 + with: + path: desktop/onionshare/resources/tor/snowflake-client + key: ${{ runner.os }}-macos-snowflake-${{ hashFiles('desktop/scripts/build-pt-snowflake.sh') }} + + - name: Build snowflake + run: | + if [[ -f "desktop/onionshare/resources/tor/snowflake-client" ]]; then + echo "snowflake already built" + else + cd desktop + ./scripts/build-pt-snowflake.sh + fi + + - name: Restore cache - meek + uses: actions/cache@v3 + with: + path: desktop/onionshare/resources/tor/meek-client + key: ${{ runner.os }}-macos-meek-${{ hashFiles('desktop/scripts/build-pt-meek.sh') }} + + - name: Build meek + run: | + if [[ -f "desktop/onionshare/resources/tor/meek-client" ]]; then + echo "meek already built" + else + cd desktop + ./scripts/build-pt-meek.sh + fi + + - name: Build OnionShare + run: | + cd desktop + /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry run python ./setup-freeze.py build + /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry run python ./setup-freeze.py bdist_mac + /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry run python ./scripts/build-macos.py cleanup-build + + - name: Compress + run: | + cd desktop/build + tar -czvf ~/onionshare-macos.tar.gz OnionShare.app + + - uses: actions/upload-artifact@v3 + with: + name: mac-build + path: ~/onionshare-macos.tar.gz
\ No newline at end of file |