Skip to content
This repository was archived by the owner on Mar 2, 2025. It is now read-only.

better release.yml which enables the creation of archives on schedule and not just on commits or pull requests #242

better release.yml which enables the creation of archives on schedule and not just on commits or pull requests

better release.yml which enables the creation of archives on schedule and not just on commits or pull requests #242

Workflow file for this run

name: Release website
on:
schedule:
- cron: "0 4 * * *"
push:
branches:
- staging
- production
pull_request:
workflow_dispatch:
jobs:
pages:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Hugo
uses: peaceiris/actions-hugo@v3
with:
hugo-version: 'latest'
- name: Build pages
run: hugo $(cat .hugo-params)
- uses: actions/upload-artifact@v4
name: Upload pages
with:
name: pages
path: public
calendar:
needs: [ pages ]
runs-on: ubuntu-latest
steps:
- name: Add de_DE.UTF-8 locale
run: |
sudo apt-get update
sudo apt-get -y install locales
sudo locale-gen de_DE.UTF-8
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v5
with:
cache: 'pip' # caching pip dependencies
- name: Install dependencies
run: |
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt
- name: Download pages
uses: actions/download-artifact@v4
with:
name: pages
path: public/
- name: Generate calendars
run: python tools/merge_cals.py
- name: Copy calendar to output dir
run: cp static/all.ics public/all.ics
- name: Update homepage with latest event
run: upcoming="$(python tools/gen_upcoming.py static/all.ics 20 5 | tr '\n' ' ')" && sed -i "s#CALENDAR#$upcoming#g" public/index.html
- uses: actions/upload-artifact@v4
name: Upload pages
with:
name: enhanced_pages
path: public
staging:
needs: [ calendar ]
runs-on: ubuntu-latest
environment: staging
if: (github.ref == 'refs/heads/staging' && github.event_name == 'push') || github.event_name == 'schedule'
steps:
- name: Download pages
uses: actions/download-artifact@v4
with:
name: enhanced_pages
path: public
- name: Generate timestamp
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H%M%SZ')" >> $GITHUB_ENV
- name: Create Release Archive
uses: thedoctor0/[email protected]
with:
type: zip
filename: ../release-staging-${{ env.timestamp }}.zip
directory: public
- name: Create Release
uses: ncipollo/[email protected]
with:
tag: staging-${{ env.timestamp }}
name: Website staging version ${{ env.timestamp }}
body: Website staging version ${{ env.timestamp }}
artifacts: release-staging-${{ env.timestamp }}.zip
token: ${{ secrets.GITHUB_TOKEN }}
production:
needs: [ calendar ]
runs-on: ubuntu-latest
environment: production
if: (github.ref == 'refs/heads/production' && github.event_name == 'push') || github.event_name == 'schedule'
steps:
- name: Download pages
uses: actions/download-artifact@v4
with:
name: enhanced_pages
path: public
- name: Generate timestamp
run: echo "timestamp=$(date -u +'%Y-%m-%dT%H%M%SZ')" >> $GITHUB_ENV
- name: Create Release Archive
uses: thedoctor0/[email protected]
with:
type: zip
filename: ../release-production-${{ env.timestamp }}.zip
directory: public
- name: Create Release
uses: ncipollo/[email protected]
with:
makeLatest: true
tag: production-${{ env.timestamp }}
name: Website production version ${{ env.timestamp }}
body: Website production version ${{ env.timestamp }}
artifacts: release-production-${{ env.timestamp }}.zip
token: ${{ secrets.GITHUB_TOKEN }}