Skip to content

FIX post refreshing #391

FIX post refreshing

FIX post refreshing #391

Workflow file for this run

name: Anubis Main CD/CI
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
# Test Stage.
test-api:
name: Test api
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: api
strategy:
matrix:
python-version: [ '3.10' ]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v2
id: cache-venv # name for referring later
with:
path: |
**/venv
key: ${{ runner.os }}-venv-${{ hashFiles('**/api/requirements/dev.txt') }}
- name: Install dependencies
run: |
set -ex
python -m venv venv
if [ -f requirements/dev.txt ]; then ./venv/bin/pip install -r requirements/dev.txt; fi
if: steps.cache-venv.outputs.cache-hit != 'true'
- name: Background API
run: |
set -ex
docker run -itd -p 6379:6379 redis redis-server --requirepass anubis
env MINDEBUG=1 MIGRATE=1 ./venv/bin/python3 dev.py &
- name: Wait for startup
run: sleep 3
- name: Test with pytest
run: |
./tests/mintest.sh
- name: Teardown
run: |
killall -9 python3
# Test Stage.
test-theia-shell-autograde:
name: Test shell autograde
runs-on: ubuntu-latest
defaults:
run:
shell: bash
working-directory: theia/autograde/
strategy:
matrix:
python-version: [ '3.7', '3.10' ]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
# - uses: actions/cache@v2
# id: cache-venv # name for referring later
# with:
# path: |
# **/venv
# key: ${{ runner.os }}-venv-${{ matrix.python-version }}-${{ hashFiles('**/theia/autograde/requirements.txt') }}-${{ hashFiles('**/theia/autograde/requirements_dev.txt') }}
- name: Install dependencies
run: |
set -ex
python -m venv venv
./venv/bin/pip install -r requirements.txt -r requirements_dev.txt
./venv/bin/pip install -e .
if: steps.cache-venv.outputs.cache-hit != 'true'
- name: Pytest
run: venv/bin/pytest
# Build Stage.
# Will build the docker image, and push it
# to the container registry.
build-api:
name: Build api
needs: [test-api]
runs-on: ubuntu-latest
environment: anubis
steps:
- uses: actions/checkout@v2
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Log into DigitalOcean container registry
run: doctl registry login
- name: Build container image
run: env GIT_TAG=$(git log -1 --pretty=%h) docker compose build api
- name: Build container image
run: env GIT_TAG=latest docker compose build api
- name: Push image to registry
run: env GIT_TAG=$(git log -1 --pretty=%h) docker compose push api
- name: Push image to registry
run: env GIT_TAG=latest docker compose push api
build-theia-shell-autograde:
name: Build shell autograde
needs: [test-theia-shell-autograde]
runs-on: ubuntu-latest
environment: anubis
steps:
- uses: actions/checkout@v2
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Log into DigitalOcean container registry
run: doctl registry login
- name: Build container image
run: |
env GIT_TAG=$(git log -1 --pretty=%h) docker compose build theia-autograde theia-autograde-docs
env GIT_TAG=latest docker compose build theia-autograde theia-autograde-docs
- name: Push image to registry
run: |
env GIT_TAG=$(git log -1 --pretty=%h) docker compose push theia-autograde theia-autograde-docs
env GIT_TAG=latest docker compose push theia-autograde theia-autograde-docs
build-web:
name: Build web
runs-on: ubuntu-latest
environment: anubis
steps:
- uses: actions/checkout@v2
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Log into DigitalOcean container registry
run: doctl registry login
- name: Build container image
run: |
env GIT_TAG=$(git log -1 --pretty=%h) docker compose build web
env GIT_TAG=latest docker compose build web
- name: Push image to registry
run: |
env GIT_TAG=$(git log -1 --pretty=%h) docker compose push web
env GIT_TAG=latest docker compose push web
build-theia-images:
name: Build images
runs-on: ubuntu-latest
environment: anubis
strategy:
matrix:
image:
- theia-proxy
- theia-init
- theia-autosave
- theia-dockerd
steps:
- uses: actions/checkout@v2
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Log into DigitalOcean container registry
run: doctl registry login
- name: Build container image
run: env GIT_TAG=$(git log -1 --pretty=%h) docker compose build ${{ matrix.image }}
- name: Build container image
run: env GIT_TAG=latest docker compose build ${{ matrix.image }}
- name: Push image to registry
run: env GIT_TAG=$(git log -1 --pretty=%h) docker compose push ${{ matrix.image }}
- name: Push image to registry
run: env GIT_TAG=latest docker compose push ${{ matrix.image }}
# Deploy step.
# Will push out yaml to the k8s cluster, then restart
# deployments.
deploy:
name: Deploy to Anubis k8s cluster
needs: [build-api, build-web, build-theia-shell-autograde, build-theia-images]
runs-on: ubuntu-latest
environment: anubis
steps:
- uses: actions/checkout@v2
- name: Install doctl
uses: digitalocean/action-doctl@v2
with:
token: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: Save DigitalOcean kubeconfig
run: doctl kubernetes cluster kubeconfig save anubis
- name: Helm upgrade
run: make upgrade
- name: Verify deployment
run: make status