Release website #77
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' | |
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' | |
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 }} |