Skip to content

Commit

Permalink
Merge pull request #208 from altheaden/transition-to-actions
Browse files Browse the repository at this point in the history
Transition CI to GitHub Actions
  • Loading branch information
xylar authored Oct 25, 2024
2 parents 672eaa8 + 1113c0f commit ceac24a
Show file tree
Hide file tree
Showing 11 changed files with 266 additions and 224 deletions.
97 changes: 97 additions & 0 deletions .github/workflows/build_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: CI/CD Build Workflow

on:
push:
branches:
- main

pull_request:
branches:
- main

workflow_dispatch:

env:
CANCEL_OTHERS: false
PATHS_IGNORE: '["**/README.md", "**/docs/**"]'

jobs:
build:
name: test geometric_features - python ${{ matrix.python-version }}
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
shell: bash -l {0}
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@master
with:
cancel_others: ${{ env.CANCEL_OTHERS }}
paths_ignore: ${{ env.PATHS_IGNORE }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
uses: actions/checkout@v4

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Cache Conda
uses: actions/cache@v4
env:
# Increase this value to reset cache if conda-dev-spec.template has not changed in the workflow
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key:
${{ runner.os }}-${{ matrix.python-version }}-conda-${{ env.CACHE_NUMBER }}-${{
hashFiles('dev-spec.txt,setup.py') }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Set up Conda Environment
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: "geometric_features_ci"
miniforge-version: latest
channels: conda-forge
channel-priority: strict
auto-update-conda: true
python-version: ${{ matrix.python-version }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Install geometric_features
run: |
conda create -n geometric_features_dev --file dev-spec.txt \
python=${{ matrix.python-version }}
conda activate geometric_features_dev
python -m pip install --no-deps --no-build-isolation -vv -e .
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Run Tests
env:
CHECK_IMAGES: False
run: |
set -e
conda activate geometric_features_dev
pip check
pytest --pyargs geometric_features
combine_features -v
difference_features -v
fix_features_at_antimeridian -v
merge_features -v
plot_features -v
set_group_name -v
simplify_features -v
split_features -v
tag_features -v
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Build Sphinx Docs
run: |
conda activate geometric_features_dev
# sphinx-multiversion expects at least a "main" branch
git branch main || echo "branch main already exists."
cd docs
sphinx-multiversion . _build/html
93 changes: 93 additions & 0 deletions .github/workflows/docs_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: CI/CD Release Workflow

on:
push:
branches:
- main

release:
types: [published]

jobs:
publish-docs:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0

- name: Cache Conda
uses: actions/cache@v4
env:
# Increase this value to reset cache if deploy/conda-dev-spec.template has not changed in the workflow
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{
hashFiles('dev-spec.txt') }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Set up Conda Environment
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: "geometric_features_ci"
miniforge-version: latest
channels: conda-forge
channel-priority: strict
auto-update-conda: true
python-version: ${{ matrix.python-version }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Install geometric_features
run: |
git config --global url."https://github.com/".insteadOf "[email protected]:"
conda create -n geometric_features_dev --file dev-spec.txt \
python=${{ matrix.python-version }}
conda activate geometric_features_dev
python -m pip install -vv --no-deps --no-build-isolation -e .
- name: Build Sphinx Docs
run: |
set -e
conda activate geometric_features_dev
pip check
cd docs
sphinx-multiversion . _build/html
- name: Copy Docs and Commit
run: |
set -e
conda activate geometric_features_dev
pip check
cd docs
# gh-pages branch must already exist
git clone https://github.com/MPAS-Dev/geometric_features.git --branch gh-pages --single-branch gh-pages
# Make sure we're in the gh-pages directory.
cd gh-pages
# Create `.nojekyll` (if it doesn't already exist) for proper GH Pages configuration.
touch .nojekyll
# Add `index.html` to point to the `main` branch automatically.
printf '<meta http-equiv="refresh" content="0; url=./main/index.html" />' > index.html
# Only replace docs in a directory with the destination branch name with latest changes. Docs for
# releases should be untouched.
rm -rf ${{ github.head_ref || github.ref_name }}
# don't clobber existing release versions (in case we retroactively fixed them)
cp -r -n ../_build/html/* .
# Configure git using GitHub Actions credentials.
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
# The second command will fail if no changes were present, so we ignore it
git add .
git commit -m "Update documentation" -a || true
- name: Push Changes
uses: ad-m/github-push-action@master
with:
branch: gh-pages
directory: docs/gh-pages
github_token: ${{ secrets.GITHUB_TOKEN }}
force: true

6 changes: 1 addition & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
# Geometric Features

[![Build Status](https://dev.azure.com/MPAS-Dev/geometric_features%20testing/_apis/build/status/MPAS-Dev.geometric_features?branchName=main)](https://dev.azure.com/MPAS-Dev/geometric_features%20testing/_build/latest?definitionId=3&branchName=main)

This repository houses definitions of geometric features. These features
can include regions, transects, and points, described in geojson format.
For example, here are some regions for Antarctica.
![alt text](https://cloud.githubusercontent.com/assets/4179064/12921663/93282b64-cf4e-11e5-9260-a78dfadc4459.png "Antarctica regions")

## Documentation

[http://mpas-dev.github.io/geometric_features/stable/](http://mpas-dev.github.io/geometric_features/stable/)
[http://mpas-dev.github.io/geometric_features/main/](http://mpas-dev.github.io/geometric_features/main/)

## Contributors

Expand Down
118 changes: 0 additions & 118 deletions azure-pipelines.yml

This file was deleted.

1 change: 1 addition & 0 deletions dev-spec.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,5 @@ pytest
# Documentation
sphinx
sphinx_rtd_theme
sphinx-multiversion
m2r2
4 changes: 4 additions & 0 deletions docs/_static/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.wy-nav-content {
max-width: 1200px !important;
}

5 changes: 5 additions & 0 deletions docs/_templates/layout.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{% extends "!layout.html" %}
{% block extrahead %}
<link href="{{ pathto("_static/style.css", True) }}" rel="stylesheet" type="text/css">
{% endblock %}

28 changes: 28 additions & 0 deletions docs/_templates/versions.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{%- if current_version %}
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Other Versions</span>
v: {{ current_version.name }}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
{%- if versions.tags %}
<dl>
<dt>Tags</dt>
{%- for item in versions.tags %}
<dd><a href="{{ item.url }}">{{ item.name }}</a></dd>
{%- endfor %}
</dl>
{%- endif %}
{%- if versions.branches %}
<dl>
<dt>Branches</dt>
{%- for item in versions.branches %}
<dd><a href="{{ item.url }}">{{ item.name }}</a></dd>
{%- endfor %}
</dl>
{%- endif %}
</div>
</div>
{%- endif %}

Loading

0 comments on commit ceac24a

Please sign in to comment.