updated with Action Runner
This commit is contained in:
+98
-185
@@ -2,246 +2,159 @@
|
||||
|
||||
## 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.
|
||||
SilverLinux provides CI/CD through globally enabled Gitea Actions and a self-hosted runner. Package publishing is operational; application deployment to Windows IIS and Linux targets remains future work.
|
||||
|
||||
---
|
||||
|
||||
## Current Situation
|
||||
## Gitea Actions
|
||||
|
||||
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.
|
||||
Gitea Actions is enabled in Gitea's `app.ini` and is available globally.
|
||||
|
||||
Status:
|
||||
|
||||
```text
|
||||
Manual
|
||||
Operational
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Future Goal
|
||||
## Self-Hosted Runner
|
||||
|
||||
Automate deployments from Gitea repositories to target servers.
|
||||
| Property | Value |
|
||||
| --- | --- |
|
||||
| Location | `/srv/docker/gitea-runner` |
|
||||
| Image | `gitea/act_runner:latest` |
|
||||
| Runner name | `silverlinux-runner` |
|
||||
| Runner type | Global Runner |
|
||||
| Status | Operational |
|
||||
|
||||
Examples:
|
||||
Runner labels:
|
||||
|
||||
* Windows IIS servers
|
||||
* Application servers
|
||||
* Test environments
|
||||
* Future Linux deployments
|
||||
* `ubuntu-latest`
|
||||
* `ubuntu-24.04`
|
||||
* `ubuntu-22.04`
|
||||
|
||||
The global runner can execute Actions workflows for repositories hosted by the SilverLinux Gitea instance.
|
||||
|
||||
---
|
||||
|
||||
## Planned Architecture
|
||||
## Silver 2.0 Package Publishing
|
||||
|
||||
Workflow:
|
||||
|
||||
```text
|
||||
Developer
|
||||
↓
|
||||
Git Commit
|
||||
↓
|
||||
Gitea
|
||||
↓
|
||||
Gitea Actions
|
||||
↓
|
||||
Build
|
||||
↓
|
||||
Test
|
||||
↓
|
||||
Deploy
|
||||
↓
|
||||
Target Server
|
||||
.gitea/workflows/package.yml
|
||||
```
|
||||
|
||||
The workflow runs when both conditions are satisfied:
|
||||
|
||||
1. Code is pushed to the `net-8-version` branch.
|
||||
2. The commit message contains `[Package]`.
|
||||
|
||||
Example commit message:
|
||||
|
||||
```text
|
||||
Package Silver 2.0 libraries [Package]
|
||||
```
|
||||
|
||||
Pipeline steps:
|
||||
|
||||
1. Check out the repository.
|
||||
2. Install the .NET 8 SDK.
|
||||
3. Restore the solution.
|
||||
4. Build the solution using the `Deploy` configuration.
|
||||
5. Pack the NuGet packages.
|
||||
6. Push the packages to BaGet.
|
||||
|
||||
NuGet feed:
|
||||
|
||||
```text
|
||||
https://nuget.silveressence.net/v3/index.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Deployment Targets
|
||||
## Operational Flow
|
||||
|
||||
```text
|
||||
Git push
|
||||
-> Gitea Actions
|
||||
-> silverlinux-runner
|
||||
-> dotnet restore
|
||||
-> dotnet build
|
||||
-> dotnet pack
|
||||
-> BaGet package publish
|
||||
```
|
||||
|
||||
The complete workflow has been tested successfully and is operational.
|
||||
|
||||
---
|
||||
|
||||
## Secrets
|
||||
|
||||
Runner registration token:
|
||||
|
||||
```text
|
||||
/srv/secrets/company.env
|
||||
GITEA_RUNNER_REGISTRATION_TOKEN
|
||||
```
|
||||
|
||||
BaGet publishing credential:
|
||||
|
||||
```text
|
||||
Repository Settings -> Actions -> Secrets
|
||||
BAGET_API_KEY
|
||||
```
|
||||
|
||||
No credentials are stored in repositories. Infrastructure-level secrets belong in `company.env`; repository workflow secrets belong in Gitea Actions Secrets.
|
||||
|
||||
---
|
||||
|
||||
## Future Deployment Targets
|
||||
|
||||
### Windows IIS
|
||||
|
||||
Purpose:
|
||||
|
||||
Deploy:
|
||||
|
||||
* ASP.NET Core
|
||||
* Blazor Server
|
||||
* Blazor Web App
|
||||
|
||||
Method:
|
||||
Planned targets include ASP.NET Core, Blazor Server and Blazor Web App deployments.
|
||||
|
||||
```text
|
||||
Publish
|
||||
→ Copy Files
|
||||
→ Restart IIS Site
|
||||
Publish -> Copy files -> Restart IIS site
|
||||
```
|
||||
|
||||
Status:
|
||||
|
||||
Planned
|
||||
|
||||
---
|
||||
Status: Planned
|
||||
|
||||
### Linux Containers
|
||||
|
||||
Purpose:
|
||||
|
||||
Future Docker deployments.
|
||||
|
||||
Method:
|
||||
|
||||
```text
|
||||
Build Docker Image
|
||||
→ Push Image
|
||||
→ Deploy Stack
|
||||
Build 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.
|
||||
Status: Future
|
||||
|
||||
---
|
||||
|
||||
## Future Enhancements
|
||||
|
||||
* Automatic testing
|
||||
* Automatic deployment
|
||||
* Automated tests
|
||||
* Automated Windows IIS deployment
|
||||
* Linux container deployment
|
||||
* Release pipelines
|
||||
* Docker image registry
|
||||
* BaGet integration
|
||||
* Multi-environment deployments
|
||||
* Package publishing for additional repositories
|
||||
|
||||
---
|
||||
|
||||
## Related Services
|
||||
|
||||
* Gitea
|
||||
* Gitea Actions Runner
|
||||
* BaGet
|
||||
* Portainer
|
||||
* Nginx Proxy Manager
|
||||
|
||||
---
|
||||
|
||||
## Related Documentation
|
||||
|
||||
* gitea/README.md
|
||||
* baget/README.md
|
||||
* docs/server.md
|
||||
* docs/security.md
|
||||
* docs/secrets.md
|
||||
|
||||
Reference in New Issue
Block a user