Skip to content

Latest commit

 

History

History
75 lines (63 loc) · 2.23 KB

File metadata and controls

75 lines (63 loc) · 2.23 KB

How to use a Github Action

Refer to til/build.yml for examples.

GitHub Actions use YAML, so create a build.yml file in your project root.

name: Build README

The name of your action.

on:
  push:
    branches:
    - main

When you want this action to run. In this case, we want to run it when we push to the main branch.

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Check out repo
      uses: actions/checkout@v2
      # We need full history to introspect created/updated:
      with:
        fetch-depth: 0
    - name: Set up Python
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - uses: actions/cache@v1
      name: Configure pip caching
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-
    - name: Install Python dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Build database
      run: python build_database.py
    - name: Update README
      run: |-
        python update_readme.py --rewrite
        cat README.md
    - name: Commit and push if README changed
      run: |-
        git diff
        git config --global user.email "[email protected]"
        git config --global user.name "README-bot"
        git diff --quiet || (git add README.md && git commit -m "Updated README")
        git push

What we want the action to execute. This action will run the build job, which has several steps:

  • Check out repo: Check out the repository to inspect when files were created/updated. This uses an existing GitHub Action checkout@v2
  • Set up Python: Prepare a Python environment using 3.8, with the actions/setup-python@v1 action. This also installs pip.
  • Configures pip
  • Installs dependencies from requirements.txt
  • Runs build_database.py
  • Runs update_readme.py
  • Creates a commit and pushes if the README changed

Further Reading