From 0bb3ed4256321040be6f41b8445a91361847a3e7 Mon Sep 17 00:00:00 2001 From: mogador26 Date: Mon, 29 Apr 2024 17:59:41 +0200 Subject: [PATCH] add gitlabcidso, dockerfile --- .gitlab-ci-dso.yml | 45 ++++++++++++++++ Dockerfile.bitnami | 51 +++++++++++++++++++ .../fr/1-chapeau/2-presentation-generale.md | 30 ++++++----- .../Guide_CCT_dans_la_commande_publique.md | 20 ++++++-- content/fr/1-chapeau/xx-gestion-du-cct.md | 2 +- nginx/nginx-run.template | 14 +++++ 6 files changed, 142 insertions(+), 20 deletions(-) create mode 100644 .gitlab-ci-dso.yml create mode 100644 Dockerfile.bitnami create mode 100644 nginx/nginx-run.template diff --git a/.gitlab-ci-dso.yml b/.gitlab-ci-dso.yml new file mode 100644 index 0000000..0a15bb7 --- /dev/null +++ b/.gitlab-ci-dso.yml @@ -0,0 +1,45 @@ +include: + - project: $CATALOG_PATH + file: vault-ci.yml + ref: main + - project: $CATALOG_PATH + file: kaniko-ci.yml + ref: main + +default: + image: alpine:latest + +cache: + paths: + - node_modules + +variables: + REGISTRY_URL: "${REGISTRY_HOST}/${PROJECT_PATH}" + +stages: + - read-secret + - docker-build + +read_secret: + stage: read-secret + extends: + - .vault:read_secret + +docker-build: + variables: + TAG: "${CI_COMMIT_REF_SLUG}" + WORKING_DIR: ./ + DOCKERFILE: ./Dockerfile.bitnami + IMAGE_NAMES: app-cct:1.0 app-cct:latest + stage: docker-build + extends: + - .kaniko:build-push + rules: + - if: $CI_COMMIT_BRANCH == "dev" + variables: + IMAGE_NAMES: app-cct:dev + - if: $CI_COMMIT_BRANCH == "main" + variables: + IMAGE_NAMES: app-cct:1.0 app-cct:latest + + diff --git a/Dockerfile.bitnami b/Dockerfile.bitnami new file mode 100644 index 0000000..b4157ea --- /dev/null +++ b/Dockerfile.bitnami @@ -0,0 +1,51 @@ +FROM node:18 as builder + + +ARG http_proxy +ARG https_proxy +ARG npm_registry +ARG no_proxy + +# ENV NODE_ENV production + +# Create app directory + +WORKDIR /usr/src/app + +# use proxy & private npm registry +# With internal npm repo (autosigned) disable strict ssl : strict-ssl false +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo "Europe/Paris" > /etc/timezone ; \ + if [ ! -z "$http_proxy" ] ; then \ + npm config delete proxy; \ + npm config set proxy $http_proxy; \ + npm config set https-proxy $https_proxy ; \ + npm config set no-proxy $no_proxy; \ + fi ; \ + [ -z "$npm_registry" ] || npm config set registry=$npm_registry ; \ + [ -z "$npm_registry" ] || npm config set strict-ssl false + +RUN npm cache clean -force + +# copy all dependances +COPY package.json . + +# copy all source files into app workdir +COPY . . + +# install dependencies +RUN npm install +RUN echo "installation" + +# build +RUN npm run build +RUN npm run postbuild + + +# run production static api +FROM bitnami/nginx:1.24 AS web + +WORKDIR /usr/share/nginx/html/ + +COPY --from=builder /usr/src/app/_site ./ +COPY --from=builder /usr/src/app/_site/fr/index.html ./index.html +COPY nginx/nginx-run.template /opt/bitnami/nginx/conf/server_blocks/webserver.conf diff --git a/content/fr/1-chapeau/2-presentation-generale.md b/content/fr/1-chapeau/2-presentation-generale.md index a5998d8..dbd7f25 100644 --- a/content/fr/1-chapeau/2-presentation-generale.md +++ b/content/fr/1-chapeau/2-presentation-generale.md @@ -137,21 +137,23 @@ Le CCT a une double portée, ministérielle et interministérielle : appartenant au ministère - Interministérielle dans le cas des applications n’appartenant pas au ministère mais hébergées en son sein. Ce cas s’adresse principalement aux applications -Cloud Natives +Cloud Natives. + Dans ce cadre, les acteurs ciblés par le CCT peuvent être issus du MIOM, d’un autre ministère et organisme de l’état ou d’un partenaire externe. Les principaux rôles répertoriés sont les suivants : -- Les propriétaires des applications : référents de l’application qui gèrent son -homologation, maintiennent son registre RGPD… -- Les exploitants / hébergeurs : pour leurs exigences d'exploitabilité -- Les concepteurs / développeurs - qu'ils œuvrent dans les DSI ou dans les directions -métier, au sein du ministère ou avec des prestataires externes. Le CCT les aident -à intégrer leur produit dans l'écosystème ministériel et interministériel -(description des interfaces). -- Les architectes et intégrateurs. Le CCT les aide à s'orienter vers des architectures -à la fois maitrisées par le ministère et les plus appropriées au devenir du SI de l'État -- Les services accompagnant les passations de marché (au travers des clausiers et -de la notation des offres proposés dans le guide mentionné plus haut) + + - Les propriétaires des applications : référents de l’application qui gèrent son + homologation, maintiennent son registre RGPD… + - Les exploitants / hébergeurs : pour leurs exigences d'exploitabilité + - Les concepteurs / développeurs - qu'ils œuvrent dans les DSI ou dans les directions + métier, au sein du ministère ou avec des prestataires externes. Le CCT les aident + à intégrer leur produit dans l'écosystème ministériel et interministériel + (description des interfaces). + - Les architectes et intégrateurs. Le CCT les aide à s'orienter vers des architectures + à la fois maitrisées par le ministère et les plus appropriées au devenir du SI de l'État + - Les services accompagnant les passations de marché (au travers des clausiers et + de la notation des offres proposés dans le guide mentionné plus haut) ## Utilisation du CCT au sein des projets et des processus @@ -179,10 +181,10 @@ Le CCT du MIOM concerne en particulier les modèles de déploiements suivants : Deux approches sont actuellement possibles pour la mise à disposition des applications : l’approche « cloud native » et l’approche « legacy » : -1. La première, le Cloud Native, est à privilégier systématiquement lors de la +- La première, le Cloud Native, est à privilégier systématiquement lors de la conception de nouvelles applications et lors de la transformation d‘applications existantes. -2. La seconde, le legacy, héberge les applications déployées antérieurement et +- La seconde, le legacy, héberge les applications déployées antérieurement et non compatibles avec les nouvelles normes. Elle ne pourra être utilisée pour des nouveaux usages que de manière exceptionnelle et dérogatoire. diff --git a/content/fr/1-chapeau/Guide_CCT_dans_la_commande_publique.md b/content/fr/1-chapeau/Guide_CCT_dans_la_commande_publique.md index deaecb6..b016a91 100644 --- a/content/fr/1-chapeau/Guide_CCT_dans_la_commande_publique.md +++ b/content/fr/1-chapeau/Guide_CCT_dans_la_commande_publique.md @@ -48,17 +48,27 @@ Certains produits, quand ils ne figurent pas au référentiel, peuvent déroger ### Règles et recommandations -|Ref|Statut|Intitulé| -|---|------|--------| -|-|RG|` `Un fournisseur désirant inclure dans sa solution un composant non référencé et donc non maîtrisé par le ministère dans le référentiel des produits du CCT, devra remplir les garanties pour que celui-ci puisse être considéré comme un logiciel « embarqué » dans l’application, et devra s’assurer que l’usage de ce composant n’impact pas la sécurité du SI. La gestion de ce composant est alors à la charge du demandeur sur tout le cycle de vie de celui-ci.| + +{% from "components/component.njk" import component with context %} +{{ component("table", { + title: "", + headers: ["Ref","Statut","Intitulé"], + data: [ + ["-","RG","Un fournisseur désirant inclure dans sa solution un composant non référencé et donc non maîtrisé par le ministère dans le référentiel des produits du CCT, devra remplir les garanties pour que celui-ci puisse être considéré comme un logiciel « embarqué » dans l’application, et devra s’assurer que l’usage de ce composant n’impact pas la sécurité du SI. La gestion de ce composant est alors à la charge du demandeur sur tout le cycle de vie de celui-ci."] + ] +}) }} + ## Ressources documentaires De nombreux clausiers sont disponibles sur étagère. Quelques références suivent ci-dessous. -- Le site présente dans le cas du logiciel libre des [« conseils à la rédaction de clauses de propriété intellectuelle pour les marchés de développement et de maintenance de logiciels libres »](https://www.economie.gouv.fr/apie/actualites/conseils-redaction-clauses-propriete-intellectuelle) +- Le site [numerique.gouv.fr](https://www.numerique.gouv.fr/) présente dans le cas du logiciel libre des [« conseils à la rédaction de clauses de propriété intellectuelle pour les marchés de développement et de maintenance de logiciels libres »](https://www.economie.gouv.fr/apie/actualites/conseils-redaction-clauses-propriete-intellectuelle) + - Le [site du SHFD - Service du Haut Fonctionnaire de Défense](http://ssi.minint.fr) présente ses propres [clauses concernant la sécurité du système d'information](http://ssi.minint.fr/index.php/clauses-de-securite-dans-les-marches) ainsi qu'un [guide de l'externalisation](http://ssi.minint.fr/files/referentiel_SSI/SSI_global/Guide_externalisation_V_1_0-1.pdf) -- Clausier propriété intellectuelle avec l’APIE et la DAE (Direction des Achats de l'État), daté de mars 2019 : [Guide de l'achat public - Achats informatiques et propriété intellectuelle](https://www.economie.gouv.fr/files/files/directions_services/dae/doc/Guide_PII_web.pdf). + +- Clausier propriété intellectuelle avec l’APIE et la DAE (Direction des Achats de l'État), daté de mars 2019 : [Guide de l'achat public - Achats informatiques et propriété intellectuelle](https://www.economie.gouv.fr/files/files/directions_services/dae/doc/Guide_PII_web.pdf); + - Pour information : [Publications de l'Agence du Patrimoine Immatériel de l'État (APIE)](https://www.economie.gouv.fr/apie/publications) **Remarque :** le contenu des offres de service est mis à disposition du soumissionnaire en tant que de besoin. diff --git a/content/fr/1-chapeau/xx-gestion-du-cct.md b/content/fr/1-chapeau/xx-gestion-du-cct.md index cf325bd..e7d31b4 100644 --- a/content/fr/1-chapeau/xx-gestion-du-cct.md +++ b/content/fr/1-chapeau/xx-gestion-du-cct.md @@ -29,10 +29,10 @@ Le responsable de contenus en prend connaissance et réalise les modifications n ## Génération et publication sur Internet + Après corrections apportées par le responsable des contenus, et validation par l'équipe d'Architecture d'Entreprise, un tag avec l'intitulé "officiel" est alors produit. Les contenus du site web sont alors déployés sur l'Intranet et sur l'Internet. - {%include "components/back_to_top.njk" %} \ No newline at end of file diff --git a/nginx/nginx-run.template b/nginx/nginx-run.template new file mode 100644 index 0000000..11604d5 --- /dev/null +++ b/nginx/nginx-run.template @@ -0,0 +1,14 @@ +server { + listen 8080 default_server; + set_real_ip_from 0.0.0.0/0; + real_ip_header X-Real-IP; + real_ip_recursive on; + + location / { + alias /usr/share/nginx/html/; + try_files $uri $uri.html $uri/ $uri/index.html; + } + location /_next/static { + alias /usr/share/nginx/html/_next/static; + } +}