Compare commits

..

3 Commits

Author SHA1 Message Date
0fdcf5ca08 Merge pull request 'Adding Gitea CI/CD' (#1) from gitea_cicd into main
Some checks failed
CI / black (push) Successful in 1m16s
CI / ruff (push) Successful in 1m17s
CI / mypy (push) Successful in 1m24s
CI / pytest (push) Successful in 1m18s
Dependency update / dependency-update (push) Failing after 1m33s
Reviewed-on: #1
2026-03-26 13:14:52 -07:00
637766a946 Updating runners to checkout
All checks were successful
CI / black (pull_request) Successful in 1m16s
CI / ruff (pull_request) Successful in 1m17s
CI / mypy (pull_request) Successful in 1m24s
CI / pytest (pull_request) Successful in 1m19s
2026-03-26 13:08:02 -07:00
b746cfc555 Adding Gitea CI/CD
Some checks failed
CI / install (pull_request) Failing after 1m12s
CI / black (pull_request) Has been skipped
CI / ruff (pull_request) Has been skipped
CI / mypy (pull_request) Has been skipped
CI / pytest (pull_request) Has been skipped
2026-03-26 12:50:01 -07:00
3 changed files with 182 additions and 0 deletions

94
.gitea/workflows/ci.yml Normal file
View File

@@ -0,0 +1,94 @@
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: "0 9 * * 1"
jobs:
black:
runs-on: ubuntu-latest
container: python:3.13-slim
steps:
- name: Checkout
run: |
apt-get update -qq && apt-get install -y -qq git
git clone ${{ github.server_url }}/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: Install system dependencies
run: apt-get install -y -qq libcap-dev
- name: Install Poetry and dependencies
run: |
pip install poetry==2.1.1
poetry install --without pi --no-interaction
- name: Run black
run: poetry run black --check src/ tests/
ruff:
runs-on: ubuntu-latest
container: python:3.13-slim
steps:
- name: Checkout
run: |
apt-get update -qq && apt-get install -y -qq git
git clone ${{ github.server_url }}/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: Install system dependencies
run: apt-get install -y -qq libcap-dev
- name: Install Poetry and dependencies
run: |
pip install poetry==2.1.1
poetry install --without pi --no-interaction
- name: Run ruff
run: poetry run ruff check src/ tests/
mypy:
runs-on: ubuntu-latest
container: python:3.13-slim
steps:
- name: Checkout
run: |
apt-get update -qq && apt-get install -y -qq git
git clone ${{ github.server_url }}/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: Install system dependencies
run: apt-get install -y -qq libcap-dev
- name: Install Poetry and dependencies
run: |
pip install poetry==2.1.1
poetry install --without pi --no-interaction
- name: Run mypy
run: poetry run mypy src/
pytest:
runs-on: ubuntu-latest
container: python:3.13-slim
steps:
- name: Checkout
run: |
apt-get update -qq && apt-get install -y -qq git
git clone ${{ github.server_url }}/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: Install system dependencies
run: apt-get install -y -qq libcap-dev
- name: Install Poetry and dependencies
run: |
pip install poetry==2.1.1
poetry install --without pi --no-interaction
- name: Run pytest
run: poetry run pytest

View File

@@ -0,0 +1,46 @@
name: Dependency update
on:
push:
branches: [main]
schedule:
- cron: "0 9 * * 1"
jobs:
dependency-update:
runs-on: ubuntu-latest
container: python:3.13-slim
if: "!startsWith(github.ref, 'refs/heads/dependency-updates-')"
steps:
- name: Checkout
run: |
apt-get update -qq && apt-get install -y -qq git curl
git clone ${{ github.server_url }}/${{ github.repository }} .
git checkout ${{ github.sha }}
- name: Install system dependencies
run: apt-get install -y -qq libcap-dev
- name: Install Poetry and dependencies
run: |
pip install poetry==2.1.1
poetry install --without pi --no-interaction
- name: Run dependency update check
id: update
run: |
chmod +x scripts/dependency_update.sh
set +e
bash scripts/dependency_update.sh
echo "changes=$?" >> $GITHUB_OUTPUT
- name: Create pull request
if: steps.update.outputs.changes == '1'
env:
CI_TOKEN: ${{ secrets.CI_TOKEN }}
CI_SERVER_URL: ${{ secrets.CI_SERVER_URL }}
REPO: ${{ github.repository }}
CI_ASSIGNEE_ID: ${{ secrets.CI_ASSIGNEE_ID }}
run: |
chmod +x scripts/create_pr_gitea.sh
bash scripts/create_pr_gitea.sh

42
scripts/create_pr_gitea.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/bash
set -e
BRANCH="dependency-updates-$(date +%Y%m%d)"
SUMMARY_FILE="/tmp/update_summary.md"
git config user.email "ci@gitea.com"
git config user.name "Gitea CI"
git checkout -b "$BRANCH"
git add pyproject.toml poetry.lock
git commit -m "chore: update dependencies $(date +%Y-%m-%d)"
git push "https://oauth2:${CI_TOKEN}@${CI_SERVER_URL#https://}/${REPO}.git" "$BRANCH"
DESCRIPTION=$(cat "$SUMMARY_FILE")
HTTP_RESPONSE=$(curl --silent --show-error \
--write-out "HTTPSTATUS:%{http_code}" \
--request POST \
--header "Authorization: token ${CI_TOKEN}" \
--header "Content-Type: application/json" \
--data "{
\"head\": \"${BRANCH}\",
\"base\": \"main\",
\"title\": \"chore: dependency updates $(date +%Y-%m-%d)\",
\"body\": $(echo "$DESCRIPTION" | python3 -c 'import json,sys; print(json.dumps(sys.stdin.read()))'),
\"assignees\": [${CI_ASSIGNEE_ID}]
}" \
"${CI_SERVER_URL}/api/v1/repos/${REPO}/pulls")
HTTP_BODY=$(echo "$HTTP_RESPONSE" | sed -e 's/HTTPSTATUS:.*//g')
HTTP_STATUS=$(echo "$HTTP_RESPONSE" | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
echo "API response status: $HTTP_STATUS"
echo "API response body: $HTTP_BODY"
if [ "$HTTP_STATUS" -ne 201 ]; then
echo "Failed to create pull request"
exit 1
fi
echo "Pull request created for branch: $BRANCH"