Commit Graph

115 Commits

Author SHA1 Message Date
84a5a3fa21 chore(ci): update build workflow for targeted path triggers and concurrency management
- Refine branch and path filters for efficient CI triggers.
- Add concurrency control to avoid overlapping builds.
- Improve runtime base build logic with conditional evaluation and skipping.
- Enhance image info generation with fallback handling and deployment readiness checks.
2025-11-03 22:41:06 +01:00
7a2cb0b63e fix: staging deployment configuration and redis secrets handling 2025-11-03 00:15:43 +01:00
ff572534e9 ci: update deploy-staging job dependencies and conditions 2025-11-02 23:25:31 +01:00
7f3ce7f969 fix: update build workflow default branch to staging
- Change default branch from 'main' to 'staging'
- Add choice input type for branch selection
- Add debug check for RUNTIME_IMAGE_NAME
- Remove unused env variable
2025-11-02 23:12:18 +01:00
77c656af62 feat(deployment): update Semaphore stack and Traefik configuration
- Add QUICKSTART.md and SETUP_REPOSITORY.md for Semaphore stack
- Add playbooks directory for Semaphore deployment
- Update Semaphore docker-compose.yml, env.example, and README
- Add Traefik local configuration files
- Disable semaphore.yml in Traefik dynamic config
- Update docker-compose.local.yml and build-image workflow
2025-11-02 22:55:51 +01:00
516b7a847a feat(deployment): add manual deploy workflow and update semaphore configuration 2025-11-02 20:53:10 +01:00
a5cd49bde7 feat(deployment): update semaphore configuration and deployment workflows 2025-11-02 20:46:18 +01:00
24cbbccf4c feat: update deployment configuration and encrypted env loader
- Update Ansible playbooks and roles for application deployment
- Add new Gitea/Traefik troubleshooting playbooks
- Update Docker Compose configurations (base, local, staging, production)
- Enhance EncryptedEnvLoader with improved error handling
- Add deployment scripts (autossh setup, migration, secret testing)
- Update CI/CD workflows and documentation
- Add Semaphore stack configuration
2025-11-02 20:38:06 +01:00
f56d53d873 fix: add automatic nginx upstream fix for staging 502 errors
- Add post-deployment fix in build-image.yml workflow to automatically fix nginx upstream configuration
- nginx sites-available/default uses 127.0.0.1:9000 but PHP-FPM runs in staging-app container
- Fix runs automatically after each staging deployment
- Add troubleshooting documentation for staging 502 errors
- Add Ansible playbooks for quick fix and diagnosis
2025-11-02 02:29:12 +01:00
2defdf2baf chore: update staging branch with current changes 2025-11-02 00:05:26 +01:00
1f2ab358f9 ci: simplify stack path resolution in build-image workflow 2025-11-01 23:13:24 +01:00
25f05c6a17 ci: improve stack path handling in staging deployment
- Simplify local stack path normalization
- Enhance remote shell path resolution to handle user-specific paths (e.g. ~username/path)
- Better handling of escaped tilde paths in SSH heredoc
2025-11-01 23:06:54 +01:00
988e14f3c2 fix(ci): normalize stack path for staging deployment
Normalize stack path locally to avoid ~ confusion when passing to remote shell
2025-11-01 22:54:56 +01:00
ad0598d301 fix: improve stack path handling in staging deployment
- Fix user home directory detection for stack path expansion
- Handle tilde expansion and relative paths correctly
- Add fallback logic for path resolution
2025-11-01 22:47:07 +01:00
ff4b8dd848 fix(ci): expand tilde in staging deployment stack path 2025-11-01 22:32:01 +01:00
888b9cce7f ci: improve build job conditional execution in workflow
- Replace job-level if condition with env variable for better control
- Add conditional checks to all build steps
- Add skip step when build not required
- Simplify deploy-staging conditions
2025-11-01 22:23:18 +01:00
5ec5c41a0a fix(ci): improve image selection and registry handling in deployment workflow
- Add better image selection logic with fallback handling
- Support multiple registry logins for different image sources
- Improve error handling and image URL parsing
- Add proper argument escaping for SSH deployment script
2025-11-01 22:16:23 +01:00
fa28e3580a fix(ci): add image tag fallback logic and code style fixes
- Add fallback to 'latest' tag when build fails
- Add fallback mechanism when pulling specific image tag fails
- Fix code style: move opening brace in ObjectInfo
- Remove unused comment in ObjectStorage
2025-11-01 22:06:12 +01:00
477522bc1e feat: add ObjectStorage and ObjectInfo framework components
- Add ObjectStorage and ObjectInfo classes for framework storage
- Update build-image.yml workflow configuration
2025-11-01 21:53:23 +01:00
9ecc88a0eb ci: improve image tag handling and add staging to security scan 2025-11-01 21:34:40 +01:00
c51e09c6b6 fix(ci): Add runtime-base back to build job needs
- build job accesses needs.runtime-base.outputs.image_ref, so runtime-base must be in needs
- Added always() condition to ensure build runs even if runtime-base is skipped
- Outputs will be empty if runtime-base was skipped, which is handled gracefully
2025-11-01 21:23:08 +01:00
e17469084d fix(ci): Improve runtime-base image reference handling in build job
- Better handling of optional runtime-base outputs
- Added null check for runtime-base image_ref
- Improved logging when using freshly built runtime image
2025-11-01 21:22:26 +01:00
0c7b96e887 fix(ci): Fix workflow job dependencies and execution flow
- Removed runtime-base from build job dependencies (build now only depends on changes)
- runtime-base now only runs when needed (if needs_runtime_build or needs_build is true)
- build job now handles missing runtime-base outputs gracefully
- deploy-staging and deploy-production now only depend on build (not runtime-base)
- Added always() conditions to ensure jobs run even if previous jobs are skipped
- Fixes issue where workflow stopped after runtime-base job when build was skipped
2025-11-01 21:21:58 +01:00
13e12487d7 fix(ci): Fix RUNTIME_IMAGE_NAME variable substitution in runtime-base job
- Added RUNTIME_IMAGE_NAME to env section of Build and push runtime base image step
- Added RUNTIME_IMAGE_NAME to env section of Set runtime base outputs step
- Fixes 'bad substitution' error when variable is used in shell scripts
2025-11-01 21:17:44 +01:00
e68d1917b0 refactor(ci): Consolidate workflows and fix Git sync
- Added explicit Git pull in staging deployment after container restart
- Added production auto-deploy job to build-image.yml (for main branch)
- Removed redundant workflows: deploy-staging.yml, deploy-production.yml, production-deploy.yml
- All deployments now handled by build-image.yml:
  - staging branch → auto-deploy to staging
  - main branch → auto-deploy to production
