From daa79e5cb646e867749fa9ff2ce31c0c7fb1e018 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Thu, 4 Apr 2024 10:10:24 +0200 Subject: [PATCH 01/13] switching ppd ingress --- devops/ppd.values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/ppd.values.yaml b/devops/ppd.values.yaml index 855ab153..c196ad19 100644 --- a/devops/ppd.values.yaml +++ b/devops/ppd.values.yaml @@ -1,4 +1,4 @@ -dockerPullSecret: docker-pull-secret +-tpdockerPullSecret: docker-pull-secret scwSecretKey: AgChoEnPitXp4Ny/rVMEcevaWKNVpyj2cJYAcq+yFqKwVwnLB+ffDvwqz9XBHu+6d4Nyyjkf37zUAMoaM21lEDWA7x3zfG2/D/j+rvX1qxzZgLD0mjBk7fGElVm332I6JA83oInes8AMMYEDPLElzHnpKRb9KtkIP4NzgOcCeW0ijft3N7Vroez6LEHsBPCA1I9XjKSkGEDvrO0MhWX3iJOlfz+SPMfJAV7rPawOs0ZmohTHrPW8qIvGDn8HCzKyU8zRBoMt+Ogpf5pH4U3JryEFuqD61KAQgablAM8edPIvsgNno9HAEuC2QtRLYA9aUhuKdaKuS58c9P2E80PHWXIlbpFCg6EugQTgNfnYp+3qDUNz8edeCfapYLvF4s9eCMGyMsGnpDR8EDNOyuGy7Y3l7okX8Xqu464gMp9E+hX7bHkcD6a4xfyIgJcWxsku0tm1TH1dpn4M1UXRuyZZif8P08nuE6MTUL67sAR9J1lpn4lVEL4kflk0pP2tZ5ncgPQFafJrRz05krMb0eU5tb2H4gs7ao/LL6idWo8MM9K1yr8lIuT5x2WW5CX+RjA+i50ex114V6vX3PNP5oVyt+DynTUB9QmXzVm3oLfDc3Cae1uqh7X0CFd+xiztJBtg0VtJaD/xUJcuWfY4cV2lERo9fRrykltzlJqiXHO4nowt8OtN0BcViVV8NJhPhYFzyb4ympxpOlTjm3GETuT2TYhUqdgS9nzleEAbOmOHZdIO2COunPE= @@ -18,7 +18,7 @@ lecoffreBack: limits: memory: 2Gi ingress: - host: api.ppd.lecoffre.smart-chain.fr + host: api-tp.ppd.lecoffre.smart-chain.fr tls: hosts: - api.ppd.lecoffre.smart-chain.fr From 44685ba0204349bb820b49b2e482c3e66827343d Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Thu, 4 Apr 2024 10:46:08 +0200 Subject: [PATCH 02/13] switching ppd ingress --- devops/ppd.values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/ppd.values.yaml b/devops/ppd.values.yaml index c196ad19..78ece8a3 100644 --- a/devops/ppd.values.yaml +++ b/devops/ppd.values.yaml @@ -21,7 +21,7 @@ lecoffreBack: host: api-tp.ppd.lecoffre.smart-chain.fr tls: hosts: - - api.ppd.lecoffre.smart-chain.fr + - api-tp.ppd.lecoffre.smart-chain.fr secretName: api-tls annotations: kubernetes.io/ingress.class: nginx From c22a9a911b6026c6b837e21db27d81c1991323e1 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Fri, 5 Apr 2024 15:34:27 +0200 Subject: [PATCH 03/13] logging cron error --- src/common/config/variables/Variables.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/common/config/variables/Variables.ts b/src/common/config/variables/Variables.ts index 93a426b2..c6c44c8a 100644 --- a/src/common/config/variables/Variables.ts +++ b/src/common/config/variables/Variables.ts @@ -200,6 +200,7 @@ export class BackendVariables { if (process.env["ENV"] === "dev" || process.env["ENV"] === "stg") { throw error; } + console.error(error); throw new Error("Some env variables are required!"); } return this; From abd4a689f2007d3473f842d9f8f7ff4fd57361b7 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Fri, 5 Apr 2024 16:00:24 +0200 Subject: [PATCH 04/13] logging cron error --- src/common/config/variables/Variables.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/config/variables/Variables.ts b/src/common/config/variables/Variables.ts index c6c44c8a..39628530 100644 --- a/src/common/config/variables/Variables.ts +++ b/src/common/config/variables/Variables.ts @@ -200,8 +200,8 @@ export class BackendVariables { if (process.env["ENV"] === "dev" || process.env["ENV"] === "stg") { throw error; } - console.error(error); - throw new Error("Some env variables are required!"); + throw new Error(error); + // throw new Error("Some env variables are required!"); } return this; } From df08465d6475ea0b5eba479ff8d0edf60315c467 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Fri, 5 Apr 2024 16:15:56 +0200 Subject: [PATCH 05/13] remove error logging --- src/common/config/variables/Variables.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/common/config/variables/Variables.ts b/src/common/config/variables/Variables.ts index 39628530..93a426b2 100644 --- a/src/common/config/variables/Variables.ts +++ b/src/common/config/variables/Variables.ts @@ -200,8 +200,7 @@ export class BackendVariables { if (process.env["ENV"] === "dev" || process.env["ENV"] === "stg") { throw error; } - throw new Error(error); - // throw new Error("Some env variables are required!"); + throw new Error("Some env variables are required!"); } return this; } From 0337ed5366e59924bea69a3ae96dd365a6027ad4 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Fri, 5 Apr 2024 16:16:13 +0200 Subject: [PATCH 06/13] copy dockerfile from back for cron --- Dockerfile-Cron | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Dockerfile-Cron b/Dockerfile-Cron index 3dbfefe4..77780e6f 100644 --- a/Dockerfile-Cron +++ b/Dockerfile-Cron @@ -15,13 +15,6 @@ RUN ssh-keyscan github.com smart-chain-fr/leCoffre-resources.git >> /root/.ssh/k RUN npm install --frozen-lockfile -# Rebuild the source code only when needed -FROM node:19-alpine AS builder - -WORKDIR leCoffre - -COPY --from=deps leCoffre/node_modules ./node_modules -COPY --from=deps leCoffre/package.json package.json COPY tsconfig.json tsconfig.json COPY src src @@ -35,11 +28,12 @@ WORKDIR leCoffre RUN adduser -D lecoffreuser --uid 10000 && chown -R lecoffreuser . -COPY --from=builder --chown=lecoffreuser leCoffre/node_modules ./node_modules -COPY --from=builder --chown=lecoffreuser leCoffre/dist dist -COPY --from=builder --chown=lecoffreuser leCoffre/package.json ./package.json -COPY --from=builder --chown=lecoffreuser leCoffre/src/common/databases ./src/common/databases +COPY --from=deps --chown=lecoffreuser leCoffre/node_modules ./node_modules +COPY --from=deps --chown=lecoffreuser leCoffre/dist dist +COPY --from=deps --chown=lecoffreuser leCoffre/package.json ./package.json +COPY --from=deps --chown=lecoffreuser leCoffre/src/common/databases ./src/common/databases +RUN apk update && apk add chromium USER lecoffreuser CMD ["npm", "run", "cron"] From 489f88bf20489a002b44b1b59ca438add8b8ce87 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Mon, 22 Apr 2024 16:14:44 +0200 Subject: [PATCH 07/13] Adding LEcoffre deploy to cicd --- .github/workflows/ppd.yml | 106 ++++++++++++++++++++++++++++++++++++++ .github/workflows/prd.yml | 104 +++++++++++++++++++++++++++++++++++++ .github/workflows/stg.yml | 103 ++++++++++++++++++++++++++++++++++++ 3 files changed, 313 insertions(+) diff --git a/.github/workflows/ppd.yml b/.github/workflows/ppd.yml index 9e603652..820d214e 100644 --- a/.github/workflows/ppd.yml +++ b/.github/workflows/ppd.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: a052faf9-a712-41d7-bbfa-8293ee948e70 CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreppdw9e10llz + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: e975f056-967e-43fe-b237-84bfa8032e64 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreppdmp73pool + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,35 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +109,42 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: preprod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +180,39 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: preprod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + \ No newline at end of file diff --git a/.github/workflows/prd.yml b/.github/workflows/prd.yml index 4128eea5..a2d26631 100644 --- a/.github/workflows/prd.yml +++ b/.github/workflows/prd.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: 17374437-5428-468c-9f41-d89787ffce0e CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreprdg7h5bbub + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: 8fbbce9d-31d1-4368-94c4-445e79f10834 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreprdjulp9mam + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,34 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +108,41 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: prod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +178,39 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: prod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + \ No newline at end of file diff --git a/.github/workflows/stg.yml b/.github/workflows/stg.yml index baceacb7..eb340f7f 100644 --- a/.github/workflows/stg.yml +++ b/.github/workflows/stg.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: 9f949ff2-97bc-4979-ade2-1994dcaabde0 CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffrestgqhhn4ixh + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: f8137e85-47ad-46a5-9e2e-18af5de829c5 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffrestgbqbfhtv6 + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,34 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +108,41 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: staging + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +178,38 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: staging + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} \ No newline at end of file From 5683672ee78e846a8877dd584312225992b46669 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Mon, 22 Apr 2024 16:47:28 +0200 Subject: [PATCH 08/13] Adding LEcoffre deploy to cicd --- .github/workflows/ppd.yml | 106 ++++++++++++++++++++++++++++++++++++++ .github/workflows/prd.yml | 104 +++++++++++++++++++++++++++++++++++++ .github/workflows/stg.yml | 103 ++++++++++++++++++++++++++++++++++++ 3 files changed, 313 insertions(+) diff --git a/.github/workflows/ppd.yml b/.github/workflows/ppd.yml index 9e603652..820d214e 100644 --- a/.github/workflows/ppd.yml +++ b/.github/workflows/ppd.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: a052faf9-a712-41d7-bbfa-8293ee948e70 CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreppdw9e10llz + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: e975f056-967e-43fe-b237-84bfa8032e64 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreppdmp73pool + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,35 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +109,42 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: preprod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +180,39 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: preprod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + \ No newline at end of file diff --git a/.github/workflows/prd.yml b/.github/workflows/prd.yml index 4128eea5..a2d26631 100644 --- a/.github/workflows/prd.yml +++ b/.github/workflows/prd.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: 17374437-5428-468c-9f41-d89787ffce0e CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreprdg7h5bbub + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: 8fbbce9d-31d1-4368-94c4-445e79f10834 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreprdjulp9mam + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,34 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +108,41 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: prod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +178,39 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: prod + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + \ No newline at end of file diff --git a/.github/workflows/stg.yml b/.github/workflows/stg.yml index baceacb7..eb340f7f 100644 --- a/.github/workflows/stg.yml +++ b/.github/workflows/stg.yml @@ -8,6 +8,11 @@ env: PROJECT_ID: c0ed1e9e-d945-461f-920c-98c844ef1ad4 NAMESPACE_ID: 9f949ff2-97bc-4979-ade2-1994dcaabde0 CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffrestgqhhn4ixh + + PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a + NAMESPACE_ID_LECOFFRE: f8137e85-47ad-46a5-9e2e-18af5de829c5 + CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffrestgbqbfhtv6 + IMAGE_NAME: back CONTAINER_NAME: back @@ -40,6 +45,34 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT }}/cron + build-and-push-images-lecoffre: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + env: + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + - name: Copy SSH + run: cp ~/.ssh/id_rsa id_rsa + - name: Login to Scaleway Container Registry + uses: docker/login-action@v3 + with: + username: nologin + password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} + - name: Build the Back Image + run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Push the Back Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} + - name: Build the Cron Image + run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron + - name: Push the Cron Image to Scaleway Container Registry + run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron deploy-back: needs: build-and-push-images runs-on: ubuntu-latest @@ -75,6 +108,41 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-back-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: staging + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{ env.NAMESPACE_ID_LECOFFRE }} -o json | jq -r '.[] | select(.name == "${{ env.CONTAINER_NAME }}") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} deploy-cron: needs: build-and-push-images runs-on: ubuntu-latest @@ -110,3 +178,38 @@ jobs: SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID }} SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID }} + deploy-cron-lecoffre: + needs: build-and-push-images-lecoffre + runs-on: ubuntu-latest + environment: staging + steps: + - name: Install CLI + uses: scaleway/action-scw@v0 + - name: Get container ID + run: | + echo "CONTAINER_ID=$(scw container container list namespace-id=${{env.NAMESPACE_ID_LECOFFRE}} -o json | jq -r '.[] | select(.name == "cron") | .id')" >> $GITHUB_ENV + env: + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} + - name: Deploy the container based on the new image + run: | + env_string="" + while IFS= read -r line; do + if [[ "$line" == *"="* ]]; then + key=$(echo "$line" | cut -d '=' -f 1) + value=$(echo "$line" | cut -d '=' -f 2-) + if [[ -n "$key" ]]; then + env_string+="environment-variables.$key=$value " + fi + fi + done <<< "$ENV_VARS" + env_string=$(echo $env_string | sed 's/ $//') + scw container container update ${{ env.CONTAINER_ID }} $env_string + env: + ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} + SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} + SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} + SCW_DEFAULT_ORGANIZATION_ID: ${{ secrets.SCW_ORGANIZATION_ID_LECOFFRE }} \ No newline at end of file From 0b2519fc70be69441a5177224b0f28b42b8059ba Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Tue, 23 Apr 2024 10:10:56 +0200 Subject: [PATCH 09/13] =?UTF-8?q?Fixing=20ci=20duplication=20files=20?= =?UTF-8?q?=E2=99=BB=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ppd.yml | 34 ---------------------------------- .github/workflows/prd.yml | 33 --------------------------------- 2 files changed, 67 deletions(-) diff --git a/.github/workflows/ppd.yml b/.github/workflows/ppd.yml index ef29a0c1..820d214e 100644 --- a/.github/workflows/ppd.yml +++ b/.github/workflows/ppd.yml @@ -9,11 +9,6 @@ env: NAMESPACE_ID: a052faf9-a712-41d7-bbfa-8293ee948e70 CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreppdw9e10llz - PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a - NAMESPACE_ID_LECOFFRE: e975f056-967e-43fe-b237-84bfa8032e64 - CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreppdmp73pool - - PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a NAMESPACE_ID_LECOFFRE: e975f056-967e-43fe-b237-84bfa8032e64 CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreppdmp73pool @@ -79,35 +74,6 @@ jobs: - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - build-and-push-images-lecoffre: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup SSH - run: | - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts - env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - - name: Copy SSH - run: cp ~/.ssh/id_rsa id_rsa - - name: Login to Scaleway Container Registry - uses: docker/login-action@v3 - with: - username: nologin - password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} - registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} - - name: Build the Back Image - run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} - - name: Push the Back Image to Scaleway Container Registry - run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} - - name: Build the Cron Image - run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - - name: Push the Cron Image to Scaleway Container Registry - run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - deploy-back: needs: build-and-push-images runs-on: ubuntu-latest diff --git a/.github/workflows/prd.yml b/.github/workflows/prd.yml index abcffcc1..a2d26631 100644 --- a/.github/workflows/prd.yml +++ b/.github/workflows/prd.yml @@ -9,11 +9,6 @@ env: NAMESPACE_ID: 17374437-5428-468c-9f41-d89787ffce0e CONTAINER_REGISTRY_ENDPOINT: rg.fr-par.scw.cloud/funcscwlecoffreprdg7h5bbub - PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a - NAMESPACE_ID_LECOFFRE: 8fbbce9d-31d1-4368-94c4-445e79f10834 - CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreprdjulp9mam - - PROJECT_ID_LECOFFRE: 72d08499-37c2-412b-877e-f8af0471654a NAMESPACE_ID_LECOFFRE: 8fbbce9d-31d1-4368-94c4-445e79f10834 CONTAINER_REGISTRY_ENDPOINT_LECOFFRE: rg.fr-par.scw.cloud/funcscwlecoffreprdjulp9mam @@ -78,34 +73,6 @@ jobs: run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - name: Push the Cron Image to Scaleway Container Registry run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - build-and-push-images-lecoffre: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup SSH - run: | - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts - env: - SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} - - name: Copy SSH - run: cp ~/.ssh/id_rsa id_rsa - - name: Login to Scaleway Container Registry - uses: docker/login-action@v3 - with: - username: nologin - password: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} - registry: ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }} - - name: Build the Back Image - run: docker build . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} - - name: Push the Back Image to Scaleway Container Registry - run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/${{ env.IMAGE_NAME }} - - name: Build the Cron Image - run: docker build -f Dockerfile-Cron . -t ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron - - name: Push the Cron Image to Scaleway Container Registry - run: docker push ${{ env.CONTAINER_REGISTRY_ENDPOINT_LECOFFRE }}/cron deploy-back: needs: build-and-push-images runs-on: ubuntu-latest From 5fe2ccdd8c694969c4ebad3d6f5d2cd99f09f518 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Tue, 23 Apr 2024 17:07:31 +0200 Subject: [PATCH 10/13] Fix envs on crons --- .github/workflows/ppd.yml | 2 +- .github/workflows/prd.yml | 2 +- .github/workflows/stg.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ppd.yml b/.github/workflows/ppd.yml index 820d214e..7623ef62 100644 --- a/.github/workflows/ppd.yml +++ b/.github/workflows/ppd.yml @@ -210,7 +210,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} diff --git a/.github/workflows/prd.yml b/.github/workflows/prd.yml index a2d26631..1d769392 100644 --- a/.github/workflows/prd.yml +++ b/.github/workflows/prd.yml @@ -208,7 +208,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} diff --git a/.github/workflows/stg.yml b/.github/workflows/stg.yml index 6db2e297..b4ceffe2 100644 --- a/.github/workflows/stg.yml +++ b/.github/workflows/stg.yml @@ -208,7 +208,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} From 1abab5dad2db2481d4d8081e77cbce9c2703b932 Mon Sep 17 00:00:00 2001 From: Vins Date: Wed, 24 Apr 2024 18:23:31 +0200 Subject: [PATCH 11/13] Deploy logs prod --- src/app/api/idnot/UserController.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 0b8fec33..b7426d07 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -57,7 +57,8 @@ export default class UserController extends ApiController { //Whitelist feature //Get user with contact - const prismaUser = await this.userService.getByUid(user.uid, { contact: true, role: true, office_membership: true}); + const prismaUser = await this.userService.getByUid(user.uid, { contact: true, role: true, office_membership: true}); + console.log(prismaUser); if (!prismaUser) { this.httpNotFoundRequest(response, "user not found"); @@ -66,6 +67,7 @@ export default class UserController extends ApiController { //Hydrate user to be able to use his contact const userHydrated = User.hydrate(prismaUser, { strategy: "excludeAll" }); + console.log(userHydrated); if (!userHydrated.contact?.email || userHydrated.contact?.email === "") { this.httpUnauthorized(response, "Email not found"); @@ -73,14 +75,18 @@ export default class UserController extends ApiController { } let isSubscribed = false; - const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); + const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); + console.log(subscriptions); - if (!subscriptions || subscriptions.length === 0 || subscriptions[0]?.status === ESubscriptionStatus.INACTIVE) { + if (!subscriptions || subscriptions.length === 0 || subscriptions[0]?.status === ESubscriptionStatus.INACTIVE) { + console.log("No subscription found"); isSubscribed = false; } - else if (subscriptions[0]?.type === EType.Unlimited) { + else if (subscriptions[0]?.type === EType.Unlimited) { + console.log("Unlimited subscription found"); isSubscribed = true; - } else { + } else { + console.log("Standard subscription found"); const hasSeat = await this.subscriptionsService.get({ where: { status: ESubscriptionStatus.ACTIVE, seats: { some: { user_uid: userHydrated.uid } } }, }); @@ -116,9 +122,11 @@ export default class UserController extends ApiController { await this.idNotService.updateOffice(user.office_uid); - const payload = await this.authService.getUserJwtPayload(user.idNot); + const payload = await this.authService.getUserJwtPayload(user.idNot); + console.log(payload); if(!payload) return; + console.log(isSubscribed, userHydrated.role?.name); if(!isSubscribed && userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin"){ const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { uid: "94343601-04c8-44ef-afb9-3047597528a9" }, include: { rules: true } }); From ed46eddf29093c7ab1a7c97abf3d18a0aefedf1b Mon Sep 17 00:00:00 2001 From: Vins Date: Wed, 24 Apr 2024 18:32:31 +0200 Subject: [PATCH 12/13] Fix login --- src/app/api/idnot/UserController.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index b7426d07..f6440ccc 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -127,7 +127,17 @@ export default class UserController extends ApiController { if(!payload) return; console.log(isSubscribed, userHydrated.role?.name); - if(!isSubscribed && userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin"){ + if(!isSubscribed && userHydrated.role?.name === "admin"){ + const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { uid: "94343601-04c8-44ef-afb9-3047597528a9" }, include: { rules: true } }); + + const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); + if(!manageSubscriptionRules[0]) return; + + payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; + + isSubscribed = true; + } + if(!isSubscribed && userHydrated.role?.name === "super-admin"){ const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { uid: "94343601-04c8-44ef-afb9-3047597528a9" }, include: { rules: true } }); const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); From eae6aece6c8818fcae33ba93632d5f830cfe1f12 Mon Sep 17 00:00:00 2001 From: Maxime Lalo Date: Thu, 25 Apr 2024 11:36:24 +0200 Subject: [PATCH 13/13] :sparkles: redeploy --- src/app/api/admin/StripeController.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/app/api/admin/StripeController.ts b/src/app/api/admin/StripeController.ts index b5e5d5a9..1c33a401 100644 --- a/src/app/api/admin/StripeController.ts +++ b/src/app/api/admin/StripeController.ts @@ -2,7 +2,7 @@ import authHandler from "@App/middlewares/AuthHandler"; import ruleHandler from "@App/middlewares/RulesHandler"; // import roleHandler from "@App/middlewares/RolesHandler"; import ApiController from "@Common/system/controller-pattern/ApiController"; -import { Controller, Get, Post} from "@ControllerPattern/index"; +import { Controller, Get, Post } from "@ControllerPattern/index"; import StripeService from "@Services/common/StripeService/StripeService"; import { validateOrReject } from "class-validator"; import { Request, Response } from "express"; @@ -28,13 +28,13 @@ export default class StripeController extends ApiController { //add office id to request body req.body.office = { uid: officeId }; - const frequency : EPaymentFrequency = req.body.frequency; - if(!frequency || !Object.values(EPaymentFrequency).includes(frequency)) { + const frequency: EPaymentFrequency = req.body.frequency; + if (!frequency || !Object.values(EPaymentFrequency).includes(frequency)) { this.httpBadRequest(response, "Invalid frequency"); return; } - - //init Subscription resource with request body values + + //init Subscription resource with request body valuess const subscriptionEntity = Subscription.hydrate(req.body, { strategy: "excludeAll" }); await validateOrReject(subscriptionEntity, { groups: ["createSubscription"], forbidUnknownValues: false }); @@ -42,7 +42,6 @@ export default class StripeController extends ApiController { const stripeSession = await this.stripeService.createCheckoutSession(subscriptionEntity, frequency); this.httpCreated(response, stripeSession); - } catch (error) { this.httpInternalError(response, error); return; @@ -70,7 +69,6 @@ export default class StripeController extends ApiController { @Get("/api/v1/admin/stripe/:uid/client-portal", [authHandler, ruleHandler]) protected async getClientPortalSession(req: Request, response: Response) { try { - const uid = req.params["uid"]; if (!uid) { this.httpBadRequest(response, "No uid provided"); @@ -95,7 +93,7 @@ export default class StripeController extends ApiController { return; } - const customer = await this.stripeService.getCustomerBySubscription(uid); + const customer = await this.stripeService.getCustomerBySubscription(uid); this.httpSuccess(response, customer); } catch (error) { this.httpInternalError(response, error);