Skip to content

R docker refactor for lab sessions #57

R docker refactor for lab sessions

R docker refactor for lab sessions #57

Workflow file for this run

name: CI
# Enable Buildkit and let compose use it to speed up image building
env:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
CONDA_ENV_NAME: clim-recal
MIN_PYTHON_VERSION: 3.9
PYTHON_MODULE_FOLDER: /home/jovyan/python/
COVERAGE_SVG_FOLDER: docs/assets/
COVERAGE_SVG_FILE_NAME: coverage.svg
# replace below with references to previous config lines
COVERAGE_SVG_PATH: docs/assets/coverage.svg
GH_PAGE_PATH: _gh-page
on:
pull_request:
branches: ['main', 'doc-deploy', 'ruth-notebook-for-workshop', 'r-docker-refactor']
paths-ignore: ['docs/**']
push:
branches: ['main', 'doc-deploy', 'ruth-notebook-for-workshop', 'r-docker-refactor']
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: write
jobs:
linter:
runs-on: ubuntu-latest
steps:
- name: Checkout Code Repository
uses: actions/checkout@main
- name: Set up Python
uses: actions/setup-python@main
with:
python-version: ${{ env.MIN_PYTHON_VERSION }}
- name: Run pre-commit
uses: pre-commit/action@main
- name: Update pre-commit
uses: pre-commit-ci/[email protected]
if: always()
# With no caching at all the entire ci process takes 4m 30s to complete!
pytest:
runs-on: ubuntu-latest
steps:
- name: Checkout Code Repository
uses: actions/checkout@main
- name: Build, Test and Save Test Coverage
run: |
docker compose build jupyter
docker compose up jupyter --detach
docker compose exec -u 0 jupyter bash -c "conda run -n ${{ env.CONDA_ENV_NAME }} --cwd python pytest"
export JUPYTER_ID=$(docker compose ps -q jupyter)
echo "jupyter_id=$JUPYTER_ID" >> $GITHUB_ENV
- name: Check accessing saved jupyter_id
run: |
echo ${{ env.jupyter_id }}
- name: Copy test coverage results
run: |
docker cp ${{ env.jupyter_id }}:${{ env.PYTHON_MODULE_FOLDER }}${{ env.COVERAGE_SVG_PATH }} ${{ env.COVERAGE_SVG_FOLDER }}
- name: Archive coverage svg
uses: actions/upload-artifact@v3
with:
name: coverage-badge
path: ${{ env.COVERAGE_SVG_PATH }}
- name: Tear down the Stack
run: docker compose down
docs:
needs: [linter, pytest]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download coverage svg
uses: actions/download-artifact@v3
with:
name: coverage-badge
path: ${{ env.GH_PAGE_PATH }}${{ env.COVERAGE_SVG_PATH }}
# Other options for documentation build for future testing outside docker
# - name: Set up conda environment
# uses: conda-incubator/setup-miniconda@v2
# with:
# activate-environment: environment.yml
#
# From https://github.com/r-lib/actions/tree/v2-branch/setup-r
# - name: Setup R
# uses: r-lib/actions/setup-r@v2
# Potentially necessary for future interactive documentation builds following uatk-spc
# - name: Install node
# uses: actions/setup-node@v2
# with:
# node-version: 18.x
# cache: 'npm'
# cache-dependency-path: web/package-lock.json
#
# - name: Build web app
# run: |
# cd web
# npm ci
# npm run build --if-present
# mv dist ../docs/_book/app
- name: Build docker quarto
run: |
# A potentially quicker build option to try in future, requires running in detatched mode
# DOCKER_BUILDKIT=1 docker build --no-cache -f compose/docs/Dockerfile --target builder --tag 'clim-recal-docs' .
docker compose build docs
docker compose up --detach
docker cp $(docker compose ps -q docs):/usr/local/apache2/htdocs/ ${{ env.GH_PAGE_PATH }}
- name: Publish
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ${{ env.GH_PAGE_PATH }}
keep_files: false