Files
nazarick-private/.gitea/workflows/ci.yml
T

123 lines
3.7 KiB
YAML

name: CI
on:
push:
branches: [ '**' ]
schedule:
- cron: '0 3 * * 1' # Montags 03:00 UTC → deploy-infra (Ollama update)
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo check --all-targets
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy -- -D warnings
deploy:
runs-on: ubuntu-latest
needs: [ check, test, clippy ]
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
steps:
- uses: actions/checkout@v4
- name: Install cross-compilation tools
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
- uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-unknown-linux-gnu
- uses: Swatinem/rust-cache@v2
- name: Build ARM64
run: cargo build --release --target aarch64-unknown-linux-gnu
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.PI_SSH_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -p 10022 localhost >> ~/.ssh/known_hosts
- name: Copy binary to Pi
run: |
scp -i ~/.ssh/deploy_key -P 10022 \
target/aarch64-unknown-linux-gnu/release/nazarick \
deploy@localhost:/opt/nazarick/nazarick.new
- name: Copy Dockerfile to Pi
run: |
scp -i ~/.ssh/deploy_key -P 10022 \
Dockerfile \
deploy@localhost:/opt/nazarick/Dockerfile
- name: Copy config files dynamically to Pi
run: |
# shared config
scp -i ~/.ssh/deploy_key -P 10022 \
config/shared_core.md \
deploy@localhost:/opt/nazarick/config/shared_core.md
# Alle Agent-Config-Files dynamisch (soul_core.md, soul_personality.md etc.)
find crates/*/config -type f -name "*.md" | while read f; do
CRATE=$(echo "$f" | cut -d'/' -f1-3)
ssh -i ~/.ssh/deploy_key -p 10022 deploy@localhost "mkdir -p /opt/nazarick/$CRATE"
scp -i ~/.ssh/deploy_key -P 10022 "$f" "deploy@localhost:/opt/nazarick/$f"
done
- name: Build image and restart nazarick
run: |
ssh -i ~/.ssh/deploy_key -p 10022 deploy@localhost '
cd /opt/nazarick
mkdir -p target/release
mv nazarick.new target/release/nazarick
docker build -t nazarick:latest .
docker compose down nazarick || true
docker compose up -d nazarick
'
deploy-infra:
runs-on: ubuntu-latest
if: github.event_name == 'schedule'
steps:
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.PI_SSH_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -p 10022 localhost >> ~/.ssh/known_hosts
- name: Update Ollama + pull latest Gemma
run: |
ssh -i ~/.ssh/deploy_key -p 10022 deploy@localhost '
cd /opt/nazarick
docker compose pull ollama
docker compose up -d ollama
sleep 5
docker exec ollama ollama pull gemma4:e2b
docker compose restart nazarick
'