Skip to content

Commit

Permalink
Merge pull request #1019 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 Oct 18, 2024
2 parents 682becd + 06437ad commit 2a12199
Show file tree
Hide file tree
Showing 4 changed files with 189 additions and 190 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/build_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: CI/CD Build Workflow

on:
push:
branches:
- main
- develop

pull_request:
branches:
- main
- develop

workflow_dispatch:

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

jobs:
build:
name: test mpas_analysis - python ${{ matrix.python-version }}
runs-on: ubuntu-latest
timeout-minutes: 20
defaults:
run:
shell: bash -l {0}
strategy:
matrix:
python-version: ["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: "mpas_analysis_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_analysis
run: |
conda create -n mpas_analysis_dev --file dev-spec.txt \
python=${{ matrix.python-version }}
conda activate mpas_analysis_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 mpas_analysis_dev
pip check
pytest --pyargs mpas_analysis
mpas_analysis --help
download_analysis_data --help
- if: ${{ steps.skip_check.outputs.should_skip != 'true' }}
name: Build Sphinx Docs
run: |
conda activate mpas_analysis_dev
# sphinx-multiversion expects at least a "main" branch
git branch main || echo "branch main already exists."
cd docs
sphinx-multiversion . _build/html
96 changes: 96 additions & 0 deletions .github/workflows/docs_workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: CI/CD Release Workflow

on:
push:
branches:
- main
- develop

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: "mpas_analysis_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_analysis
run: |
git config --global url."https://github.com/".insteadOf "git@github.com:"
conda create -n mpas_analysis_dev --file dev-spec.txt \
python=${{ matrix.python-version }}
conda activate mpas_analysis_dev
python -m pip install -vv --no-deps --no-build-isolation -e .
- name: Build Sphinx Docs
run: |
set -e
conda activate mpas_analysis_dev
pip check
mpas_analysis sync diags --help
cd docs
sphinx-multiversion . _build/html
- name: Copy Docs and Commit
run: |
set -e
conda activate mpas_analysis_dev
pip check
mpas_analysis sync diags --help
cd docs
# gh-pages branch must already exist
git clone https://github.com/MPAS-Dev/MPAS-Analysis.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 `develop` branch automatically.
printf '<meta http-equiv="refresh" content="0; url=./develop/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

190 changes: 0 additions & 190 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 @@ -44,4 +44,5 @@ m2r2>=0.3.3
mistune<2
sphinx
sphinx_rtd_theme
sphinx-multiversion
tabulate

0 comments on commit 2a12199

Please sign in to comment.