onionshare/.circleci/config.yml

350 lines
13 KiB
YAML
Raw Normal View History

2022-03-30 00:02:03 -04:00
version: 2.1
orbs:
win: circleci/windows@4.0.0
workflows:
version: 2
ci:
jobs:
- test-cli
- test-gui
- build-win64:
2022-03-30 00:04:39 -04:00
requires:
- test-cli
# - test-gui
- build-win32:
requires:
- test-cli
# - test-gui
- build-macos:
requires:
- test-cli
# - test-gui
2018-10-17 01:51:49 -04:00
jobs:
test-cli:
2018-10-17 01:51:49 -04:00
docker:
- image: cimg/python:3.9
2018-10-17 01:51:49 -04:00
steps:
2022-06-03 12:52:29 -04:00
- checkout
2020-03-22 18:32:25 -04:00
- run:
2020-10-14 23:44:21 -04:00
name: Install dependencies
command: |
sudo apt-get update
sudo apt-get -y install tor obfs4proxy
2022-04-19 22:12:30 -04:00
- restore_cache:
key: test-cli-poetry-deps-{{ .Environment.CACHE_VERSION }}-{{ checksum "~/project/cli/poetry.lock" }}
2022-04-19 22:12:30 -04:00
- run:
name: Install poetry dependencies
command: |
cd ~/project/cli
2020-10-14 23:44:21 -04:00
poetry install
2022-04-19 22:12:30 -04:00
- save_cache:
key: test-cli-poetry-deps-{{ .Environment.CACHE_VERSION }}-{{ checksum "~/project/cli/poetry.lock" }}
2022-04-19 22:12:30 -04:00
paths:
- /home/circleci/.cache/pypoetry/virtualenvs
2018-10-17 01:51:49 -04:00
- run:
name: Run tests
2018-10-17 01:51:49 -04:00
command: |
2022-04-19 22:12:30 -04:00
cd ~/project/cli
poetry run pytest -v ./tests
poetry run onionshare-cli --local-only ./tests --auto-stop-timer 2
poetry run onionshare-cli --local-only --receive --auto-stop-timer 2
poetry run onionshare-cli --local-only --website ../docs --auto-stop-timer 2
poetry run onionshare-cli --local-only --chat --auto-stop-timer 2
2022-03-30 00:02:03 -04:00
test-gui:
docker:
- image: cimg/python:3.9
steps:
- checkout
2018-10-17 01:51:49 -04:00
- run:
2020-10-14 23:44:21 -04:00
name: Install dependencies
command: |
sudo apt-get update
sudo apt-get install -y tor obfs4proxy gcc python3-dev python3-pyside2.qtcore python3-pyside2.qtwidgets python3-pyside2.qtgui
sudo apt-get install -y xvfb x11-utils libxkbcommon-x11-0 libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev libxcb-render-util0 libxcb-icccm4 libxcb-keysyms1 libxcb-image0
2022-04-19 22:12:30 -04:00
- restore_cache:
key: test-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
2022-04-19 22:12:30 -04:00
- run:
name: Install poetry dependencies
command: |
cd ~/project/desktop
poetry install
2022-04-19 22:12:30 -04:00
- save_cache:
key: test-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
2022-04-19 22:12:30 -04:00
paths:
- /home/circleci/.cache/pypoetry/virtualenvs
2018-10-17 01:59:13 -04:00
- run:
name: Run tests
2018-10-17 01:51:49 -04:00
command: |
2022-04-19 22:12:30 -04:00
cd ~/project/desktop
2022-03-28 23:13:14 -04:00
QT_DEBUG_PLUGINS=1 xvfb-run poetry run pytest -v ./tests/test_gui_*.py
2022-03-30 00:02:03 -04:00
2022-05-29 00:40:52 -04:00
build-win64:
2022-03-30 00:02:03 -04:00
executor:
name: win/default
2022-05-29 00:40:52 -04:00
shell: powershell.exe
2022-03-30 00:02:03 -04:00
steps:
- checkout
2022-05-29 00:40:52 -04:00
- run:
name: Install Python 3.9.12
command: |
choco install python3 --version=3.9.12
- run:
name: Install poetry
command: (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
- restore_cache:
key: build-win64-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Install poetry dependencies
command: |
cd C:\Users\circleci\project\desktop
poetry install
- save_cache:
key: build-win64-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\AppData\Local\pypoetry\Cache\virtualenvs
- restore_cache:
key: get-tor-{{ checksum "desktop/scripts/get-tor.py" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Get tor binaries from Tor Browser (64-bit)
command: |
cd desktop
poetry run python .\scripts\get-tor.py win64
- save_cache:
key: get-tor-{{ checksum "desktop/scripts/get-tor.py" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\project\desktop\build\tor
2022-06-16 23:04:42 -04:00
- restore_cache:
key: build-win64-obfs4proxy-{{ checksum "~/project/desktop/scripts/build-pt-obfs4proxy.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build obfs4proxy
command: |
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe) -eq $True) {
Write-Output "obfs4proxy already built"
} else {
cd C:\Users\circleci\project\desktop
.\scripts\build-pt-obfs4proxy.ps1
}
- save_cache:
key: build-win64-obfs4proxy-{{ checksum "~/project/desktop/scripts/build-pt-obfs4proxy.ps1" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
- restore_cache:
key: build-win64-snowflake-{{ checksum "~/project/desktop/scripts/build-pt-snowflake.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build snowflake-client
command: |
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe) -eq $True) {
Write-Output "snowflake already built"
} else {
cd C:\Users\circleci\project\desktop
.\scripts\build-pt-snowflake.ps1
}
- save_cache:
key: build-win64-snowflake-{{ checksum "~/project/desktop/scripts/build-pt-snowflake.ps1" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
- restore_cache:
key: build-win64-meek-{{ checksum "~/project/desktop/scripts/build-pt-meek.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build meek-client
command: |
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe) -eq $True) {
Write-Output "snowflake already built"
} else {
cd C:\Users\circleci\project\desktop
.\scripts\build-pt-meek.ps1
}
- save_cache:
key: build-win64-meek-{{ checksum "~/project/desktop/scripts/build-pt-meek.ps1" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe
- run:
name: Build OnionShare
command: |
cd ~\project\desktop
poetry run python .\setup-freeze.py build
poetry run python .\scripts\build-windows.py cleanup-build
- run:
name: Compress
command: |
mv ~\project\desktop\build\exe.win-amd64-3.9\ ~\onionshare-win64
Compress-Archive -LiteralPath ~\onionshare-win64 -DestinationPath ~\onionshare-win64.zip
- store_artifacts:
path: ~\onionshare-win64.zip
build-win32:
executor:
name: win/default
shell: powershell.exe
steps:
- checkout
- run:
name: Install Python 3.9.12 (32-bit)
command: |
choco install python3 --params "/InstallDir32:C:\Python-32bit" --version=3.9.12
- run:
name: Install poetry (32-bit)
command: C:\Python-32bit\Scripts\pip install poetry
- restore_cache:
key: build-win32-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Install poetry dependencies
command: |
cd ~\project\desktop
C:\Python-32bit\Scripts\poetry install
- save_cache:
key: build-win32-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\AppData\Local\pypoetry\Cache\virtualenvs
- restore_cache:
key: get-tor-{{ checksum "desktop/scripts/get-tor.py" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Get tor binaries from Tor Browser (32-bit)
command: |
cd desktop
C:\Python-32bit\Scripts\poetry run python .\scripts\get-tor.py win32
- save_cache:
key: get-tor-{{ checksum "desktop/scripts/get-tor.py" }}-{{ .Environment.CACHE_VERSION }}
paths:
- C:\Users\circleci\project\desktop\build\tor
- run:
name: Install golang (32-bit)
command: |
cd ~\Downloads
Invoke-WebRequest -Uri https://go.dev/dl/go1.18.windows-386.msi -OutFile go1.18.windows-386.msi
msiexec.exe /i go1.18.windows-386.msi /quiet /L*V go-install.log
2022-04-19 21:42:37 -04:00
- restore_cache:
key: build-win32-obfs4proxy-{{ checksum "~/project/desktop/scripts/build-pt-obfs4proxy.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build obfs4proxy
2022-04-10 23:49:29 -04:00
command: |
if ((Test-Path -Path C:\Users\circleci\project\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 C:\Users\circleci\project\desktop
.\scripts\build-pt-obfs4proxy.ps1
}
2022-04-19 21:42:37 -04:00
- save_cache:
key: build-win32-obfs4proxy-{{ checksum "~/project/desktop/scripts/build-pt-obfs4proxy.ps1" }}-{{ .Environment.CACHE_VERSION }}
2022-04-19 21:42:37 -04:00
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
2022-04-19 21:42:37 -04:00
- restore_cache:
key: build-win32-snowflake-{{ checksum "~/project/desktop/scripts/build-pt-snowflake.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build snowflake-client
command: |
if ((Test-Path -Path C:\Users\circleci\project\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 C:\Users\circleci\project\desktop
.\scripts\build-pt-snowflake.ps1
}
2022-04-19 21:42:37 -04:00
- save_cache:
key: build-win32-snowflake-{{ checksum "~/project/desktop/scripts/build-pt-snowflake.ps1" }}-{{ .Environment.CACHE_VERSION }}
2022-04-19 21:42:37 -04:00
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
2022-04-19 21:42:37 -04:00
- restore_cache:
key: build-win32-meek-{{ checksum "~/project/desktop/scripts/build-pt-meek.ps1" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: Build meek-client
command: |
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe) -eq $True) {
Write-Output "snowflake already built"
} else {
$env:PATH = "C:\Program Files (x86)\Go\bin\go;$env:PATH"
cd C:\Users\circleci\project\desktop
.\scripts\build-pt-meek.ps1
}
2022-04-19 21:42:37 -04:00
- save_cache:
key: build-win32-meek-{{ checksum "~/project/desktop/scripts/build-pt-meek.ps1" }}-{{ .Environment.CACHE_VERSION }}
2022-04-19 21:42:37 -04:00
paths:
- C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe
- run:
name: Build OnionShare
command: |
cd ~\project\desktop
C:\Python-32bit\Scripts\poetry run python .\setup-freeze.py build
2022-04-03 20:35:41 -04:00
C:\Python-32bit\Scripts\poetry run python .\scripts\build-windows.py cleanup-build
- run:
name: Compress
command: |
mv ~\project\desktop\build\exe.win32-3.9\ ~\onionshare-win32
Compress-Archive -LiteralPath ~\onionshare-win32 -DestinationPath ~\onionshare-win32.zip
- store_artifacts:
path: ~\onionshare-win32.zip
build-macos:
macos:
xcode: 12.5.1
2022-04-19 21:14:04 -04:00
environment:
BINARY_DIR: /Users/distiller/bin
steps:
- checkout
2022-03-31 22:35:26 -04:00
- run:
name: Install Homebrew dependencies
command: |
brew install wget
brew install go
2022-03-31 22:35:26 -04:00
- run:
name: Install Python 3.9.12
command: |
wget https://www.python.org/ftp/python/3.9.12/python-3.9.12-macosx10.9.pkg -O ~/Downloads/python.pkg
2022-03-31 22:35:26 -04:00
sudo installer -pkg ~/Downloads/python.pkg -target /
2022-03-31 22:35:26 -04:00
- run:
name: Install poetry
command: |
pip3 install poetry
ln -s /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry /usr/local/bin
2022-03-31 22:35:26 -04:00
- run:
name: Install poetry dependencies
command: |
cd ~/project/desktop
poetry install
2022-03-31 22:35:26 -04:00
- run:
name: Build OnionShare
command: |
cd ~/project/desktop
poetry run python ./setup-freeze.py build
2022-03-31 22:35:26 -04:00
poetry run python ./setup-freeze.py bdist_mac
2022-04-03 20:35:41 -04:00
poetry run python ./scripts/build-macos.py cleanup-build
2022-03-31 22:35:26 -04:00
- run:
name: Compress
command: |
2022-04-05 20:34:04 -04:00
cd ~/project/desktop/build
zip -r ~/onionshare-macos.zip OnionShare.app
2022-03-31 22:35:26 -04:00
- store_artifacts:
path: ~/onionshare-macos.zip