Skip to content

Commit 331fb89

Browse files
authored
Merge pull request #13 from PermutaTriangle/modernize-dependencies-2024
Modernize Jekyll setup with GitHub Actions CI/CD
2 parents d1b39ca + 0130e78 commit 331fb89

File tree

7 files changed

+256
-23
lines changed

7 files changed

+256
-23
lines changed

.github/workflows/jekyll.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Build and Deploy Jekyll Site
2+
3+
on:
4+
# Runs on pushes targeting the default branch
5+
push:
6+
branches: ["master"]
7+
8+
# Allows you to run this workflow manually from the Actions tab
9+
workflow_dispatch:
10+
11+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
12+
permissions:
13+
contents: read
14+
pages: write
15+
id-token: write
16+
17+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
18+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
19+
concurrency:
20+
group: "pages"
21+
cancel-in-progress: false
22+
23+
jobs:
24+
# Build job
25+
build:
26+
runs-on: ubuntu-latest
27+
steps:
28+
- name: Checkout
29+
uses: actions/checkout@v4
30+
31+
- name: Setup Ruby
32+
uses: ruby/setup-ruby@v1
33+
with:
34+
ruby-version: '3.3.9'
35+
36+
- name: Install dependencies
37+
run: |
38+
gem install jekyll -v 4.4.0
39+
gem install minima jekyll-feed jekyll-sitemap jekyll-seo-tag webrick
40+
41+
- name: Setup Pages
42+
id: pages
43+
uses: actions/configure-pages@v5
44+
45+
- name: Build with Jekyll
46+
# Outputs to the './_site' directory by default
47+
run: jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
48+
env:
49+
JEKYLL_ENV: production
50+
51+
- name: Upload artifact
52+
# Automatically uploads an artifact from the './_site' directory by default
53+
uses: actions/upload-pages-artifact@v3
54+
55+
# Deployment job
56+
deploy:
57+
environment:
58+
name: github-pages
59+
url: ${{ steps.deployment.outputs.page_url }}
60+
runs-on: ubuntu-latest
61+
needs: build
62+
steps:
63+
- name: Deploy to GitHub Pages
64+
id: deployment
65+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
1-
_site
2-
.sass-cache
1+
# Jekyll
2+
_site/
3+
.sass-cache/
34
.jekyll-cache/
45
.jekyll-metadata
6+
7+
# Ruby
8+
.bundle/
9+
vendor/
10+
*.gem
11+
Gemfile.lock
12+
13+
# OS generated files
514
.DS_Store
6-
vendor
15+
.DS_Store?
16+
._*
17+
.Spotlight-V100
18+
.Trashes
19+
ehthumbs.db
20+
Thumbs.db
21+
22+
# Note: .ruby-version is intentionally tracked to ensure consistent Ruby version

.ruby-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.3.9

Gemfile

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
11
source "https://rubygems.org"
22

3-
# Hello! This is where you manage which Jekyll version is used to run.
4-
# When you want to use a different version, change it below, save the
5-
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
6-
#
7-
# bundle exec jekyll serve
8-
#
9-
# This will help ensure the proper Jekyll version is running.
10-
# Happy Jekylling!
11-
# gem "jekyll", "~> 3.8.5"
3+
# Jekyll core
4+
gem "jekyll", "~> 4.4.0"
125

13-
# This is the default theme for new Jekyll sites. You may change this to anything you like.
14-
gem "minima", "~> 2.0"
6+
# Theme
7+
gem "minima", "~> 2.5"
158

16-
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
17-
# uncomment the line below. To upgrade, run `bundle update github-pages`.
18-
gem "github-pages", group: :jekyll_plugins
19-
20-
# If you have any plugins, put them here!
9+
# Jekyll plugins
2110
group :jekyll_plugins do
22-
gem "jekyll-feed", "~> 0.6"
11+
gem "jekyll-feed", "~> 0.17"
12+
gem "jekyll-sitemap", "~> 1.4"
13+
gem "jekyll-seo-tag", "~> 2.8"
2314
end
2415

25-
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
26-
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
16+
# Required for Jekyll 4.x with Ruby 3.x
17+
gem "webrick", "~> 1.7"
18+
19+
# Platform-specific gems
20+
platforms :mingw, :x64_mingw, :mswin, :jruby do
21+
gem "tzinfo", ">= 1", "< 3"
22+
gem "tzinfo-data"
23+
end
2724

2825
# Performance-booster for watching directories on Windows
29-
gem "wdm", "~> 0.1.0" if Gem.win_platform?
26+
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]

