Starting learning cicd from scratch

Demo gitea action
This commit is contained in:
2026-02-19 00:36:02 +01:00
parent 1a09a62a4c
commit 400e7b6595
3 changed files with 19 additions and 72 deletions
-28
View File
@@ -1,28 +0,0 @@
name: CI validate docker composes
on:
push:
branches: [dev]
pull_request:
branches: [main]
jobs:
validate:
runs-on: ci
steps:
- name: Install Node and tools
run: |
apk add --no-cache nodejs yamllint docker-cli-compose git
- uses: actions/checkout@v4
- name: Lint all compose files
run: |
find . \( -name "compose.yaml" -o -name "docker-compose.yaml" \) -print0 | xargs -0 yamllint -d "{extends: relaxed, rules: {line-length: disable}}"
- name: Validate docker compose syntax
run: |
for f in $(find . -name "compose.yaml" -o -name "docker-compose.yaml"); do
echo "Checking: $f"
docker compose -f "$f" config -q
done
+19
View File
@@ -0,0 +1,19 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: dev
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
-44
View File
@@ -1,44 +0,0 @@
name: CD staged deploy
on:
push:
branches: [main]
jobs:
detect-changes:
runs-on: deploy
outputs:
services: ${{ steps.set-matrix.outputs.services }}
steps:
- name: Fix git ownership and Fetch
run: |
git config --global --add safe.directory /srv/homelab
cd /srv/homelab
git fetch origin main
git reset --hard origin/main
- id: set-matrix
name: Generate service list
run: |
cd /srv/homelab
# Собираем список папок в JSON-массив для матрицы
DIRS=$(git diff --name-only HEAD~1 HEAD | cut -d/ -f1 | sort -u | xargs -I{} sh -c 'if [ -f {}/compose.yaml ] || [ -f {}/docker-compose.yaml ]; then echo \"{}\"; fi' | paste -sd,)
echo "services=[$DIRS]" >> $GITEA_OUTPUT
apply-deploy:
needs: detect-changes
if: needs.detect-changes.outputs.services != '[]'
runs-on: deploy
strategy:
matrix:
service: ${{ fromJson(needs.detect-changes.outputs.services) }}
fail-fast: false
name: Deploy ${{ matrix.service }}
steps:
- name: Deploy Service
run: |
cd /srv/homelab/${{ matrix.service }}
echo "Syncing and starting ${{ matrix.service }}..."
docker compose pull
docker compose up -d --remove-orphans