Merge pull request 'Adding Gitea CI/CD' (#1) from gitea_cicd into main
Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
94
.gitea/workflows/ci.yml
Normal file
94
.gitea/workflows/ci.yml
Normal 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
|
||||||
46
.gitea/workflows/dependency_update.yml
Normal file
46
.gitea/workflows/dependency_update.yml
Normal 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
42
scripts/create_pr_gitea.sh
Executable 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"
|
||||||
Reference in New Issue
Block a user