Skip to content

Commit

Permalink
Merge pull request #586 from altheaden/transition-to-actions
Browse files Browse the repository at this point in the history
Transition CI from Azure Pipelines to GitHub Actions
  • Loading branch information
xylar authored Nov 6, 2024
2 parents 99a34ee + 6bbd4b9 commit bce4c2f
Show file tree
Hide file tree
Showing 8 changed files with 243 additions and 198 deletions.
83 changes: 83 additions & 0 deletions .github/workflows/build_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: CI/CD Build Workflow

on:
push:
branches:
- master

pull_request:
branches:
- master

workflow_dispatch:

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

jobs:
build:
name: test mpas_tools - 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 dev-spec and setup.py have not changed in the workflow
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key:
${{ runner.os }}-${{ matrix.python-version }}-conda-${{ env.CACHE_NUMBER }}-${{
hashFiles('conda_package/dev-spec.txt,conda_package/setup.py') }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Create Build Environment
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: "build"
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: Finalize Build Environment
run: |
conda install conda conda-build
conda build -m "conda_package/ci/linux_64_python${{ matrix.python-version }}.____cpython.yaml" "conda_package/recipe"
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Install mpas_tools
run: |
conda create -y -n mpas_tools_dev --use-local mpas_tools \
python=${{ matrix.python-version }} \
sphinx sphinx-multiversion mock sphinx_rtd_theme
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Build Sphinx Docs
run: |
conda activate mpas_tools_dev
# sphinx-multiversion expects at least a "master" branch
git branch master || echo "branch master already exists."
cd conda_package/docs
sphinx-multiversion . _build/html
90 changes: 90 additions & 0 deletions .github/workflows/docs_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: CI/CD Release Workflow

on:
push:
branches:
- master

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 dev-spec and setup.py have not changed in the workflow
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{
hashFiles('conda_package/dev-spec.txt,conda_package/setup.py') }}

- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Set up Conda Environment
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: "mpas_tools_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 mpas_tools
run: |
git config --global url."https://github.com/".insteadOf "[email protected]:"
conda create -n mpas_tools_dev --file conda_package/dev-spec.txt
conda activate mpas_tools_dev
python -m pip install -vv --no-deps --no-build-isolation -e conda_package
- name: Build Sphinx Docs
run: |
set -e
cd conda_package/docs
conda activate mpas_tools_dev
sphinx-multiversion . _build/html
- name: Copy Docs and Commit
run: |
set -e
cd conda_package/docs
conda activate mpas_tools_dev
# gh-pages branch must already exist
git clone https://github.com/MPAS-Dev/MPAS-Tools.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 `master` branch automatically.
printf '<meta http-equiv="refresh" content="0; url=./master/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

180 changes: 0 additions & 180 deletions azure-pipelines.yml

This file was deleted.

1 change: 1 addition & 0 deletions conda_package/dev-spec.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,6 @@ pytest

# Documentation
sphinx
sphinx-multiversion
mock
sphinx_rtd_theme
4 changes: 4 additions & 0 deletions conda_package/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 conda_package/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 %}

Loading

0 comments on commit bce4c2f

Please sign in to comment.