Test skip before_script and create env on the fly #194
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
name: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
release: | |
types: | |
- published | |
permissions: | |
contents: write | |
env: | |
SKIP_DEPLOY: false | |
SKIP_INSTALL: false | |
SKIP_TEST: false | |
jobs: | |
# before_script: | |
# runs-on: self-hosted | |
# strategy: | |
# matrix: | |
# node-version: [ 20.x ] | |
# steps: | |
# - name: Checkout code | |
# uses: actions/checkout@v4 | |
# - name: Set up Python | |
# uses: actions/setup-python@v5 | |
# with: | |
# python-version: '3.x' | |
# - name: Install dependencies | |
# run: | | |
# conda init bash | |
# source ~/.bashrc | |
# mamba env remove --name ci_temp_env --yes || echo "Environment ci_temp_env does not exist" | |
# mamba create -n ci_temp_env --clone ci_env | |
# source activate ci_temp_env | |
# # TODO: create the ci_env with the installation of the following packages and remove the following line | |
# mamba install json5 cmcrameri conda-forge::sphinx_rtd_theme | |
# shell: bash | |
test_sarvey: | |
runs-on: self-hosted | |
needs: test_sarvey_install | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Run tests | |
if: env.SKIP_TEST == 'false' | |
run: | | |
conda init bash | |
source ~/.bashrc | |
source activate ci_temp_env | |
rm -rf tests/testdata | |
wget -nv -c -O testdata.zip https://seafile.projekt.uni-hannover.de/f/4b3be399dffa488e98db/?dl=1 | |
unzip testdata.zip | |
mv testdata tests/ | |
mamba list | |
make pytest | |
shell: bash | |
make_docs: | |
runs-on: self-hosted | |
needs: test_sarvey_install | |
steps: | |
- name: create docs | |
if: env.SKIP_DEPLOY == 'false' | |
run: | | |
conda init bash | |
source ~/.bashrc | |
source activate ci_temp_env | |
make docs | |
shell: bash | |
- name: Upload coverage report | |
if: env.SKIP_DEPLOY == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-report | |
path: htmlcov/ | |
- name: Upload report.html | |
if: env.SKIP_DEPLOY == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-report | |
path: report.html | |
- name: Upload docs | |
if: env.SKIP_DEPLOY == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: docs | |
path: docs/_build/html/ | |
- name: Upload cobertura coverage report | |
if: env.SKIP_DEPLOY == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cobertura-coverage | |
path: coverage.xml | |
- name: Upload junit report | |
if: env.SKIP_DEPLOY == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: junit-report | |
path: report.xml | |
test_styles: | |
runs-on: self-hosted | |
needs: test_sarvey_install | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
if: env.SKIP_TEST == 'false' | |
run: | | |
conda init bash | |
source ~/.bashrc | |
source activate ci_temp_env | |
make lint | |
shell: bash | |
- name: Upload flake8 log | |
if: env.SKIP_TEST == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: flake8-log | |
path: tests/linting/flake8.log | |
- name: Upload pycodestyle log | |
if: env.SKIP_TEST == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pycodestyle-log | |
path: tests/linting/pycodestyle.log | |
- name: Upload pydocstyle log | |
if: env.SKIP_TEST == 'false' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pydocstyle-log | |
path: tests/linting/pydocstyle.log | |
test_urls: | |
runs-on: self-hosted | |
needs: test_sarvey_install | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
if: env.SKIP_TEST == 'false' | |
run: | | |
conda init bash | |
source ~/.bashrc | |
source activate ci_temp_env | |
make urlcheck | |
shell: bash | |
test_sarvey_install: | |
runs-on: self-hosted | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
if: env.SKIP_INSTALL == 'false' | |
run: | | |
source activate base | |
# mamba env remove --name sarvey_testinstall --yes || echo "Environment sarvey_testinstall does not exist" | |
mamba env remove --name ci_temp_env --yes || echo "Environment ci_temp_env does not exist" | |
pip install conda-merge | |
wget https://raw.githubusercontent.com/insarlab/MiaplPy/main/conda-env.yml | |
conda-merge conda-env.yml tests/CI_docker/context/environment_sarvey.yml > env.yml | |
# mamba env create --name sarvey_testinstall -f env.yml | |
mamba env create --name ci_temp_env -f env.yml | |
# source activate sarvey_testinstall | |
source activate ci_temp_env | |
pip install git+https://github.com/insarlab/MiaplPy.git | |
pip install . | |
OUTPUT=$(pip check) || { echo "$OUTPUT"; true; } | |
cd .. | |
python -c "import sarvey; print(sarvey)" | |
shell: bash | |
deploy_pages: | |
runs-on: self-hosted | |
needs: make_docs | |
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.x' | |
- name: Download docs | |
uses: actions/download-artifact@v4 | |
with: | |
name: docs | |
path: docs/_build/html/ | |
- name: Download coverage report | |
uses: actions/download-artifact@v4 | |
with: | |
name: coverage-report | |
path: htmlcov/ | |
- name: Download report.html | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-report | |
- name: Deploy to GitHub Pages | |
# trigger if merged into the main branch || published new tag | |
if: env.SKIP_DEPLOY == 'false' && github.event_name != 'pull_request' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) | |
run: | | |
rm -rf public | |
git clone --branch gh-pages https://github.com/${{ github.repository }} public | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
TAG_NAME=${GITHUB_REF##*/} | |
echo "Deploying to GitHub Pages for version tag: $TAG_NAME" | |
DOCS_PATH=public/tags/$TAG_NAME | |
else | |
echo "Deploying to GitHub Pages for main branch" | |
DOCS_PATH=public/dev | |
fi | |
rm -rf $DOCS_PATH | |
mkdir -p $DOCS_PATH/docs | |
mkdir -p $DOCS_PATH/images | |
mkdir -p $DOCS_PATH/coverage | |
mkdir -p $DOCS_PATH/test_reports | |
cp -r docs/_build/html/* $DOCS_PATH/docs | |
# cp -r htmlcov/* $DOCS_PATH/coverage/ | |
# cp report.html $DOCS_PATH/test_reports/ | |
ls -al $DOCS_PATH | |
ls -al $DOCS_PATH/docs | |
ls -al $DOCS_PATH/coverage | |
ls -al $DOCS_PATH/test_reports | |
shell: bash | |
- name: Upload to GitHub Pages | |
if: env.SKIP_DEPLOY == 'false' | |
uses: peaceiris/actions-gh-pages@v4 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./public |