Fixed local ip lookup on macOS GitHub instances. #702
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build - macOS | |
on: [workflow_dispatch, push, pull_request] | |
env: | |
TERM: xterm-256color | |
jobs: | |
build: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Build - macOS Xcode | |
runs-on: macos-latest | |
compiler: clang | |
cxx-compiler: clang++ | |
cmake-args: -G Xcode -D PROXYRES_CODE_COVERAGE=ON | |
codecov: macos | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Generate project | |
run: | | |
cmake -S . -B build ${{ matrix.cmake-args }} \ | |
-D CMAKE_BUILD_TYPE=RelWithDebInfo \ | |
-D BUILD_SHARED_LIBS=OFF | |
env: | |
CC: ${{ matrix.compiler }} | |
CXX: ${{ matrix.cxx-compiler }} | |
- name: Build project | |
run: cmake --build build --config RelWithDebInfo | |
- name: Setup node version | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.0 | |
- name: Install test dependencies | |
run: | | |
corepack enable | |
yarn install | |
working-directory: test | |
- name: Run test http server | |
run: | | |
npx pm2 start http_server_cmd.js | |
sleep 15 | |
working-directory: test | |
- name: Run test dhcp server | |
# Used by wpad.dhcp googletest | |
run: | | |
npx pm2 start dhcp_server_cmd.js --output dhcp_server.log | |
sleep 5 | |
working-directory: test | |
- name: Run tests | |
run: ctest --verbose -C RelWithDebInfo | |
working-directory: build | |
#env: | |
# WPAD: true | |
- name: Download pac from http server | |
run: curl -v http://127.0.0.1:8080/pac.js | |
working-directory: test | |
- name: Dump proxy info | |
run: scutil --proxy | |
- name: Dump network services | |
run: networksetup -listallnetworkservices | |
- name: Turn on proxy auto discovery (networksetup) | |
run: networksetup -setproxyautodiscovery Ethernet on | |
- name: Check proxy auto discovery setting (networksetup) | |
run: | | |
out=$(./proxycli config auto_discover) | |
echo "Auto discovery: $out" | |
if [ "$out" = "enabled" ]; then | |
echo "Auto discovery set successfully" | |
else | |
echo "Auto discovery set failed" | |
exit 1 | |
fi | |
working-directory: build/test/RelWithDebInfo | |
- name: Turn off proxy auto discovery (networksetup) | |
run: networksetup -setproxyautodiscovery Ethernet off | |
- name: Set proxy auto config url setting (networksetup) | |
run: networksetup -setautoproxyurl Ethernet http://wpad/wpad3.dat | |
- name: Check proxy auto config url setting (networksetup) | |
run: | | |
out=$(./proxycli config auto_config_url) | |
echo "Auto config url: $out" | |
if [ "$out" = "http://wpad/wpad3.dat" ]; then | |
echo "Auto config url set successfully" | |
else | |
echo "Auto config url set failed" | |
exit 1 | |
fi | |
working-directory: build/test/RelWithDebInfo | |
- name: Set manual proxy settings (networksetup) | |
run: | | |
networksetup -setwebproxy Ethernet my.proxy7.com 8007 | |
networksetup -setsecurewebproxy Ethernet my.proxy8.com 8008 | |
networksetup -setproxybypassdomains Ethernet hi.com world.com | |
- name: Check manual proxy settings (networksetup) | |
shell: bash | |
run: | | |
out=$(./proxycli config proxy http) | |
echo "Proxy (http): $out" | |
if [ "$out" = "my.proxy7.com:8007" ]; then | |
echo "Proxy (http) set successfully" | |
else | |
echo "Proxy (http) set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config proxy https) | |
echo "Proxy (https): $out" | |
if [ "$out" = "my.proxy8.com:8008" ]; then | |
echo "Proxy (https) set successfully" | |
else | |
echo "Proxy (https) set failed" | |
exit 1 | |
fi | |
out=$(./proxycli config bypass_list) | |
echo "Proxy bypass: $out" | |
if [ "$out" = "hi.com,world.com" ]; then | |
echo "Proxy bypass set successfully" | |
else | |
echo "Proxy bypass set failed" | |
exit 1 | |
fi | |
working-directory: build/test/RelWithDebInfo | |
- name: Set proxy auto config url setting (networksetup) | |
run: | | |
networksetup -setautoproxyurl Ethernet http://127.0.0.1:8080/pac.js | |
networksetup -setautoproxystate Ethernet on | |
- name: Check proxy resolution (networksetup) | |
shell: bash | |
run: | | |
out=$(./proxycli config auto_config_url) | |
echo "Auto config url: $out" | |
if [ "$out" = "http://127.0.0.1:8080/pac.js" ]; then | |
echo "Auto config url set successfully" | |
else | |
echo "Auto config url set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve https://google.com/) | |
echo "Proxy for https://google.com/: $out" | |
if [ "$out" = "direct://" ]; then | |
echo "Proxy for https://google.com/ set successfully" | |
else | |
echo "Proxy for https://google.com/ set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve http://simple.com/) | |
echo "Proxy for http://simple.com/: $out" | |
if [ "$out" = "http://no-such-proxy:80" ]; then | |
echo "Proxy for http://simple.com/ set successfully" | |
else | |
echo "Proxy for http://simple.com/ set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve https://simple.com/) | |
echo "Proxy for https://simple.com/: $out" | |
if [ "$out" = "http://no-such-proxy:80" ]; then | |
echo "Proxy for https://simple.com/ set successfully" | |
else | |
echo "Proxy for https://simple.com/ set failed" | |
exit 1 | |
fi | |
out=$(./proxycli resolve https://multi-legacy.com/) | |
echo "Proxy for https://multi-legacy.com/: $out" | |
if [ "$out" = "http://some-such-proxy:443,http://any-such-proxy:41" ]; then | |
echo "Proxy for https://multi-legacy.com/ set successfully" | |
else | |
echo "Proxy for https://multi-legacy.com/ set failed" | |
exit 1 | |
fi | |
working-directory: build/test/RelWithDebInfo | |
- name: Reset proxy settings (networksetup) | |
run: | | |
networksetup -setautoproxystate Ethernet off | |
networksetup -setwebproxystate Ethernet off | |
networksetup -setsecurewebproxystate Ethernet off | |
- name: Generate coverage report | |
if: always() && matrix.codecov | |
run: | | |
python3 -u -m pip install --user gcovr | |
python3 -m gcovr \ | |
--exclude-unreachable-branches \ | |
--gcov-ignore-parse-errors \ | |
--root . \ | |
--xml \ | |
--output coverage.xml \ | |
--verbose | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v2 | |
if: always() && matrix.codecov && env.CODECOV_TOKEN != '' | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: ${{ matrix.codecov }} | |
name: ${{ matrix.name }} | |
verbose: false | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN }}" | |
- name: Upload build errors | |
uses: actions/upload-artifact@v2 | |
if: failure() | |
with: | |
name: Build Errors - ${{ matrix.name }} | |
path: | | |
**/CMakeFiles/CMakeOutput.log | |
**/CMakeFiles/CMakeError.log | |
**/Testing/Temporary/LastTest.log | |
**/*.log | |
retention-days: 3 |