feat: implement CI/CD pipeline with Gitea Actions

- Add Gitea Actions workflow with 4 stages: lint, test, build, push
- Configure ruff linting and formatting checks
- Set up Django tests with PostgreSQL and Redis services
- Implement Docker image building for web and celery services
- Add requirements.txt and requirements-dev.txt generation
- Fix ipdb compatibility issues in test runner
- Update ruff configuration for Django compatibility
- Add comprehensive CI/CD documentation
This commit is contained in:
2026-01-19 14:24:48 +01:00
parent cbfbd8652d
commit 06b30fca02
26 changed files with 1769 additions and 726 deletions

View File

@@ -5,18 +5,18 @@ from . import views
urlpatterns = [
# Аутентификация
path('register/', views.RegisterView.as_view(), name='register'),
path('login/', views.LoginView.as_view(), name='login'),
path('logout/', views.LogoutView.as_view(), name='logout'),
path('token/refresh/', views.TokenRefreshView.as_view(), name='token_refresh'),
path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),
path("register/", views.RegisterView.as_view(), name="register"),
path("login/", views.LoginView.as_view(), name="login"),
path("logout/", views.LogoutView.as_view(), name="logout"),
path("token/refresh/", views.TokenRefreshView.as_view(), name="token_refresh"),
path("token/verify/", TokenVerifyView.as_view(), name="token_verify"),
# Пользовательские данные
path('me/', views.CurrentUserView.as_view(), name='current_user'),
path('me/update/', views.UserUpdateView.as_view(), name='user_update'),
path('profile/', views.ProfileDetailView.as_view(), name='profile_detail'),
path('profile/full/', views.user_profile_detail, name='profile_full'),
path("me/", views.CurrentUserView.as_view(), name="current_user"),
path("me/update/", views.UserUpdateView.as_view(), name="user_update"),
path("profile/", views.ProfileDetailView.as_view(), name="profile_detail"),
path("profile/full/", views.user_profile_detail, name="profile_full"),
# Безопасность
path('password/change/', views.PasswordChangeView.as_view(), name='password_change'),
]
path(
"password/change/", views.PasswordChangeView.as_view(), name="password_change"
),
]