Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Deploy Python Conferences Website

on:
push:
branches:
- main
schedule:
- cron: "0 0 * * *"
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: true

jobs:
deploy:
name: Deploy to GitHub Pages
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- name: Check out repository
uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.x"

- name: Generate json and ical files
run: python generate_conferences.py
working-directory: website

- name: Upload site artifact
uses: actions/upload-pages-artifact@v4
with:
path: website

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,7 @@ dist/
.~lock.*
# data
conferences.csv

website/*.csv
website/conferences.ics
website/conferences.json
17 changes: 17 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

# Conferences Website

This website displays a list of Python conferences and allows users to download calendar files. It generates conferences.ics and conferences.json from the CSV files in the repository root.

## How it works

A GitHub Actions workflow is set up to run on pushes to the main branch (also by hand and on a schedule). This workflow runs the `website/generate_conferences.py` script to produce the ICS and JSON files. Then all the content in `website/` is deployed to GitHub Pages.

## How to run locally

1. Make sure you're in the `website/` directory.
2. And run:
```sh
python generate_conferences.py && python -m http.server
```
3. It is fully static, so you can just go to `http://localhost:8000`.
Loading