CI improvements #113
Workflow file for this run
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
# yaml-language-server: $schema=./main.yaml | |
name: CI | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
jobs: | |
tests: | |
name: Tests | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Free disk space | |
run: | | |
sudo rm -rf \ | |
/usr/share/dotnet /usr/local/lib/android /opt/ghc \ | |
/usr/local/share/powershell /usr/share/swift /usr/local/.ghcup \ | |
/usr/lib/jvm || true | |
# sudo apt install aptitude -y >/dev/null 2>&1 | |
# sudo aptitude purge aria2 ansible azure-cli shellcheck rpm xorriso zsync \ | |
# esl-erlang firefox gfortran-8 gfortran-9 google-chrome-stable \ | |
# google-cloud-sdk imagemagick \ | |
# libmagickcore-dev libmagickwand-dev libmagic-dev ant ant-optional kubectl \ | |
# mercurial apt-transport-https mono-complete libmysqlclient \ | |
# unixodbc-dev yarn chrpath libssl-dev libxft-dev \ | |
# libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev \ | |
# snmp pollinate libpq-dev postgresql-client powershell ruby-full \ | |
# sphinxsearch subversion mongodb-org azure-cli microsoft-edge-stable \ | |
# -y -f >/dev/null 2>&1 | |
# sudo aptitude purge google-cloud-sdk -f -y >/dev/null 2>&1 | |
# sudo aptitude purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true | |
# sudo apt purge microsoft-edge-stable -f -y >/dev/null 2>&1 || true | |
# sudo aptitude purge '~n ^mysql' -f -y >/dev/null 2>&1 | |
# sudo aptitude purge '~n ^php' -f -y >/dev/null 2>&1 | |
# sudo aptitude purge '~n ^dotnet' -f -y >/dev/null 2>&1 | |
# sudo apt-get autoremove -y >/dev/null 2>&1 | |
# sudo apt-get autoclean -y >/dev/null 2>&1 | |
- name: Restore Exasol image | |
id: cache-docker-exasol | |
uses: actions/cache@v3 | |
with: | |
path: ~/ci/cache/docker | |
key: cache-docker-exasol-7.0.22 | |
- name: Store Exasol image if cache miss | |
if: steps.cache-docker-exasol.outputs.cache-hit != 'true' | |
run: docker pull exasol/docker-db:7.0.22 && mkdir -p ~/ci/cache/docker && docker image save exasol/docker-db:7.0.22 --output ~/ci/cache/docker/exasol-7.0.22.tar | |
- name: Load Exasol image | |
run: docker image load --input ~/ci/cache/docker/exasol-7.0.22.tar | |
- name: Restore Rust Image | |
id: cache-docker-rust | |
uses: actions/cache@v3 | |
with: | |
path: ~/ci/cache/docker | |
key: cache-docker-rust-1.72.0 | |
- name: Store Rust image if cache miss | |
if: steps.cache-docker-rust.outputs.cache-hit != 'true' | |
run: docker pull rust:1.72.0 && mkdir -p ~/ci/cache/docker && docker image save rust:1.72.0 --output ~/ci/cache/docker/rust-1.72.0.tar | |
- name: Load Rust image | |
run: docker image load --input ~/ci/cache/docker/rust-1.72.0.tar | |
- name: Set up Python 3.10 | |
uses: actions/setup-python@v3 | |
with: | |
python-version: "3.10" | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pipenv | |
- uses: actions/checkout@v3 | |
with: | |
repository: Exasol/docker-db | |
ref: "7.0.22" | |
- name: Set up Exasol Cluster | |
run: | | |
pipenv install -r exadt_requirements.txt | |
pipenv run ./exadt create-cluster --root ~/sqlx --create-root sqlx | |
pipenv run ./exadt init-cluster --image exasol/docker-db:7.0.22 --license ./license/license.xml --num-nodes 3 --auto-storage sqlx | |
pipenv run ./exadt start-cluster sqlx | |
pipenv run ./exadt stop-cluster sqlx | |
docker network create sqlx --subnet=10.10.10.0/16 | |
docker run --rm --privileged --detach --network=sqlx --ip 10.10.10.11 --hostname n11 --name sqlx_11 --label ClusterName=sqlx --label NodeID=11 --label Name=n11 -e EXA_NODE_ID=11 -v ~/sqlx/n11:/exa -v /run/udev:/run/udev -v /run/lvm:/run/lvm -v /lib/modules:/lib/modules --entrypoint /usr/opt/EXASuite-7/EXARuntime-7.0.22/bin/numactl exasol/docker-db:7.0.22 --interleave=all /usr/opt/EXASuite-7/EXAClusterOS-7.0.22/libexec/exainit.py | |
docker run --rm --privileged --detach --network=sqlx --ip 10.10.10.12 --hostname n12 --name sqlx_12 --label ClusterName=sqlx --label NodeID=12 --label Name=n12 -e EXA_NODE_ID=12 -v ~/sqlx/n12:/exa -v /run/udev:/run/udev -v /run/lvm:/run/lvm -v /lib/modules:/lib/modules --entrypoint /usr/opt/EXASuite-7/EXARuntime-7.0.22/bin/numactl exasol/docker-db:7.0.22 --interleave=all /usr/opt/EXASuite-7/EXAClusterOS-7.0.22/libexec/exainit.py | |
docker run --rm --privileged --detach --network=sqlx --ip 10.10.10.13 --hostname n13 --name sqlx_13 --label ClusterName=sqlx --label NodeID=13 --label Name=n13 -e EXA_NODE_ID=13 -v ~/sqlx/n13:/exa -v /run/udev:/run/udev -v /run/lvm:/run/lvm -v /lib/modules:/lib/modules --entrypoint /usr/opt/EXASuite-7/EXARuntime-7.0.22/bin/numactl exasol/docker-db:7.0.22 --interleave=all /usr/opt/EXASuite-7/EXAClusterOS-7.0.22/libexec/exainit.py | |
- name: Create connection strings | |
run: | | |
CONTAINER_ID=`docker ps --format "table {{.ID}}\t" | head -2 | tail -1` | |
EXA_IP=`docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $CONTAINER_ID` | |
echo "NO_TLS_URL=exa://sys:exasol@$EXA_IP:8563?ssl-mode=disabled" >> $GITHUB_ENV | |
echo "TLS_URL=exa://sys:exasol@$EXA_IP:8563" >> $GITHUB_ENV | |
- uses: actions/checkout@v3 | |
- uses: Swatinem/rust-cache@v2 | |
- run: sleep 300 | |
- name: Run tests | |
run: | | |
docker logs sqlx_11 | |
docker logs sqlx_12 | |
docker logs sqlx_13 | |
docker ps -a | |
docker run --rm --network=sqlx -e DATABASE_URL="exa://sys:[email protected]:8563" -v "$PWD":/usr/src/sqlx-exasol -w /usr/src/sqlx-exasol rust:1.72.0 cargo test --features migrate -- --nocapture |