diff --git a/.github/workflows/dev-deploy.yml b/.github/workflows/dev-deploy.yml new file mode 100644 index 00000000..409d05bb --- /dev/null +++ b/.github/workflows/dev-deploy.yml @@ -0,0 +1,18 @@ +name: Dev deploy (self-hosted) +on: + release: + types: [published] + +jobs: + deploy: + runs-on: [self-hosted, Linux, dev] + steps: + - name: Pull latest compose + run: | + cd /opt/EasyVPN.dev + docker-compose --profile init pull + + - name: Restart Docker Compose + run: | + cd /opt/EasyVPN.dev + docker-compose --profile init up -d diff --git a/.github/workflows/prod-deploy.yml b/.github/workflows/prod-deploy.yml new file mode 100644 index 00000000..17da21bb --- /dev/null +++ b/.github/workflows/prod-deploy.yml @@ -0,0 +1,30 @@ +name: Production deploy (self-hosted) +on: + workflow_dispatch: + inputs: + confirm_secret: + description: 'Confirm deploy in **PROD**' + required: true + +jobs: + deploy: + runs-on: [self-hosted, Linux, prod] + steps: + - name: Secret check + run: | + if [ "${{ github.event.inputs.confirm_secret }}" != "${{ secrets.PROD_DEPLOY_SECRET }}" ]; then + echo "❌ Invlid secret. Stoping." + exit 1 + fi + shell: bash + + - name: Pull latest compose + run: | + cd /opt/EasyVPN + curl -L -o docker-compose.yml https://raw.githubusercontent.com/F1st3K/EasyVPN/refs/heads/main/docker-compose.yml + docker-compose pull + + - name: Restart Docker Compose + run: | + cd /opt/EasyVPN + docker-compose up -d diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 21c26bf5..22b69bbe 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -55,7 +55,7 @@ jobs: - name: Configure release note env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.PAT }} run: | gh release create $(cat VERSION) \ --repo="$GITHUB_REPOSITORY" \ diff --git a/CHANGELOG.md b/CHANGELOG.md index 72a9d6cd..bbd22ccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## `1.1.0` (2025-05-22) + +### Features + +- backend: Hide swagger documentation by env variable +- backend: Add version for response health +- Single Deploy: Reject HTTPS in app +- Single Deploy: Add deployment for dev and prod enviroment by workflow + ## `1.0.0` (2025-05-20) ### Features diff --git a/README.md b/README.md index 6dade135..85eefdbd 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,19 @@ # EasyVPN +[![GitHub Release](https://img.shields.io/github/v/release/F1st3K/EasyVPN)](https://hub.docker.com/u/easyvpn) + [![Build](https://github.com/F1st3K/EasyVPN/actions/workflows/test-single-deploy.yml/badge.svg)](https://github.com/F1st3K/EasyVPN/actions/workflows/test-single-deploy.yml) +[![DEV](https://img.shields.io/badge/dynamic/json?label=DEV&url=https%3A%2F%2Fdev.easy-vpn.f1st3k.tw1.su%2Fapi%2Fhealth&query=%24.version&color=yellowgreen)](https://dev.easy-vpn.f1st3k.tw1.su) +[![PROD](https://img.shields.io/badge/dynamic/json?label=PROD&url=https%3A%2F%2Feasy-vpn.f1st3k.tw1.su%2Fapi%2Fhealth&query=%24.version&color=brightgreen)](https://easy-vpn.f1st3k.tw1.su) + + -[![GitHub Release](https://img.shields.io/github/v/release/F1st3K/EasyVPN)](https://hub.docker.com/u/easyvpn) [![License: CC BY-NC 4.0](https://img.shields.io/badge/License-CC_BY--NC_4.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc/4.0/) [![GitHub contributors](https://img.shields.io/github/contributors/F1st3K/EasyVPN)](https://GitHub.com/F1st3K/EasyVPN/graphs/contributors/) [![GitHub Stars](https://img.shields.io/github/stars/F1st3K/EasyVPN.svg)](https://github.com/F1st3K/EasyVPN/stargazers) + Простое VPN + Backend + Frontend приложение на одном сервере! [![System Design](.img/SystemDesign.excalidraw.svg)**💻 Watch**](https://www.youtube.com/watch?v=nR8FZ8_98pk) diff --git a/VERSION b/VERSION index 3eefcb9d..9084fa2f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0 +1.1.0 diff --git a/backend/src/EasyVPN.Api/EasyVPN.Api.csproj b/backend/src/EasyVPN.Api/EasyVPN.Api.csproj index 11158d9a..01f7ca0b 100644 --- a/backend/src/EasyVPN.Api/EasyVPN.Api.csproj +++ b/backend/src/EasyVPN.Api/EasyVPN.Api.csproj @@ -3,7 +3,7 @@ net8.0 enable enable - 1.0.0 + 1.1.0 true $(NoWarn);1591 diff --git a/backend/src/EasyVPN.Api/Program.cs b/backend/src/EasyVPN.Api/Program.cs index 01879f18..e0f58a0f 100644 --- a/backend/src/EasyVPN.Api/Program.cs +++ b/backend/src/EasyVPN.Api/Program.cs @@ -7,6 +7,9 @@ var builder = WebApplication.CreateBuilder(args); { + builder.Services.Configure( + builder.Configuration.GetSection(Options.Features.SectionName)); + builder.Services.AddCors(options => options.AddPolicy("AllowAll", policy => policy.AllowAnyOrigin() @@ -21,8 +24,7 @@ var app = builder.Build(); { - var f = new Options.Featuers(); - app.Configuration.Bind(Options.Featuers.SectionName, f); + var f = app.Services.GetRequiredService>().Value; if (f.UseDocumentationEndpoint) app.UseDocumentationEndpoint(); diff --git a/backend/src/EasyVPN.Application/EasyVPN.Application.csproj b/backend/src/EasyVPN.Application/EasyVPN.Application.csproj index 7d767a36..42bd3aa2 100644 --- a/backend/src/EasyVPN.Application/EasyVPN.Application.csproj +++ b/backend/src/EasyVPN.Application/EasyVPN.Application.csproj @@ -3,7 +3,7 @@ net8.0 enable enable - 1.0.0 + 1.1.0 diff --git a/backend/src/EasyVPN.Contracts/EasyVPN.Contracts.csproj b/backend/src/EasyVPN.Contracts/EasyVPN.Contracts.csproj index ef03febd..2b001995 100644 --- a/backend/src/EasyVPN.Contracts/EasyVPN.Contracts.csproj +++ b/backend/src/EasyVPN.Contracts/EasyVPN.Contracts.csproj @@ -3,6 +3,6 @@ net8.0 enable enable - 1.0.0 + 1.1.0 \ No newline at end of file diff --git a/backend/src/EasyVPN.Domain/EasyVPN.Domain.csproj b/backend/src/EasyVPN.Domain/EasyVPN.Domain.csproj index d7786493..103c16de 100644 --- a/backend/src/EasyVPN.Domain/EasyVPN.Domain.csproj +++ b/backend/src/EasyVPN.Domain/EasyVPN.Domain.csproj @@ -3,7 +3,7 @@ net8.0 enable enable - 1.0.0 + 1.1.0 diff --git a/backend/src/EasyVPN.Infrastructure/EasyVPN.Infrastructure.csproj b/backend/src/EasyVPN.Infrastructure/EasyVPN.Infrastructure.csproj index 8021f20c..2867978c 100644 --- a/backend/src/EasyVPN.Infrastructure/EasyVPN.Infrastructure.csproj +++ b/backend/src/EasyVPN.Infrastructure/EasyVPN.Infrastructure.csproj @@ -3,7 +3,7 @@ net8.0 enable enable - 1.0.0 + 1.1.0 diff --git a/backend/src/EasyVPN.Infrastructure/Settings/Options.Featuers.cs b/backend/src/EasyVPN.Infrastructure/Settings/Options.Featuers.cs index 33ab4e5a..70b9be8e 100644 --- a/backend/src/EasyVPN.Infrastructure/Settings/Options.Featuers.cs +++ b/backend/src/EasyVPN.Infrastructure/Settings/Options.Featuers.cs @@ -2,9 +2,9 @@ namespace EasyVPN.Infrastructure.Settings; public static partial class Options { - public class Featuers + public class Features { - public const string SectionName = "Featuers"; + public const string SectionName = "Features"; public bool UseDocumentationEndpoint { get; init; } public bool UseExceptionHandler { get; init; } diff --git a/backend/tests/UnitTests/EasyVPN.Application.UnitTests/EasyVPN.Application.UnitTests.csproj b/backend/tests/UnitTests/EasyVPN.Application.UnitTests/EasyVPN.Application.UnitTests.csproj index 6a568808..e7ba2ca0 100644 --- a/backend/tests/UnitTests/EasyVPN.Application.UnitTests/EasyVPN.Application.UnitTests.csproj +++ b/backend/tests/UnitTests/EasyVPN.Application.UnitTests/EasyVPN.Application.UnitTests.csproj @@ -5,7 +5,7 @@ enable false true - 1.0.0 + 1.1.0 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f3775db2..83486333 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "easy-vpn-frontend", - "version": "1.0.0", + "version": "1.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "easy-vpn-frontend", - "version": "1.0.0", + "version": "1.1.0", "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", diff --git a/frontend/package.json b/frontend/package.json index ab53c7a2..87d02918 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "easy-vpn-frontend", - "version": "1.0.0", + "version": "1.1.0", "private": true, "dependencies": { "@emotion/react": "^11.13.3", diff --git a/init/init.sh b/init/init.sh index ce9170da..176e7bde 100755 --- a/init/init.sh +++ b/init/init.sh @@ -1,5 +1,5 @@ #!/bin/sh -VERSION=1.0.0 +VERSION=1.1.0 echo "" echo "🔧 Data Initialization Script" diff --git a/services/AmneziaWgVpn/cmd/config.yml b/services/AmneziaWgVpn/cmd/config.yml index b3f19db8..9e9ed8cf 100644 --- a/services/AmneziaWgVpn/cmd/config.yml +++ b/services/AmneziaWgVpn/cmd/config.yml @@ -1,6 +1,6 @@ service: name: 'wireguard-vpn' - version: '1.0.0' + version: '1.1.0' api: port: "8010" vpn: diff --git a/services/TelegramBot/pyproject.toml b/services/TelegramBot/pyproject.toml index 16ae2fda..b1953647 100644 --- a/services/TelegramBot/pyproject.toml +++ b/services/TelegramBot/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "easy-vpn-telegram-bot" -version = "1.0.0" +version = "1.1.0" description = "Telegram Notification Bot for Easy VPN" authors = ["Alex Poryadin (sw1pr0g) "] license = "MIT" diff --git a/services/WireguardVpn/cmd/config.yml b/services/WireguardVpn/cmd/config.yml index f0b47209..99b6d041 100644 --- a/services/WireguardVpn/cmd/config.yml +++ b/services/WireguardVpn/cmd/config.yml @@ -1,6 +1,6 @@ service: name: 'wireguard-vpn' - version: '1.0.0' + version: '1.1.0' api: port: "8000" vpn: