Skip to content

Integration tests for sigopt/sigopt-python@refs/heads/main #291

Integration tests for sigopt/sigopt-python@refs/heads/main

Integration tests for sigopt/sigopt-python@refs/heads/main #291

Workflow file for this run

name: integration tests
run-name: Integration tests for ${{ github.repository }}@${{ github.ref }}
on:
push: {}
schedule:
- cron: "0 8,16 * * *"
jobs:
integration-test:
runs-on: ubuntu-latest
env:
SIGOPT_PROJECT: hyperopt-integration-test
SIGOPT_API_URL: https://sigopt.ninja:4443/api
SIGOPT_API_VERIFY_SSL_CERTS: /home/runner/work/sigopt-python/sigopt-server/artifacts/tls/root-ca.crt
steps:
- name: Check out repository code
uses: actions/checkout@v3
- run: sudo mkdir -p /etc/apt/keyrings
- run: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- run: sudo apt-get remove -yqq moby-buildx moby-compose moby-cli
- run: |
echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- run: |
sudo apt-get update -yqq && sudo apt-get install -yqq \
docker-ce-cli=5:20.10.23~3-0~ubuntu-focal \
docker-compose-plugin=2.16.0-1~ubuntu.20.04~focal
- run: echo '127.0.0.1 sigopt.ninja' | sudo tee -a /etc/hosts
- run: git clone https://github.com/sigopt/sigopt-server ../sigopt-server
- run: |
cd ../sigopt-server
git checkout main
EDITOR=true ./setup.sh | tee setup_output.log
./start.sh &
- run: |
cd ../sigopt-server
./ci/wait_for.sh url "$SIGOPT_API_URL/health"
- run: |
EMAIL="$(tail -n 2 ../sigopt-server/setup_output.log | grep -E '^ email:' | awk -F': ' '{ print $2 }')"
PASSWORD="$(tail -n 2 ../sigopt-server/setup_output.log | grep -E '^ password:' | awk -F': ' '{ print $2 }')"
curl -fsk -XPOST "$SIGOPT_API_URL/v1/sessions" -d '{"email": "'"$EMAIL"'", "password": "'"$PASSWORD"'"}' | \
jq -r .api_token.token >sigopt_user_token.txt
curl -fsk --user "$(cat sigopt_user_token.txt):" "$SIGOPT_API_URL/v1/clients/1/tokens" | \
jq -r '.data[] | select(.token_type == "client-api") | .token' >sigopt_api_token.txt
- run: pip install '.[dev]'
- run: sudo apt-get update && sudo apt-get -y install default-jre
- run: docker run -p 27017:27017 -d mongo:5.0.6
- run: hyperopt-mongo-worker --mongo=localhost:27017/foo_db --poll-interval=0.1 --max-consecutive-failures=100000 &>/dev/null &
- run: env SIGOPT_API_TOKEN="$(cat sigopt_api_token.txt)" sigopt create project
- name: Integration tests
run: env SIGOPT_API_TOKEN="$(cat sigopt_api_token.txt)" pytest -rw -v integration_test/
tutorial:
runs-on: ubuntu-latest
env:
SIGOPT_PROJECT: tutorial
SIGOPT_API_URL: https://sigopt.ninja:4443/api
SIGOPT_API_VERIFY_SSL_CERTS: /home/runner/work/sigopt-python/sigopt-server/artifacts/tls/root-ca.crt
steps:
- name: Check out repository code
uses: actions/checkout@v3
- run: sudo mkdir -p /etc/apt/keyrings
- run: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- run: sudo apt-get remove -yqq moby-buildx moby-compose moby-cli
- run: |
echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- run: |
sudo apt-get update -yqq && sudo apt-get install -yqq \
docker-ce-cli=5:20.10.23~3-0~ubuntu-focal \
docker-compose-plugin=2.16.0-1~ubuntu.20.04~focal
- run: sudo apt-get install -yqq expect
- run: echo '127.0.0.1 sigopt.ninja' | sudo tee -a /etc/hosts
- run: git clone https://github.com/sigopt/sigopt-server ../sigopt-server
- run: |
cd ../sigopt-server
git checkout main
EDITOR=true ./setup.sh | tee setup_output.log
./start.sh &
- run: |
cd ../sigopt-server
./ci/wait_for.sh url "$SIGOPT_API_URL/health"
- run: |
EMAIL="$(tail -n 2 ../sigopt-server/setup_output.log | grep -E '^ email:' | awk -F': ' '{ print $2 }')"
PASSWORD="$(tail -n 2 ../sigopt-server/setup_output.log | grep -E '^ password:' | awk -F': ' '{ print $2 }')"
curl -fsk -XPOST "$SIGOPT_API_URL/v1/sessions" -d '{"email": "'"$EMAIL"'", "password": "'"$PASSWORD"'"}' | \
jq -r .api_token.token >sigopt_user_token.txt
curl -fsk --user "$(cat sigopt_user_token.txt):" "$SIGOPT_API_URL/v1/clients/1/tokens" | \
jq -r '.data[] | select(.token_type == "client-api") | .token' >sigopt_api_token.txt
- run: pip install '.[xgboost]' scikit-learn
- run: env SIGOPT_API_TOKEN="$(cat sigopt_api_token.txt)" sigopt create project
- run: env TEST_ACCOUNT_API_TOKEN="$(cat sigopt_api_token.txt)" ./ci/tutorial/sigopt_config.exp
- run: sigopt run python ./ci/tutorial/model.py