248 lines
2.6 KiB
Markdown
248 lines
2.6 KiB
Markdown
# CI/CD
|
|
|
|
## Overview
|
|
|
|
The goal of SilverLinux is to become the central deployment platform for Silver Solutions applications.
|
|
|
|
Source code is managed through Gitea and future deployments should be automated through CI/CD pipelines.
|
|
|
|
---
|
|
|
|
## Current Situation
|
|
|
|
Application deployments are currently performed manually.
|
|
|
|
Typical process:
|
|
|
|
1. Developer commits code.
|
|
2. Developer publishes application.
|
|
3. Files are deployed manually.
|
|
4. IIS application is restarted if necessary.
|
|
|
|
Status:
|
|
|
|
```text
|
|
Manual
|
|
```
|
|
|
|
---
|
|
|
|
## Future Goal
|
|
|
|
Automate deployments from Gitea repositories to target servers.
|
|
|
|
Examples:
|
|
|
|
* Windows IIS servers
|
|
* Application servers
|
|
* Test environments
|
|
* Future Linux deployments
|
|
|
|
---
|
|
|
|
## Planned Architecture
|
|
|
|
```text
|
|
Developer
|
|
↓
|
|
Git Commit
|
|
↓
|
|
Gitea
|
|
↓
|
|
Gitea Actions
|
|
↓
|
|
Build
|
|
↓
|
|
Test
|
|
↓
|
|
Deploy
|
|
↓
|
|
Target Server
|
|
```
|
|
|
|
---
|
|
|
|
## Deployment Targets
|
|
|
|
### Windows IIS
|
|
|
|
Purpose:
|
|
|
|
Deploy:
|
|
|
|
* ASP.NET Core
|
|
* Blazor Server
|
|
* Blazor Web App
|
|
|
|
Method:
|
|
|
|
```text
|
|
Publish
|
|
→ Copy Files
|
|
→ Restart IIS Site
|
|
```
|
|
|
|
Status:
|
|
|
|
Planned
|
|
|
|
---
|
|
|
|
### Linux Containers
|
|
|
|
Purpose:
|
|
|
|
Future Docker deployments.
|
|
|
|
Method:
|
|
|
|
```text
|
|
Build Docker Image
|
|
→ Push Image
|
|
→ Deploy Stack
|
|
```
|
|
|
|
Status:
|
|
|
|
Future
|
|
|
|
---
|
|
|
|
## Planned Tooling
|
|
|
|
### Gitea Actions
|
|
|
|
Purpose:
|
|
|
|
* Build automation
|
|
* Testing
|
|
* Deployment automation
|
|
|
|
Status:
|
|
|
|
Planned
|
|
|
|
---
|
|
|
|
### Self-Hosted Runner
|
|
|
|
Purpose:
|
|
|
|
Execute build pipelines.
|
|
|
|
Potential Location:
|
|
|
|
```text
|
|
SilverLinux
|
|
```
|
|
|
|
Status:
|
|
|
|
Planned
|
|
|
|
---
|
|
|
|
## Pipeline Stages
|
|
|
|
### Build
|
|
|
|
Examples:
|
|
|
|
* Restore NuGet packages
|
|
* Build solution
|
|
* Publish application
|
|
|
|
---
|
|
|
|
### Test
|
|
|
|
Examples:
|
|
|
|
* Unit tests
|
|
* Integration tests
|
|
* Build validation
|
|
|
|
---
|
|
|
|
### Deploy
|
|
|
|
Examples:
|
|
|
|
* IIS deployment
|
|
* Docker deployment
|
|
* Environment updates
|
|
|
|
---
|
|
|
|
## Notifications
|
|
|
|
Future CI/CD notifications should use:
|
|
|
|
```text
|
|
noreply@silveressence.net
|
|
```
|
|
|
|
Examples:
|
|
|
|
* Build succeeded
|
|
* Build failed
|
|
* Deployment completed
|
|
* Deployment failed
|
|
|
|
---
|
|
|
|
## Security
|
|
|
|
Deployment credentials should never be stored in repositories.
|
|
|
|
Store credentials in:
|
|
|
|
```text
|
|
/ srv/secrets/company.env
|
|
```
|
|
|
|
or platform-specific secret stores.
|
|
|
|
---
|
|
|
|
## Initial Target
|
|
|
|
First automated deployment target:
|
|
|
|
```text
|
|
Gitea
|
|
→
|
|
Windows Server IIS
|
|
→
|
|
Blazor Applications
|
|
```
|
|
|
|
This provides the highest immediate value.
|
|
|
|
---
|
|
|
|
## Future Enhancements
|
|
|
|
* Automatic testing
|
|
* Automatic deployment
|
|
* Release pipelines
|
|
* Docker image registry
|
|
* BaGet integration
|
|
* Multi-environment deployments
|
|
|
|
---
|
|
|
|
## Related Services
|
|
|
|
* Gitea
|
|
* Portainer
|
|
* Nginx Proxy Manager
|
|
|
|
---
|
|
|
|
## Related Documentation
|
|
|
|
* gitea/README.md
|
|
* docs/server.md
|
|
* docs/security.md
|