Skip to content

Commit 13287b3

Browse files
authored
Merge branch 'master' into migrate-news-to-blog
2 parents 345f19e + ad91b51 commit 13287b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1065
-879
lines changed

.github/workflows/build.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

.github/workflows/deploy.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.github/workflows/publish-docs.yml

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
name: Publish Docs
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
pull_request:
8+
branches:
9+
- master
10+
workflow_dispatch:
11+
inputs:
12+
pr_number:
13+
description: 'PR number to deploy preview for'
14+
required: true
15+
type: number
16+
17+
permissions:
18+
contents: write
19+
pull-requests: write
20+
pages: write
21+
id-token: write
22+
23+
jobs:
24+
build:
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v4
29+
30+
- name: Setup Node.js
31+
uses: actions/setup-node@v4
32+
with:
33+
node-version: 20
34+
35+
- name: Install dependencies
36+
run: npm ci
37+
38+
- name: Determine Base URL
39+
id: base-url
40+
run: |
41+
REPO_NAME="${{ github.event.repository.name }}"
42+
OWNER="${{ github.repository_owner }}"
43+
44+
# Check if it's an org page (owner.github.io)
45+
if [[ "${REPO_NAME,,}" == "${OWNER,,}.github.io" ]]; then
46+
BASE_PATH="/"
47+
else
48+
BASE_PATH="/$REPO_NAME/"
49+
fi
50+
51+
echo "base_path=$BASE_PATH" >> $GITHUB_OUTPUT
52+
53+
- name: Build
54+
run: npm run build
55+
env:
56+
BASE_URL: ${{ steps.base-url.outputs.base_path }}
57+
58+
- name: Upload build artifact
59+
uses: actions/upload-artifact@v4
60+
with:
61+
name: site
62+
path: build/
63+
64+
deploy-pr-preview:
65+
if: ${{ github.event_name == 'workflow_dispatch' }}
66+
runs-on: ubuntu-latest
67+
steps:
68+
- name: Checkout
69+
uses: actions/checkout@v4
70+
with:
71+
ref: refs/pull/${{ inputs.pr_number }}/head
72+
73+
- name: Setup Node.js
74+
uses: actions/setup-node@v4
75+
with:
76+
node-version: 20
77+
78+
- name: Install dependencies
79+
run: npm ci
80+
81+
- name: Determine Base URL
82+
id: base-url
83+
run: |
84+
REPO_NAME="${{ github.event.repository.name }}"
85+
OWNER="${{ github.repository_owner }}"
86+
PR_NUM="${{ inputs.pr_number }}"
87+
88+
# Check if it's an org page (owner.github.io)
89+
if [[ "${REPO_NAME,,}" == "${OWNER,,}.github.io" ]]; then
90+
BASE_PATH="/pr-$PR_NUM/"
91+
FULL_URL="https://$OWNER.github.io/pr-$PR_NUM/"
92+
else
93+
BASE_PATH="/$REPO_NAME/pr-$PR_NUM/"
94+
FULL_URL="https://$OWNER.github.io/$REPO_NAME/pr-$PR_NUM/"
95+
fi
96+
97+
echo "base_path=$BASE_PATH" >> $GITHUB_OUTPUT
98+
echo "full_url=$FULL_URL" >> $GITHUB_OUTPUT
99+
100+
- name: Build
101+
run: npm run build
102+
env:
103+
BASE_URL: ${{ steps.base-url.outputs.base_path }}
104+
105+
- name: Deploy PR Preview
106+
uses: JamesIves/github-pages-deploy-action@v4
107+
with:
108+
token: ${{ secrets.GITHUB_TOKEN }}
109+
branch: gh-pages
110+
folder: build
111+
target-folder: pr-${{ inputs.pr_number }}
112+
clean: true
113+
git-config-name: github-actions[bot]
114+
git-config-email: github-actions[bot]@users.noreply.github.com
115+
116+
- name: Comment Preview URL
117+
uses: marocchino/sticky-pull-request-comment@v2
118+
with:
119+
recreate: true
120+
number: ${{ inputs.pr_number }}
121+
message: |
122+
🚀 **Preview Ready!**
123+
Your docs preview for this PR is available here:
124+
125+
**${{ steps.base-url.outputs.full_url }}**
126+
127+
deploy-production:
128+
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
129+
permissions:
130+
contents: write
131+
runs-on: ubuntu-latest
132+
needs: build
133+
steps:
134+
- name: Checkout
135+
uses: actions/checkout@v4
136+
137+
- name: Download build artifact
138+
uses: actions/download-artifact@v4
139+
with:
140+
name: site
141+
path: site
142+
143+
- name: Deploy to GitHub Pages
144+
uses: JamesIves/github-pages-deploy-action@v4
145+
with:
146+
branch: gh-pages
147+
folder: site
148+
clean: true

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# PEcAn Project Website
22

