Skip to content

Implement version flag #284

Implement version flag

Implement version flag #284

Workflow file for this run

name: CI
on:
pull_request:
branches:
- main
- 'v?*b'
- 'v?*beta'
push:
branches:
- main
release:
types:
- published
permissions:
contents: write
env:
SKIP_DEPLOY: true
SKIP_INSTALL: false
SKIP_TEST: false
jobs:
test_sarvey:
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: Run tests
if: env.SKIP_TEST == 'false'
run: |
source /opt/conda/etc/profile.d/conda.sh
conda init bash
source ~/.bashrc
conda activate ci_env
rm -rf tests/testdata
# wget -nv -c -O testdata.zip https://seafile.projekt.uni-hannover.de/f/4b3be399dffa488e98db/?dl=1
wget -nv -c -O testdata.zip https://seafile.projekt.uni-hannover.de/f/104b499f6f7e4360877d/?dl=1
unzip testdata.zip
mkdir -p test
mv testdata tests/
mamba list
make pytest
shell: bash
- name: create docs
if: env.SKIP_DEPLOY == 'false'
run: |
conda init bash
source ~/.bashrc
source activate ci_env
# replace documentation address for tags befro make docs
IFS='/' read -r OWNER REPO <<< "${GITHUB_REPOSITORY}"
URL_IO="https://${OWNER}.github.io/${REPO}"
URL="https://github.com/${OWNER}/${REPO}"
echo "Repository URL: $URL"
echo "Repository Documentation URL: $URL"
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
TAG_NAME=${GITHUB_REF##*/}
DEFAULT_URL="${URL_IO}/main"
NEW_URL="${URL_IO}/tags/${TAG_NAME}"
sed -i "s|$DEFAULT_URL|$NEW_URL|g" README.rst
fi
# update new badge URL based on the branch or tag
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
TAG_NAME=${GITHUB_REF##*/}
BADGE_URL="${URL}/actions/workflows/ci.yml/badge.svg?branch=$TAG_NAME"
else
BADGE_URL="${URL}/actions/workflows/ci.yml/badge.svg?branch=main"
fi
echo "Badge URL: $BADGE_URL"
BADGE_DEFAULT_URL="${URL}/actions/workflows/ci.yml/badge.svg"
sed -i "s|${BADGE_DEFAULT_URL}|$BADGE_URL|g" README.rst
echo "README.rst content"
cat README.rst
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
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: |
source /opt/conda/etc/profile.d/conda.sh
conda init bash
source ~/.bashrc
conda activate ci_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
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: |
source /opt/conda/etc/profile.d/conda.sh
conda init bash
source ~/.bashrc
source activate ci_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 /opt/conda/etc/profile.d/conda.sh
conda activate base
conda create -n sarvey_testinstall python=3.10 pip -y
conda activate sarvey_testinstall
conda install conda-forge::pysolid -y
conda install conda-forge::gdal
pip install git+https://github.com/insarlab/MiaplPy.git
# get current branch for installation
IFS='/' read -r OWNER REPO <<< "${GITHUB_REPOSITORY}"
URL="https://github.com/${OWNER}/${REPO}"
URL_IO="https://${OWNER}.github.io/${REPO}"
echo "Repository URL: ${URL}"
echo "Repository Documentation URL: ${URL}"
if [[ "$GITHUB_REF" == refs/tags/* ]]; then
current_ref="${GITHUB_REF##*/}"
elif [[ "$GITHUB_REF" == refs/heads/* ]]; then
current_ref="${GITHUB_REF#refs/heads/}"
elif [[ "$GITHUB_REF" == refs/pull/* ]]; then
current_ref="${GITHUB_HEAD_REF}"
else
current_ref="${GITHUB_REF}"
fi
echo "Current branch/tag: ${URL}.git@$current_ref"
pip install git+${URL}.git@$current_ref
pip install sarvey[dev]
OUTPUT=$(pip check) || { echo "$OUTPUT"; true; }
conda list
python -c "import sarvey; print(sarvey)"
shell: bash
# deploy_pages:
# runs-on: self-hosted
# needs:
# - test_sarvey
# - test_urls
# - test_styles
# 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/main
# 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