Further fixes to book deploy (#28) #38
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
on: | |
push: | |
branches: | |
- staging | |
- master | |
pull_request: | |
branches: | |
- staging | |
- master | |
workflow_dispatch: | |
# Only allow one such workflow to run at a time | |
# (since the supplied VirES tokens will only allow 2 max async jobs) | |
concurrency: | |
group: ${{ github.workflow }} | |
env: | |
DOCKER_IMAGE: 'registry.gitlab.eox.at/esa/vires_vre_ops/vre-swarm-notebook' | |
PRODUCTION_TAG: '1.0.1' | |
STAGING_TAG: '1.0.1' | |
jobs: | |
book: | |
name: Build Jupyter Book | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set run references (to switch master/staging/pr behaviour), and target docker image | |
run: | | |
BRANCH_NAME=$(echo "${{ github.ref }}" | sed 's|.*/||') | |
GH_DEPLOY_ENV="${BRANCH_NAME}" | |
ENABLE_GH_DEPLOY=$(if [[ "$BRANCH_NAME" == "master" || "$BRANCH_NAME" == "staging" ]]; then echo "true"; else echo "false"; fi) | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
RUN_REF="pr${{ github.event.number }}" | |
TARGET_BRANCH_NAME="${{ github.event.pull_request.base.ref }}" | |
elif [ "${{ github.event_name }}" == "push" ]; then | |
RUN_REF="${BRANCH_NAME}" | |
TARGET_BRANCH_NAME=${BRANCH_NAME} | |
elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then | |
RUN_REF="${BRANCH_NAME}" | |
TARGET_BRANCH_NAME="master" | |
fi | |
if [ "$TARGET_BRANCH_NAME" == "staging" ]; then | |
RESOLVED_DOCKER_IMAGE="${{ env.DOCKER_IMAGE }}:${{ env.STAGING_TAG }}" | |
else | |
RESOLVED_DOCKER_IMAGE="${{ env.DOCKER_IMAGE }}:${{ env.PRODUCTION_TAG }}" | |
fi | |
echo "RUN_REF=${RUN_REF}" >> $GITHUB_ENV | |
echo "TARGET_BRANCH_NAME=${TARGET_BRANCH_NAME}" >> $GITHUB_ENV | |
echo "GH_DEPLOY_ENV=${GH_DEPLOY_ENV}" >> $GITHUB_ENV | |
echo "ENABLE_GH_DEPLOY=${ENABLE_GH_DEPLOY}" >> $GITHUB_ENV | |
echo "RESOLVED_DOCKER_IMAGE=${RESOLVED_DOCKER_IMAGE}" >> $GITHUB_ENV | |
- name: Pull the relevant docker image | |
run: | | |
echo ${{ secrets.EOX_REGISTRY_PASSWORD }} | docker login -u ${{ secrets.EOX_REGISTRY_USER }} --password-stdin registry.gitlab.eox.at | |
docker pull ${{ env.RESOLVED_DOCKER_IMAGE }} | |
- uses: actions/checkout@v4 | |
- name: Add bookbuilder environment to container | |
run: | | |
docker run --name temp-container -v $GITHUB_WORKSPACE:/home/jovyan -u root ${{ env.RESOLVED_DOCKER_IMAGE }} \ | |
bash -c \ | |
' | |
mamba run --no-capture-output -n base python -m ipykernel install --user --name base && \ | |
mamba create --name bookbuilder --file .bookbuilder/conda-linux-64.lock | |
' | |
docker commit temp-container ${{ env.DOCKER_IMAGE }}:customized | |
- name: Execute notebooks using nbmake (staging / other) | |
if: env.TARGET_BRANCH_NAME == 'staging' | |
run: | | |
docker run -v $GITHUB_WORKSPACE:/home/jovyan -u root \ | |
-e VIRES_TOKEN=${{ secrets.VIRES_TOKEN }} \ | |
-e VIRES_TOKEN_STAGING=${{ secrets.VIRES_TOKEN_STAGING }} \ | |
-e VIRES_TOKEN_STAGING_DISC=${{ secrets.VIRES_TOKEN_STAGINGDISC}} \ | |
${{ env.DOCKER_IMAGE }}:customized \ | |
bash -c \ | |
' | |
export CDF_LIB=/opt/conda/lib && \ | |
pip install --upgrade 'git+https://github.com/ESA-VirES/VirES-Python-Client@staging#egg=viresclient' && \ | |
viresclient set_token https://vires.services/ows $VIRES_TOKEN && \ | |
viresclient set_token https://staging.vires.services/ows $VIRES_TOKEN_STAGING && \ | |
viresclient set_token https://staging.viresdisc.vires.services/ows $VIRES_TOKEN_STAGING_DISC && \ | |
viresclient set_default_server https://vires.services/ows && \ | |
mamba run -n bookbuilder pytest --numprocesses 2 --nbmake --overwrite --nbmake-kernel=base \ | |
notebooks/*.ipynb \ | |
--deselect=notebooks/04c1_Geomag-Ground-Data-FTP.ipynb | |
' | |
- name: Execute notebooks using nbmake (production) | |
if: env.TARGET_BRANCH_NAME == 'master' | |
run: | | |
docker run -v $GITHUB_WORKSPACE:/home/jovyan -u root \ | |
-e VIRES_TOKEN=${{ secrets.VIRES_TOKEN }} \ | |
${{ env.DOCKER_IMAGE }}:customized \ | |
bash -c \ | |
' | |
export CDF_LIB=/opt/conda/lib && \ | |
viresclient set_token https://vires.services/ows $VIRES_TOKEN && \ | |
viresclient set_default_server https://vires.services/ows && \ | |
mamba run -n bookbuilder pytest --numprocesses 2 --nbmake --overwrite --nbmake-kernel=base \ | |
notebooks/*.ipynb \ | |
--deselect=notebooks/04c1_Geomag-Ground-Data-FTP.ipynb | |
' | |
- name: Build book | |
if: always() | |
run: | | |
docker run -v $GITHUB_WORKSPACE:/home/jovyan -u root ${{ env.DOCKER_IMAGE }}:customized \ | |
bash -c \ | |
' | |
mamba run -n bookbuilder jupyter-book build --config _config-ci-${{ env.TARGET_BRANCH_NAME }}.yml . | |
' | |
- name: Deploy preview to Netlify | |
if: always() | |
uses: nwtgck/[email protected] | |
with: | |
publish-dir: './_build/html' | |
production-deploy: false | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
# RUN_REF is set to one of "master", "staging", "pr#" | |
deploy-message: "Deploy from GitHub Actions (${{ env.RUN_REF }})" | |
# Github deployment environment is one of "master", "staging" | |
enable-github-deployment: ${{ env.ENABLE_GH_DEPLOY }} | |
github-deployment-environment: ${{ env.GH_DEPLOY_ENV }} | |
enable-pull-request-comment: true | |
enable-commit-comment: false | |
overwrites-pull-request-comment: true | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_API_ID }} |