🚀👷 Beginning of CI/CD : change parameters to environment variables and create .drone.yml

master
Alix JEUDI--LEMOINE 5 months ago
parent c993d2f1af
commit f52fd40455

@ -0,0 +1,61 @@
kind: pipeline
type: docker
name: Deploiement
trigger:
event:
- push
steps:
- name: code-analysis
image: hub.codefirst.iut.uca.fr/marc.chevaldonne/codefirst-dronesonarplugin-python37
settings:
sonar_host: https://codefirst.iut.uca.fr/sonar/
sonar_token:
from_secret: SECRET_SONAR_TOKEN
- name: docker-build-and-push
image: plugins/docker
settings:
dockerfile: docker/Dockerfile
context: .
registry: hub.codefirst.iut.uca.fr
mirror: https://proxy.iut.uca.fr:8443
repo: hub.codefirst.iut.uca.fr/alix.jeudi--lemoine/memorymap_api
username:
from_secret: SECRET_REGISTRY_USERNAME
password:
from_secret: SECRET_REGISTRY_PASSWORD
- name: deploy-database
image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest
environment:
IMAGENAME: mongo:8.0.3-noble
CONTAINERNAME: memorymap_mongodb
COMMAND: create
OVERWRITE: true
CODEFIRST_CLIENTDRONE_ENV_MONGO_INITDB_ROOT_USERNAME:
from_secret: SECRET_MONGODB_USERNAME
CODEFIRST_CLIENTDRONE_ENV_MONGO_INITDB_ROOT_PASSWORD:
from_secret: SECRET_MONGODB_PASSWORD
- name: deploy-container
image: hub.codefirst.iut.uca.fr/thomas.bellembois/codefirst-dockerproxy-clientdrone:latest
environment:
IMAGENAME: hub.codefirst.iut.uca.fr/alix.jeudi--lemoine/memorymap_api:latest
CONTAINERNAME: memorymap_api
COMMAND: create
OVERWRITE: true
CODEFIRST_CLIENTDRONE_ENV_MONGODB_URL: "mongodb://memorymap_mongodb:27017/"
CODEFIRST_CLIENTDRONE_ENV_MONGODB_USERNAME:
from_secret: SECRET_MONGODB_USERNAME
CODEFIRST_CLIENTDRONE_ENV_MONGODB_PASSWORD:
from_secret: SECRET_MONGODB_PASSWORD
CODEFIRST_CLIENTDRONE_ENV_MONGODB_DATABASE:
from_secret: SECRET_MONGODB_DATABASE
CODEFIRST_CLIENTDRONE_ENV_JWT_SECRET_KEY:
from_secret: SECRET_JWT_SECRET_KEY
CODEFIRST_CLIENTDRONE_ENV_JWT_ALGORITHM:
from_secret: SECRET_JWT_ALGORITHM
CODEFIRST_CLIENTDRONE_ENV_JWT_ACCESS_TOKEN_EXPIRE_MINUTES:
from_secret: SECRET_JWT_ACCESS_TOKEN_EXPIRE_MINUTES

@ -1,13 +1,15 @@
import os
# Constants for PyMongo
MONGODB_URL = "mongodb://localhost:27017/"
MONGODB_USERNAME = "mongoadmin"
MONGODB_PASSWORD = "secret"
MONGODB_DATABASE = "memorymap"
MONGODB_URL = os.getenv("MONGODB_URL", "mongodb://localhost:27017/")
MONGODB_USERNAME = os.getenv("MONGODB_USERNAME", "mongoadmin")
MONGODB_PASSWORD = os.getenv("MONGODB_PASSWORD", "secret")
MONGODB_DATABASE = os.getenv("MONGODB_DATABASE", "memorymap")
# Constants for JWT
SECRET_KEY = "_2YfT44$xF.Tg_xI63UH3D7:N+>pZN2';j%>7H@?e0:Xor'pV[" # temporary of course :)
ALGORITHM = "HS256" # TODO: check if broken (don't believe)
ACCESS_TOKEN_EXPIRE_MINUTES = 30 # TODO: check what to add here / maybe need to evaluate criticity of that?
SECRET_KEY = os.getenv("JWT_SECRET_KEY", "_2YfT44$xF.Tg_xI63UH3D7:N+>pZN2';j%>7H@?e0:Xor'pV[") # temporary of course :)
ALGORITHM = os.getenv("JWT_ALGORITHM", "HS256") # TODO: check if broken (don't believe)
ACCESS_TOKEN_EXPIRE_MINUTES = os.getenv("JWT_ACCESS_TOKEN_EXPIRE_MINUTES", 30) # TODO: check what to add here / maybe need to evaluate criticity of that?
# Constants for OAuth2
TOKEN_URL = "login" # Path to the auth

@ -0,0 +1,20 @@
# Official Python image
FROM python:3.12-slim
# Set workdir
WORKDIR /app
# Copy the file with the requirements
COPY requirements.txt .
# Install the package dependencies in the requirements file.
RUN pip install --no-cache-dir --upgrade -r requirements.txt
# Copy the FastAPI app folder in the container
COPY ./app .
# Expose API port
EXPOSE 80
# Launches the uvicorn server (command from offical FastAPI documentation)
CMD ["fastapi", "run", "app/main.py", "--port", "80"]

@ -1,28 +0,0 @@
def users_serialize(users: list) -> list:
serialized_users: list = []
for user in users:
serialized_users.append({
"id": str(user["_id"]),
"username": user["username"]
})
return serialized_users
def friends_serialize(friends: list) -> list:
serialized_friends: list = []
for friend in friends:
serialized_friends.append({
"id": str(friend["_id"]),
"user_id": friend["user_id"]
})
return serialized_friends
def pins_serialize(pins: list) -> list:
serialized_pins: list = []
for pin in pins:
serialized_pins.append({
"id": str(pin["_id"]),
"title": pin["title"],
"description": pin["description"]
})
return serialized_pins
Loading…
Cancel
Save