Добавил автосборку и деплой
This commit is contained in:
parent
90a3478c85
commit
dcdc1cf2ec
59
FichaBackend/.gitea/workflows/gitea-push-docker.yml
Normal file
59
FichaBackend/.gitea/workflows/gitea-push-docker.yml
Normal file
@ -0,0 +1,59 @@
|
||||
name: Create and publish a Docker image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['main']
|
||||
|
||||
env:
|
||||
REGISTRY: git.zetcraft.ru
|
||||
|
||||
jobs:
|
||||
build-and-push-image:
|
||||
runs-on: ubuntu-latest
|
||||
name: Publish image
|
||||
container: catthehacker/ubuntu:act-latest
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ gitea.actor }}
|
||||
password: ${{ secrets.TOKEN }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: https://github.com/docker/metadata-action@v4
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ gitea.repository }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||||
with:
|
||||
context: FichaBackend
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
deploy:
|
||||
needs: publish
|
||||
name: Deploy image
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: install ssh keys
|
||||
# check this thread to understand why its needed:
|
||||
# <https://stackoverflow.com/a/70447517>
|
||||
run: |
|
||||
install -m 600 -D /dev/null ~/.ssh/id_rsa
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
|
||||
ssh-keyscan -H ${{ secrets.SSH_HOST }} > ~/.ssh/known_hosts
|
||||
- name: connect and pull
|
||||
run: ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ secrets.WORK_DIR }} && docker compose pull && docker compose up -d && docker image prune && exit"
|
||||
- name: cleanup
|
||||
run: rm -rf ~/.ssh
|
@ -1,24 +1,66 @@
|
||||
using FichaBackend;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.OpenApi.Models;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
string GetEnv(string envName, string settingsName = "")
|
||||
{
|
||||
string? dbConString = builder.Configuration.GetConnectionString(settingsName) ?? Environment.GetEnvironmentVariable(envName);
|
||||
if (!string.IsNullOrEmpty(dbConString))
|
||||
return dbConString;
|
||||
|
||||
Console.WriteLine($"Environment variable {envName} not found.");
|
||||
return String.Empty;
|
||||
}
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen();
|
||||
builder.Services.AddSwaggerGen(c =>
|
||||
{
|
||||
c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "ApiDocumentation.xml"));
|
||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Sistema Backend", Version = "v1" });
|
||||
});
|
||||
|
||||
// Add services to the container.
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
// builder.Services.AddEndpointsApiExplorer();
|
||||
// builder.Services.AddSwaggerGen();
|
||||
|
||||
// Database
|
||||
string? dbConString = GetEnv("CONNECTION_STRING", "DefaultConnection");
|
||||
|
||||
builder.Services.AddDbContext<DatabaseContext>(options =>
|
||||
{ options.UseNpgsql(dbConString); });
|
||||
|
||||
// HealthChecks
|
||||
builder.Services.AddHealthChecks()
|
||||
.AddNpgSql(dbConString);
|
||||
|
||||
// Services
|
||||
// cors
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
options.AddDefaultPolicy(
|
||||
policy =>
|
||||
{
|
||||
policy.WithOrigins("*")
|
||||
.AllowAnyHeader()
|
||||
.AllowAnyMethod();
|
||||
});
|
||||
});
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
// if (app.Environment.IsDevelopment())
|
||||
// {
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
// }
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthorization();
|
||||
app.MapHealthChecks("/health");
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
|
26
README.md
26
README.md
@ -1,2 +1,28 @@
|
||||
# FichaBackend
|
||||
|
||||
# Docker
|
||||
|
||||
```bash
|
||||
docker run -d -p 82:80 \
|
||||
--name FichaBackend \
|
||||
--restart=always \
|
||||
-e CONNECTION_STRING='Host=192.168.0.46;Port=5432;Database=backend;Username=prod;Password=' \
|
||||
-e TZ=Europe/Moscow \
|
||||
git.zetcraft.ru/fichahackaton/fichabackend:main
|
||||
```
|
||||
|
||||
# Docker Compose
|
||||
|
||||
```yml
|
||||
version: '3.3'
|
||||
services:
|
||||
fichahackaton:
|
||||
ports:
|
||||
- '82:80'
|
||||
container_name: FichaBackend
|
||||
restart: always
|
||||
environment:
|
||||
- CONNECTION_STRING=Host=192.168.0.46;Port=5432;Database=backend;Username=prod;Password=
|
||||
- TZ=Europe/Moscow
|
||||
image: 'git.zetcraft.ru/fichahackaton/fichabackend:main'
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user