- Fixed build job dependency (removed test dependency)
- Git sync now explicitly pulls code after deployment to ensure containers are up-to-date
2025-11-01 21:15:00 +01:00
d14d768acd fix(ci): Remove test dependency from build job to fix workflow execution
- Removed 'test' from build job needs array
- Build job now depends only on [changes, runtime-base]
- Fixes issue where build was waiting for skipped test job
- deploy-staging now correctly waits for build completion
2025-11-01 21:07:02 +01:00
9e34c0b474 fix: Verbessere Staging Deployment - Code-Synchronisation
- Aktualisiere docker-compose.yml immer aus Repository
- Starte staging-app Container neu für Git-Pull
- Unterstütze mehrere Image-URL-Formate in sed-Replacements
- Füge Wartezeiten für Git-Sync hinzu
- Behebt Problem, dass Code nicht synchronisiert wurde
2025-11-01 20:57:33 +01:00
8381651876 fix: Korrigiere Nginx PHP-FPM Upstream-Konfiguration für Staging
- Fix upstream configuration in staging-nginx container
- Verbessere sed-Befehle zur automatischen Korrektur der PHP-FPM Upstream-Definition
- Behebt 502 Bad Gateway Fehler durch korrekte Verbindung zu staging-app:9000
2025-11-01 20:43:42 +01:00
478754ab02 chore: clean up and rename workflows 2025-11-01 17:24:20 +01:00
6bf6bf4cbe ci: optimise docker workflows 2025-11-01 17:04:03 +01:00
210e0aa74d feat: add auto-deploy to staging after successful build 2025-11-01 15:50:52 +01:00
9591ecc906 fix: Update security-scan.yml (additional fixes) 2025-11-01 00:31:09 +01:00
2e8797ce1d fix: Correct branch detection in security-scan.yml
- Handle pull_request events correctly (use head_ref)
- Support staging branch in security scans
- Add workflow_dispatch input for branch selection
- Fix REF_NAME extraction for all event types
2025-11-01 00:29:34 +01:00
77b2dc5dd7 feat: Add staging environment setup
- Create staging stack with separate containers and volumes
- Configure staging.michaelschiemer.de subdomain routing
- Add deploy-staging.yml workflow for auto-deployment
- Extend build-image.yml to support staging branch
- Separate Redis instance and network for staging
- Staging uses staging branch by default

Features:
- Auto-deploy: Push to staging branch → build → deploy to staging
- Separate from production: Different containers, volumes, networks
- Shared Traefik: Uses same SSL certificates (*.michaelschiemer.de)
- Testing environment before production deployment
2025-10-31 23:52:30 +01:00
194bd71257 feat: Split CI/CD pipeline into separate build and deploy workflows
- Add build-image.yml: Automatic image builds on push (5-8 min)
- Add deploy-production.yml: Manual deployment workflow (2-5 min)
- Mark production-deploy.yml as deprecated

