Skip to content

PyBaMM Twitter bot #1833

PyBaMM Twitter bot

PyBaMM Twitter bot #1833

Workflow file for this run

name: PyBaMM Twitter bot
on:
push:
pull_request:
schedule:
- cron: '0 7,19 * * *'
jobs:
style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Check style
run: |
python -m pip install --upgrade pip
python -m pip install flake8
flake8 --max-line-length=89
build:
if: "!contains(github.event.head_commit.message, 'skip ci')"
needs: style
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal token
fetch-depth: 0 # otherwise will fail to push refs to dest repo
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install wheel coverage
pip install -r requirements.txt
- name: Tweet
if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/main' && github.event_name == 'schedule'
run: |
cd bot
python -m twitter_api.tweet_plot
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git pull origin main
git commit -m "Update config, data - [skip ci]" -a
env:
ACCESS_KEY: ${{ secrets.ACCESS_KEY }}
ACCESS_SECRET: ${{ secrets.ACCESS_SECRET }}
CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
- name: Sync last seen ID
if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/main'
run: |
cd bot
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git pull origin main --rebase
python -m twitter_api.sync_last_seen_id
git commit --allow-empty -m "Update last_seen_id - skip ci" -a
env:
ACCESS_KEY: ${{ secrets.ACCESS_KEY }}
ACCESS_SECRET: ${{ secrets.ACCESS_SECRET }}
CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
- name: Push changes
if: matrix.os == 'ubuntu-latest' && github.ref == 'refs/heads/main'
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.PERSONAL_GITHUB_TOKEN }}
branch: ${{ github.ref }}
- name: Run macos unittests for PRs not from a fork
if: (matrix.os == 'macos-latest' && github.event.pull_request.head.repo.full_name == github.repository) || (matrix.os == 'macos-latest' && github.event_name == 'schedule') || (matrix.os == 'macos-latest' && github.event_name == 'push')
run: |
python -m unittest discover -v test/
env:
ACCESS_KEY: ${{ secrets.ACCESS_KEY }}
ACCESS_SECRET: ${{ secrets.ACCESS_SECRET }}
CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
- name: Run macos unittests for PRs from a fork
if: matrix.os == 'macos-latest' && github.event.pull_request.head.repo.full_name != github.repository && github.event_name != 'schedule' && github.event_name != 'push'
run: |
python -m unittest discover -v ./test/without_keys/
- name: Run ubuntu unittests and generate coverage report for PRs not from a fork
if: (matrix.os == 'ubuntu-latest' && github.event.pull_request.head.repo.full_name == github.repository) || (matrix.os == 'ubuntu-latest' && github.event_name == 'schedule') || (matrix.os == 'ubuntu-latest' && github.event_name == 'push')
run: |
echo "COVERAGE_PROCESS_START=$PWD/.coveragerc" >> $GITHUB_ENV
echo "PYTHONPATH=$PYTHONPATH::$PWD" >> $GITHUB_ENV
coverage run --concurrency=multiprocessing -m unittest -v
coverage combine
env:
ACCESS_KEY: ${{ secrets.ACCESS_KEY }}
ACCESS_SECRET: ${{ secrets.ACCESS_SECRET }}
CONSUMER_KEY: ${{ secrets.CONSUMER_KEY }}
CONSUMER_SECRET: ${{ secrets.CONSUMER_SECRET }}
- name: Run ubuntu unittests and generate coverage report for PRs from a fork
if: matrix.os == 'ubuntu-latest' && github.event.pull_request.head.repo.full_name != github.repository && github.event_name != 'schedule' && github.event_name != 'push'
run: |
echo "COVERAGE_PROCESS_START=$PWD/.coveragerc" >> $GITHUB_ENV
echo "PYTHONPATH=$PYTHONPATH::$PWD" >> $GITHUB_ENV
coverage run --concurrency=multiprocessing -m unittest discover test/without_keys -v
coverage combine
- name: Upload coverage to Codecov
if: matrix.os == 'ubuntu-latest'
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}