Skip to content

Frontend Actions

Frontend Actions #316

name: AFIDs Validator CI Workflow
on:
pull_request_target:
types: [opened, reopened, synchronize, ready_for_review, closed]
jobs:
test:
name: Setup environment & test
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- name: Setup python environment
uses: khanlab/actions/.github/actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
cache-id: ${{ github.event.pull_request.id }}
install-library: true
- name: Start PostgreSQL services
shell: bash
run: |
sudo systemctl start postgresql.service
pg_isready
- name: Setup PostgreSQL db
shell: bash
env:
psql_db_owner: testuser # PostgreSQL User
psql_db_pw: testpass # PostgreSQL Pass
psql_db_name: testdb # PostgreSQL DB
run: |
sudo -u postgres psql --command="CREATE USER $psql_db_owner PASSWORD '$psql_db_pw'"
sudo -u postgres createdb --owner=$psql_db_owner $psql_db_name
PGPASSWORD=$psql_db_pw psql --username=$psql_db_owner --host=localhost --list $psql_db_name
- name: Test AFIDs validator
shell: bash
env:
FLASK_ENV: testing # Sets flask environment
DATABASE_URL: postgresql://testuser:testpass@localhost/testdb
run: |
poetry run python -m unittest
linting:
name: Lint code
needs: [test]
if: github.event.pull_request.merged == false
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.9", "3.10"]
steps:
- name: Setup python environment
uses: khanlab/actions/.github/actions/[email protected]
with:
python-version: ${{ matrix.python-version }}
cache-id: ${{ github.event.pull_request.id }}
- name: isort
run: poetry run isort afidsvalidator test -c
- name: black
run: poetry run black afidsvalidator test --check
- name: flake8
run: poetry run flake8 afidsvalidator test
- name: pylint
run: poetry run pylint afidsvalidator test
build-frontend:
needs: [linting]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: action/checkout@v4
- name: Cache node installation
uses: actions/cache@v3
with:
path: ~/.local
key: ${{ runner.os }}-node-${{ github.event.pull_request.id }}
- name: Install node
uses: actions/setup-node@v3
with:
node-version: 20
- name: Install react dependencies
run: |
npm --prefix afidsvalidator/static/lib/afidsvalidator-react install
- name: Build react frontend
run: |
npm run --prefix afidsvalidator/static/lib/afidsvalidator-react build
- name: Check changes
run: |
gh_status=$(git status --porcelain)
if [ -z "$gh_status" ]; then
echo 'modified="false"' >> $GITHUB_ENV
else
echo 'modified="true"' >> $GITHUB_ENV
fi
- name: Commit changes
if: env.modified == 'true'
run: |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git diff-index --quiet HEAD || git commit -m "[BOT] Build react frontend" -a
- name: Push to repo
if: env.modified == 'true'
uses: CasperWA/push-protected@v2
with:
branch: ${{ github.event.pull_request.head.ref }}
token: ${{ secrets.BP_PAT_TOKEN }}
unprotect_reviews: true
assign-reviewer:
needs: [build-frontend]
if: github.event.pull_request.assignee == null
uses: khanlab/actions/.github/workflows/[email protected]
update_changelog:
if: github.event.pull_request.merged == true
uses: khanlab/actions/.github/workflows/[email protected]
secrets:
BP-PAT: ${{ secrets.BP_PAT_TOKEN }}