Benefits:
- Faster feedback: Images ready in ~5-8 min (vs 10-15 min before)
- Flexible deployment: Deploy when ready, not forced after every build
- Parallel execution: Multiple builds can run simultaneously
- Better separation: Build failures don't block deployments of existing images
2025-10-31 23:43:49 +01:00
6c7f27dae4 fix: add fallback for empty image_tag in deployment
- Add validation and fallback logic for IMAGE_TAG
- If build job output is empty, generate tag from commit SHA
- Use 'latest' tag as last resort fallback
- Add debug output to show what tag is being used
- Fixes 'invalid reference format' error when IMAGE_TAG is empty
2025-10-31 22:16:50 +01:00
2373060d3f refactor: replace Ansible deployment with direct SSH commands
- Remove Ansible dependency from deployment workflow
- Use direct SSH commands for Docker operations
- Simplify deployment process:
  * SSH to production server
  * Docker registry login
  * Pull new image
  * Update docker-compose.yml with sed
  * Restart services with docker compose
- Remove Ansible verification step
- Simplify rollback step (only shows manual instructions)
- Works with ubuntu-latest runner (no special image needed)
- Fixes 'ansible: command not found' errors
- Works with act for local testing
2025-10-31 22:08:00 +01:00
e9f0847b1e fix: use php-ci runner for deploy job instead of ubuntu-latest
- Changed deploy job to use php-ci runner which has Ansible pre-installed
- Removed redundant Ansible installation step
- Fixes 'ansible: command not found' error in Gitea Actions workflow
2025-10-31 21:50:37 +01:00
d14d12be3a test: Second workflow test - Buildx configuration fix 2025-10-31 21:33:19 +01:00
12cc4b3617 fix: Use DOCKER_HOST from runner environment for Buildx
- Remove hardcoded docker-dind host reference
- Buildx will use DOCKER_HOST from runner environment
- Add Docker availability check
- Improve error handling for Docker connection
2025-10-31 21:31:57 +01:00
30ab5b4270 test: Trigger workflow to test build optimization 2025-10-31 21:29:43 +01:00
9fd9875611 feat: Skip Docker build if image already exists for commit
- Add check step to verify if image for commit SHA already exists
- Skip build step if image exists (saves 5+ minutes per deployment)
- Use git-{SHORT_SHA} tag to identify images by commit
- Only rebuild when code actually changed
- Improve build cache utilization
2025-10-31 21:26:56 +01:00
8fb2736a07 fix: Prioritize HTTPS registry and configure Buildx for insecure registry
- Prioritize registry.michaelschiemer.de (HTTPS) over HTTP endpoints
- Configure Buildx to use docker-dind with insecure-registry support
- Ensure Buildx respects insecure-registry settings from docker-dind
- Fix 'http: server gave HTTP response to HTTPS client' error
2025-10-31 21:22:55 +01:00
aabb5a82fe fix: Update repository URL in all workflow files
- Fix checkout URLs in update-production-secrets.yml
- Fix checkout URLs in security-scan.yml
- Fix checkout URLs in test-registry.yml
- Change from repository.michaelschiemer.de:5000 to git.michaelschiemer.de
2025-10-31 21:15:01 +01:00
75e2d9e02f fix: Remove duplicate registry validation code
- Remove duplicate ACTUAL_REGISTRY validation logic
- Ensure REGISTRY_TO_USE is properly set before docker build
- Fix invalid tag format error by using consistent variable
2025-10-31 21:14:13 +01:00
cf4748f8db fix: Use correct Git repository URL in checkout steps
- Change from repository.michaelschiemer.de:5000 to git.michaelschiemer.de
- Remove port 5000 from HTTPS URLs (HTTPS uses default port 443)
- Fix TLS handshake error during checkout
2025-10-31 21:05:07 +01:00
0ffea7aaf9 fix: Docker image tag format - remove leading slashes from registry URL
- Add validation and cleanup for ACTUAL_REGISTRY variable
- Remove leading/trailing slashes from registry URLs
- Use REGISTRY_TO_USE variable with fallback to REGISTRY env
- Fix invalid tag format '/framework:latest' error
2025-10-31 21:03:10 +01:00
813cf32b9a Revert: Zurück zu git.michaelschiemer.de da repository.michaelschiemer.de:5000 nicht erreichbar 2025-10-31 20:31:56 +01:00
1107f84f42 Revert: Zurück zu git.michaelschiemer.de da repository.michaelschiemer.de:5000 nicht erreichbar 2025-10-31 20:28:01 +01:00
f1329433ce Update: Verwende repository.michaelschiemer.de:5000 für Git-Repository URLs
- Ändere Remote-URL zu repository.michaelschiemer.de:5000
- Aktualisiere alle Workflows (production-deploy, test-registry, security-scan, update-production-secrets)
- Test: Production Deployment Workflow
2025-10-31 20:14:41 +01:00