WARP.md

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# WARP.md
2+
3+
This file provides guidance to WARP (warp.dev) when working with code in this repository.
4+
5+
## Project Overview
6+
7+
This is a Jekyll-based academic research website for the Permuta Triangle research group, focused on the combinatorics of permutation patterns. The site showcases research papers, programs, projects, and team members in the field of permutation theory and combinatorial mathematics.
8+
9+
## Development Environment Setup
10+
11+
### Prerequisites
12+
- Ruby (version compatible with Jekyll)
13+
- Bundler gem manager
14+
- Jekyll static site generator
15+
16+
### Installation
17+
```bash
18+
# Install required gems
19+
bundle install
20+
21+
# Serve the site locally for development
22+
bundle exec jekyll serve
23+
24+
# Build the site for production
25+
bundle exec jekyll build
26+
```
27+
28+
Note: If you encounter bundler version issues, run:
29+
```bash
30+
gem install bundler:2.0.2
31+
# or
32+
bundle update --bundler
33+
```
34+
35+
## Site Architecture
36+
37+
### Jekyll Collections
38+
The site uses Jekyll collections to organize different types of content:
39+
40+
- `_authors/` - Research group members and collaborators
41+
- `_papers/` - Academic papers and publications
42+
- `_programs/` - Software projects (Permuta, Tilings, ComboPal)
43+
- `_projects/` - Research projects
44+
- `_talks/` - Conference presentations and talks
45+
- `_posts/` - Blog posts and news updates
46+
47+
### Key Configuration
48+
- **Theme**: Minima
49+
- **Plugins**: jekyll-feed, github-pages
50+
- **Collections**: All collections have `output: true` for individual pages
51+
- **Layouts**: Custom layouts for each collection type (paper.html, author.html, etc.)
52+
53+
### Content Structure
54+
55+
#### Authors
56+
Author files in `_authors/` use frontmatter:
57+
- `status` - member, student, collaborator
58+
- `short_name` - used for references in papers
59+
- `first_name`, `name` - display names
60+
- `position` - academic position
61+
62+
#### Papers
63+
Paper files in `_papers/` include:
64+
- `title` - paper title
65+
- `journal` - publication venue
66+
- `authors` - array of author short_names
67+
- `projects` - related research projects
68+
- Content includes abstract, updates, download links, presentations
69+
70+
#### Programs
71+
Software project documentation in `_programs/` for:
72+
- **Permuta** - Python library for permutation patterns
73+
- **Tilings** - Library for gridded permutations and tilings
74+
- **ComboPal** - Combinatorial pattern analysis tool
75+
76+
### Navigation and Data
77+
- `_data/navigation.yml` - Site navigation menu
78+
- `_includes/navigation.html` - Navigation component
79+
- Cross-references between collections using author short_names
80+
81+
## Common Development Tasks
82+
83+
### Adding New Content
84+
85+
**New Paper:**
86+
```bash
87+
# Create file: _papers/YYYY-MM-DD-shortname.md
88+
# Follow existing frontmatter format with authors array
89+
```
90+
91+
**New Author:**
92+
```bash
93+
# Create file: _authors/shortname.md
94+
# Set status: member/student/collaborator
95+
# Use short_name consistently across papers
96+
```
97+
98+
**New Program/Software:**
99+
```bash
100+
# Create file: _programs/YYYY-MM-DD-name.md
101+
# Include repo links and installation instructions
102+
```
103+
104+
### Local Development
105+
```bash
106+
# Start development server with live reload
107+
bundle exec jekyll serve --livereload
108+
109+
# Build and check links
110+
bundle exec jekyll build
111+
# Site builds to _site/ directory
112+
```
113+
114+
### Asset Management
115+
- Images: `/assets/img/` (paper figures, author photos)
116+
- PDFs: `/assets/talks/` (presentation slides)
117+
- CVs: `/assets/cvs/` (curriculum vitae files)
118+
119+
## Related Codebases
120+
121+
This research group maintains several related software projects:
122+
- **Permuta** (`/Users/henningu/github_repos/Permuta`) - Python permutation library
123+
- **Tilings** (`/Users/henningu/github_repos/Tilings`) - Gridded permutation library
124+
- **CayleyPerms** (`/Users/henningu/github_repos/CayleyPerms`) - Related permutation tools
125+
126+
These codebases are often referenced in the `_programs/` collection and may be linked from papers and research descriptions.
127+
128+
## Content Guidelines
129+
130+
- Use author `short_name` consistently across all collections
131+
- Papers should include arXiv and journal links when available
132+
- Include presentation materials and update sections for ongoing research
133+
- Programs should have clear installation and usage examples
134+
- Maintain consistent date formatting: YYYY-MM-DD in filenames
135+
136+
## GitHub Pages Deployment
137+
138+
The site is configured for GitHub Pages deployment using:
139+
- `github-pages` gem in Gemfile
140+
- Jekyll compatible plugins only
141+
- Assets served from `/assets/` directory
142+
- Custom 404 page available

_programs/2019-6-17-comb.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,12 @@ same class appears multiple times.
121121
... def __str__(self):
122122
... if self.just_prefix:
123123
... return "The word {}".format(self.prefix)
124+
{% raw %}
124125
... return ("Words over {{{}}} avoiding {{{}}} with prefix {}"
125126
... "".format(", ".join(l for l in self.alphabet),
126127
... ", ".join(p for p in self.patterns),
127128
... self.prefix if self.prefix else '""'))
129+
{% endraw %}
128130
...
129131
... def __repr__(self):
130132
... return "AvoidingWithPrefix({}, {}, {}".format(repr(self.prefix),
@@ -210,9 +212,11 @@ rules, and as such should be implemented as generators.
210212
... # or has prefix pa for some a in Σ.
211213
... ends_with_a = AvoidingWithPrefix(prefix + a, patterns, alphabet)
212214
... comb_classes.append(ends_with_a)
215+
{% raw %}
213216
... yield BatchRule(("The next letter in the prefix is one of {{{}}}"
214217
... "".format(", ".join(l for l in alphabet))),
215218
... comb_classes)
219+
{% endraw %}
216220
```
217221

218222
The classes that we will verify are those that consist of just the
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"folders": [
3+
{
4+
"path": "/Users/henningu/Documents/Work/pt"
5+
}
6+
],
7+
"settings": {}
8+
}

0 commit comments

Comments
 (0)