adjust destination_dir #40
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 Pipeline | |
on: | |
push: | |
branches: | |
- main | |
- develop | |
pull_request: | |
branches: | |
- main | |
- develop | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.10'] | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install Poetry | |
run: | | |
curl -sSL https://install.python-poetry.org | python3 - | |
export PATH="$HOME/.local/bin:$PATH" | |
- name: Install project with dev dependencies | |
run: | | |
poetry install --with dev | |
# Step to detect if the commit is a merge commit (skip CI on merge commits) | |
- name: Check if commit is a merge commit | |
id: check-merge | |
run: | | |
if git log -1 --pretty=%B | grep -q "Merge pull request"; then | |
echo "is-merge=true" >> $GITHUB_ENV | |
else | |
echo "is-merge=false" >> $GITHUB_ENV | |
fi | |
# Step to detect changes in pyproject.toml or poetry.lock | |
- name: Check for dependency changes | |
id: check-deps | |
if: env.is-merge == 'false' # Skip if it's a merge commit | |
run: | | |
if git diff --name-only HEAD~1 | grep -qE 'pyproject.toml|poetry.lock'; then | |
echo "dependencies-changed=true" >> $GITHUB_ENV | |
else | |
echo "dependencies-changed=false" >> $GITHUB_ENV | |
fi | |
# Step to generate requirements.txt if dependencies have changed | |
- name: Generate requirements.txt | |
if: env.is-merge == 'false' && env.dependencies-changed == 'true' | |
run: | | |
poetry export -f requirements.txt --output requirements.txt --without-hashes | |
# Commit and push the updated requirements.txt if dependencies have changed | |
- name: Commit and push updated requirements.txt | |
if: env.is-merge == 'false' && env.dependencies-changed == 'true' | |
run: | | |
git config --global user.name 'github-actions[bot]' | |
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | |
git add requirements.txt | |
git commit -m "Update requirements.txt [skip ci]" | |
git push | |
# Run Black (auto-reformat) using Poetry | |
- name: Run Black (auto-reformat) | |
if: env.is-merge == 'false' # Skip if it's a merge commit | |
run: | | |
poetry run black . | |
# Run isort (auto-reformat) using Poetry | |
- name: Run isort (auto-reformat) | |
if: env.is-merge == 'false' # Skip if it's a merge commit | |
run: | | |
poetry run isort . | |
# Run pytest using Poetry | |
- name: Run pytest | |
if: env.is-merge == 'false' # Skip if it's a merge commit | |
run: | | |
poetry run pytest | |
docs: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.10'] | |
steps: | |
- name: Check out the repository | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
# Install Poetry | |
- name: Install Poetry | |
run: | | |
curl -sSL https://install.python-poetry.org | python3 - | |
export PATH="$HOME/.local/bin:$PATH" | |
# Install project with dev dependencies | |
- name: Install project with dev dependencies | |
run: | | |
poetry install --with dev | |
# Generate Sphinx Documentation | |
- name: Generate API Documentation with Sphinx | |
run: | | |
poetry run sphinx-apidoc -o docs/source codes | |
# Build HTML using Sphinx | |
- name: Build HTML with Sphinx | |
run: | | |
poetry run sphinx-build -b html docs/source docs/_build | |
# Copy custom HTML files to a temporary folder | |
- name: Copy custom HTML files | |
run: | | |
cp -r docs/custom_html/ site-root/ | |
# Deploy both custom HTML files and Sphinx API docs to GitHub Pages | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: site-root | |
destination_dir: . | |
publish_branch: gh-pages | |
# Deploy Sphinx API documentation to a subfolder on gh-pages | |
- name: Deploy Sphinx API docs to /api-docs | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: docs/_build/html | |
destination_dir: ./api-docs | |
publish_branch: gh-pages |