3-
This repository contains the content of the PEcAn Project website.
3+
This repository contains the contents of the PEcAn Project website.
44

55
This README is written for members of the PEcAn Project community who wish to add content to or otherwise modify the website.
66
The website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
@@ -85,7 +85,7 @@ This describes how to add or modify the Website's content.
8585
This is an open source project and contributions are what make an open source community.
8686
Everyone is welcome to contribute to this project.
8787

88-
All involved are expected to follow the [PEcAn code of conduct](https://pecanproject.github.io/pecan-documentation/master/contributor-covenant-code-of-conduct.html) and contribute to a positive and inclusive environment.
88+
All involved are expected to follow the [PEcAn code of conduct](https://pecanproject.github.io/pecan-documentation/develop/contributor-covenant-code-of-conduct.html) and contribute to a positive and inclusive environment.
8989

9090
First time contributors are welcome. Contributions can be very simple, make sure to check out issues labeled ['good first issue'](https://github.com/PecanProject/PecanProject.github.io/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22). If you have an idea, the best place to start a discussion is on the PEcAn project Slack channel, or by opening an issue in this repository.
9191

@@ -209,7 +209,7 @@ This section contains future plans for the website. New contributors can use thi
209209

210210
### Optimising Documentation
211211

212-
At present the PEcAn's documentation is being served from (<https://pecanproject.github.io/pecan-documentation/master/>) using an iframe. While this saves a lot of overhead in converting Rmd files in (<https://github.com/PecanProject/pecan/tree/develop/book_source>) to md files so that docusaurus could render them, it also increases the loading time for documentation, it also looks less consistent.
212+
At present the PEcAn's documentation is being served from (<https://pecanproject.github.io/pecan-documentation/latest/>) using an iframe. While this saves a lot of overhead in converting Rmd files in (<https://github.com/PecanProject/pecan/tree/develop/book_source>) to md files so that docusaurus could render them, it also increases the loading time for documentation, it also looks less consistent.
213213
In future, it is suggested to find an optimised way to convert rmd files to md and integrate them via docusaurus's native documentation parser.
214214

215215
### Adding tutorials section

blog/2025-09-05-gsoc-roundup.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: GSoC '25 Project Roundup
3+
author: david_lebauer
4+
tags: [gsoc, gsoc25]
5+
---
6+
7+
# GSOC 2025 Project Roundup: PEcAn's Ninth Year of Google Summer of Code!
8+
9+
This summer marked the **ninth consecutive year** that the PEcAn Project participated in **Google Summer of Code (GSoC)**. Over that time, **30 student-led projects** have made significant contributions to PEcAn’s mission of advancing open, reproducible ecosystem modeling.
10+
11+
The 2025 cohort continued this tradition with three contributions that improve functionality and user experience.
12+
13+
## 2025 GSoC Projects
14+
15+
### Akash B V: Ensemble-based Uncertainty Propagation Workflows
16+
17+
Akash developed ensemble-based data preparation workflows for soils, weather, and vegetation initial conditions. This work enables PEcAn’s ability to represent uncertainty in ecosystem models and directly supports applications in NASA CMS and California Air Resources Board (CARB) carbon monitoring efforts.
18+
19+
[Read Akash’s report →](https://substack.com/home/post/p-172403311)
20+
21+
### Aritra Dey: Interactive Quarto Notebooks for PEcAn Workflows
22+
23+
Aritra created interactive Quarto notebooks that provide lightweight, reproducible introductions to PEcAn, replacing the previous introductory workflows that relied heavily on databases and the web User Interface. As more scientists become familiar with notebooks, these offer more flexible, direct, and extensible introductions to PEcAn workflows. These notebooks lower the barrier to entry for students and researchers, making it easier to run PEcAn models, explore uncertainty, and learn ecological forecasting through hands-on examples.
24+
25+
[Read Aritra’s post →](https://medium.com/@aritradey.nitt/my-gsoc-experience-pecan-project-cd4b2922e49f)
26+
27+
### Harsh Agrawal: Decoupling PEcAn Workflows from BETYdb
28+
29+
Harsh addressed a long-standing architectural challenge by reducing PEcAn’s reliance on its central database. By decoupling key workflows from BETYdb, his work improves portability, simplifies development, and makes the system more accessible to new users and contributors.
30+
31+
[Read Harsh’s post →](https://medium.com/@harshagr838/breaking-free-from-the-database-my-google-summer-of-code-2025-journey-with-pecan-9820d21d9afa)
32+
33+
## Beyond Software: Community and Mentorship
34+
35+
GSoC projects reflect more than individual effort. They are the result of sustained mentorship, active code review, and an engaged open-source community. We thank the mentors and contributors who guided students, reviewed pull requests, and helped shape these projects into lasting improvements. And we thank Google for supporting open-source software **and community** development through GSoC.

docusaurus.config.js

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module.exports = {
44
tagline:
55
"Ecosystem science, policy, and management informed by the best available data and models",
66
url: "https://pecanproject.github.io",
7-
baseUrl: "/",
7+
baseUrl: process.env.BASE_URL || "/",
88
onBrokenLinks: "ignore",
99
onBrokenMarkdownLinks: "warn",
1010
favicon: "img/favicon.ico",
@@ -23,34 +23,32 @@ module.exports = {
2323
position: "left",
2424
items: [
2525
{
26-
to: "/documentation",
27-
label: "Documentation",
26+
to: "/documentation/", label: "Documentation",
2827
},
2928
{
30-
to: "/package-documentation/develop",
31-
label: "Package Documentation",
29+
to: "/package-documentation/", label: "Package Documentation",
3230
},
3331
{
34-
to: "/tutorials",
35-
label: "Tutorials",
32+
to: "/tutorials/", label: "Tutorials",
3633
},
3734
{
3835
to: "http://pecan.ncsa.illinois.edu/pecan/01-introduction.php",
3936
label: "Demo",
4037
},
4138
],
4239
},
43-
{ to: "/blog", label: "Blog", position: "left" },
40+
{ to: "/blog/", label: "Blog", position: "left" },
4441
{
4542
label: "About",
4643
position: "left",
4744
items: [
48-
{ to: "/about", label: "About" },
49-
{ to: "/people", label: "People" },
50-
{ to: "/alumni", label: "Alumni" },
45+
{ to: "/about/", label: "About" },
46+
{ to: "/people/", label: "People" },
47+
{ to: "/alumni/", label: "Alumni" },
48+
{ to: "/news/", label: "News" },
5149
],
5250
},
53-
{ to: "/publications", label: "Publications", position: "left" },
51+
{ to: "/publications/", label: "Publications", position: "left" },
5452
{
5553
href: "https://github.com/PecanProject",
5654
position: "right",
@@ -61,8 +59,8 @@ module.exports = {
6159
label: "GSoC",
6260
position: "left",
6361
items: [
64-
{ to: "/gsoc", label: "Contributor Guidance" },
65-
{ to: "/gsoc_ideas", label: "Ideas List" },
62+
{ to: "/gsoc/", label: "Contributor Guidance" },
63+
{ to: "/gsoc_ideas/", label: "Ideas List" },
6664
],
6765
},
6866
],
@@ -74,7 +72,7 @@ module.exports = {
7472
items: [
7573
{
7674
label: "Tutorial",
77-
to: "/documentation/master",
75+
to: "/documentation/latest/",
7876
className: "footer-docs-link",
7977
},
8078
],

0 commit comments

Comments
 (0)