3.4. Git source


Lorsqu’il est spécifié, le code source est récupéré à partir de l’emplacement fourni.

Lorsque vous fournissez un Dockerfile en ligne, il écrase le Dockerfile dans le contexteDir du référentiel Git.

La définition de la source fait partie de la section Spécification dans le BuildConfig:

source:
  git: 
1

    uri: "https://github.com/openshift/ruby-hello-world"
    ref: "master"
  contextDir: "app/dir" 
2

  dockerfile: "FROM openshift/ruby-22-centos7\nUSER example" 
3
Copy to Clipboard Toggle word wrap
1
Le champ git contient l’identifiant de ressource uniforme (URI) dans le référentiel Git distant du code source. Il faut spécifier la valeur du champ ref pour vérifier une référence Git spécifique. Il peut s’agir d’une balise SHA1 ou d’un nom de branche. La valeur par défaut du champ ref est master.
2
Le champ contextDir vous permet de remplacer l’emplacement par défaut à l’intérieur du référentiel de code source où la build recherche le code source de l’application. Lorsque votre application existe à l’intérieur d’un sous-répertoire, vous pouvez remplacer l’emplacement par défaut (le dossier racine) en utilisant ce champ.
3
Lorsque le champ dockerfile optionnel est fourni, il devrait s’agir d’une chaîne contenant un Dockerfile qui écrase tout Dockerfile pouvant exister dans le référentiel source.

Dans le cas où le champ ref indique une requête de traction, le système utilise une opération de récupération de git, puis la vérification FETCH_HEAD.

Lorsqu’aucune valeur réf n’est fournie, OpenShift Dedicated effectue un clone peu profond (--profondeur=1). Dans ce cas, seuls les fichiers associés au plus récent commit sur la branche par défaut (généralement maître) sont téléchargés. Cela se traduit par le téléchargement des dépôts plus rapidement, mais sans l’historique complet de l’engagement. Afin d’effectuer un clone git complet de la branche par défaut d’un référentiel spécifié, définissez ref au nom de la branche par défaut (par exemple principal).

Avertissement

Les opérations de clone de Git qui passent par un proxy qui exécute l’homme au milieu (MITM) TLS détournement ou recryptage de la connexion proxiée ne fonctionnent pas.

3.4.1. À l’aide d’un proxy

Lorsque votre dépôt Git ne peut être consulté qu’à l’aide d’un proxy, vous pouvez définir le proxy à utiliser dans la section source de la configuration de construction. Il est possible de configurer un proxy HTTP et HTTPS à utiliser. Les deux champs sont facultatifs. Les domaines pour lesquels aucun proxying ne doit être effectué peuvent également être spécifiés dans le champ NoProxy.

Note

L’URI source doit utiliser le protocole HTTP ou HTTPS pour que cela fonctionne.

source:
  git:
    uri: "https://github.com/openshift/ruby-hello-world"
    ref: "master"
    httpProxy: http://proxy.example.com
    httpsProxy: https://proxy.example.com
    noProxy: somedomain.com, otherdomain.com
Copy to Clipboard Toggle word wrap
Note

En ce qui concerne les constructions de stratégie Pipeline, compte tenu des restrictions actuelles avec le plugin Git pour Jenkins, toutes les opérations Git via le plugin Git ne tirent pas parti du proxy HTTP ou HTTPS défini dans le BuildConfig. Le plugin Git utilise uniquement le proxy configuré dans l’interface utilisateur Jenkins dans le panneau Gestionnaire de plugins. Ce proxy est ensuite utilisé pour toutes les interactions git au sein de Jenkins, dans tous les emplois.

3.4.2. Les secrets de Clone

Les pods de builder nécessitent l’accès à tous les référentiels Git définis comme source pour une construction. Les secrets de clone source sont utilisés pour fournir à la pod constructeur l’accès auquel il n’aurait normalement pas accès, tels que des dépôts privés ou des dépôts avec des certificats SSL autosignés ou non fiables.

Les configurations secrètes de clone source suivantes sont prises en charge:

  • Fichier .gitconfig
  • Authentification de base
  • Authentification des clés SSH
  • Autorités de certification de confiance
Note

Il est également possible d’utiliser des combinaisons de ces configurations pour répondre à vos besoins spécifiques.

Lorsqu’un BuildConfig est créé, OpenShift Dedicated peut remplir automatiquement sa référence secrète de clone source. Ce comportement permet aux builds résultants d’utiliser automatiquement les informations d’identification stockées dans le secret référencé pour s’authentifier vers un référentiel Git distant, sans nécessiter de configuration supplémentaire.

Afin d’utiliser cette fonctionnalité, un secret contenant les informations d’identification du référentiel Git doit exister dans l’espace de noms dans lequel le BuildConfig est créé ultérieurement. Ces secrets doivent inclure une ou plusieurs annotations préfixées avec build.openshift.io/source-secret-match-uri-. La valeur de chacune de ces annotations est un modèle Uniform Resource Identifier (URI), qui est défini comme suit. Lorsqu’un BuildConfig est créé sans référence secrète de clone source et que son URI source Git correspond à un modèle URI dans une annotation secrète, OpenShift Dedicated insère automatiquement une référence à ce secret dans le BuildConfig.

Conditions préalables

Le modèle URI doit consister en:

  • A schéma valide: *://, git://, http://, https:/ ou ssh:///
  • Hôte: *' ou un nom d’hôte valide ou une adresse IP éventuellement précédée de *.
  • Chemin: /* ou / suivi de tous les caractères optionnellement incluant * caractères

Dans tout ce qui précède, un caractère * est interprété comme un wildcard.

Important

Les modèles URI doivent correspondre aux URI source Git qui sont conformes à la RFC3986. Il ne faut pas inclure un composant nom d’utilisateur (ou mot de passe) dans un modèle URI.

Ainsi, si vous utilisez ssh://git@bitbucket.atlassian.com:7999/ATLASSIAN jira.git pour une URL de dépôt git, le secret source doit être spécifié comme ssh://bitbucket.atlassian.com:7999/* (et non ssh://git@bitbucket.atlassian.com:7999/*).

$ oc annotate secret mysecret \
    'build.openshift.io/source-secret-match-uri-1=ssh://bitbucket.atlassian.com:7999/*'
Copy to Clipboard Toggle word wrap

Procédure

Lorsque plusieurs secrets correspondent à l’URI Git d’un BuildConfig particulier, OpenShift Dedicated sélectionne le secret avec le plus long match. Cela permet l’écrasement de base, comme dans l’exemple suivant.

Le fragment suivant montre deux secrets de clones sources partiels, le premier correspondant à n’importe quel serveur dans le domaine mycorp.com accessible par HTTPS, et le second accès principal aux serveurs mydev1.mycorp.com et mydev2.mycorp.com:

kind: Secret
apiVersion: v1
metadata:
  name: matches-all-corporate-servers-https-only
  annotations:
    build.openshift.io/source-secret-match-uri-1: https://*.mycorp.com/*
data:
  ...
---
kind: Secret
apiVersion: v1
metadata:
  name: override-for-my-dev-servers-https-only
  annotations:
    build.openshift.io/source-secret-match-uri-1: https://mydev1.mycorp.com/*
    build.openshift.io/source-secret-match-uri-2: https://mydev2.mycorp.com/*
data:
  ...
Copy to Clipboard Toggle word wrap
  • Ajouter une annotation build.openshift.io/source-secret-match-uri- à un secret préexistant en utilisant:

    $ oc annotate secret mysecret \
        'build.openshift.io/source-secret-match-uri-1=https://*.mycorp.com/*'
    Copy to Clipboard Toggle word wrap

3.4.2.2. Ajout manuel d’un clone source secret

Les secrets de clone source peuvent être ajoutés manuellement à une configuration de build en ajoutant un champ sourceSecret à la section source à l’intérieur du BuildConfig et le paramétrer au nom du secret que vous avez créé. Dans cet exemple, c’est le secret de base.

apiVersion: "build.openshift.io/v1"
kind: "BuildConfig"
metadata:
  name: "sample-build"
spec:
  output:
    to:
      kind: "ImageStreamTag"
      name: "sample-image:latest"
  source:
    git:
      uri: "https://github.com/user/app.git"
    sourceSecret:
      name: "basicsecret"
  strategy:
    sourceStrategy:
      from:
        kind: "ImageStreamTag"
        name: "python-33-centos7:latest"
Copy to Clipboard Toggle word wrap

Procédure

Il est également possible d’utiliser la commande oc set build-secret pour définir le secret du clone source sur une configuration de build existante.

  • Afin de définir le secret du clone source sur une configuration de build existante, entrez la commande suivante:

    $ oc set build-secret --source bc/sample-build basicsecret
    Copy to Clipboard Toggle word wrap

3.4.2.3. Créer un secret à partir d’un fichier .gitconfig

Lorsque le clonage de votre application dépend d’un fichier .gitconfig, vous pouvez créer un secret qui le contient. Ajoutez-le au compte de service constructeur, puis à votre BuildConfig.

Procédure

  • Créer un secret à partir d’un fichier .gitconfig:
$ oc create secret generic <secret_name> --from-file=<path/to/.gitconfig>
Copy to Clipboard Toggle word wrap
Note

La vérification SSL peut être désactivée si sslVerify=false est défini pour la section http dans votre fichier .gitconfig:

[http]
        sslVerify=false
Copy to Clipboard Toggle word wrap

Lorsque votre serveur Git est sécurisé avec SSL bidirectionnel et nom d’utilisateur avec mot de passe, vous devez ajouter les fichiers de certificat à votre création de source et ajouter des références aux fichiers de certificat dans le fichier .gitconfig.

Conditions préalables

  • Il faut avoir des informations d’identification Git.

Procédure

Ajoutez les fichiers de certificat à votre source de création et ajoutez des références aux fichiers de certificat dans le fichier .gitconfig.

  1. Ajoutez les fichiers client.crt, cacert.crt et client.key dans le dossier /var/run/secrets/openshift.io/source/ dans le code source de l’application.
  2. Dans le fichier .gitconfig pour le serveur, ajoutez la section [http] affichée dans l’exemple suivant:

    # cat .gitconfig
    Copy to Clipboard Toggle word wrap

    Exemple de sortie

    [user]
            name = <name>
            email = <email>
    [http]
            sslVerify = false
            sslCert = /var/run/secrets/openshift.io/source/client.crt
            sslKey = /var/run/secrets/openshift.io/source/client.key
            sslCaInfo = /var/run/secrets/openshift.io/source/cacert.crt
    Copy to Clipboard Toggle word wrap

  3. Créer le secret:

    $ oc create secret generic <secret_name> \
    --from-literal=username=<user_name> \
    1
    
    --from-literal=password=<password> \
    2
    
    --from-file=.gitconfig=.gitconfig \
    --from-file=client.crt=/var/run/secrets/openshift.io/source/client.crt \
    --from-file=cacert.crt=/var/run/secrets/openshift.io/source/cacert.crt \
    --from-file=client.key=/var/run/secrets/openshift.io/source/client.key
    Copy to Clipboard Toggle word wrap
    1
    Le nom d’utilisateur Git de l’utilisateur.
    2
    Le mot de passe pour cet utilisateur.
Important

Afin d’éviter d’avoir à saisir à nouveau votre mot de passe, assurez-vous de spécifier l’image source à image (S2I) dans vos builds. Cependant, si vous ne pouvez pas cloner le référentiel, vous devez toujours spécifier votre nom d’utilisateur et votre mot de passe pour promouvoir la construction.

L’authentification de base nécessite soit une combinaison de --username et --password, soit un jeton à authentifier par rapport au serveur de gestion de la configuration du logiciel (SCM).

Conditions préalables

  • Le nom d’utilisateur et le mot de passe pour accéder au référentiel privé.

Procédure

  1. Créez le secret d’abord avant d’utiliser le --username et --password pour accéder au référentiel privé:

    $ oc create secret generic <secret_name> \
        --from-literal=username=<user_name> \
        --from-literal=password=<password> \
        --type=kubernetes.io/basic-auth
    Copy to Clipboard Toggle word wrap
  2. Créer un secret d’authentification de base avec un jeton:

    $ oc create secret generic <secret_name> \
        --from-literal=password=<token> \
        --type=kubernetes.io/basic-auth
    Copy to Clipboard Toggle word wrap

L’authentification basée sur les clés SSH nécessite une clé SSH privée.

Les clés de dépôt sont généralement situées dans le répertoire $HOME/.ssh/, et sont nommées id_dsa.pub, id_ecdsa.pub, id_ed25519.pub, ou id_rsa.pub par défaut.

Procédure

  1. Générer des identifiants clés SSH:

    $ ssh-keygen -t ed25519 -C "your_email@example.com"
    Copy to Clipboard Toggle word wrap
    Note

    La création d’une phrase de passe pour la clé SSH empêche OpenShift Dedicated de construire. Lorsqu’il est demandé une phrase de passe, laissez-le vide.

    Deux fichiers sont créés: la clé publique et une clé privée correspondante (un de id_dsa, id_ecdsa, id_ed25519 ou id_rsa). Avec ces deux en place, consultez le manuel de votre système de gestion du contrôle source (SCM) sur la façon de télécharger la clé publique. La clé privée est utilisée pour accéder à votre dépôt privé.

  2. Avant d’utiliser la clé SSH pour accéder au référentiel privé, créez le secret:

    $ oc create secret generic <secret_name> \
        --from-file=ssh-privatekey=<path/to/ssh/private/key> \
        --from-file=<path/to/known_hosts> \
    1
    
        --type=kubernetes.io/ssh-auth
    Copy to Clipboard Toggle word wrap
    1
    Facultatif : L’ajout de ce champ permet une vérification stricte de la clé hôte du serveur.
    Avertissement

    En sautant le fichier connu_hosts tout en créant le secret, la construction est vulnérable à une attaque potentielle de l’homme dans le milieu (MITM).

    Note

    Assurez-vous que le fichierknown_hosts inclut une entrée pour l’hôte de votre code source.

L’ensemble des autorités de certification Transport Layer Security (TLS) qui sont fiables lors d’une opération de clone Git sont intégrés dans les images d’infrastructure dédiées à OpenShift. Lorsque votre serveur Git utilise un certificat autosigné ou signé par une autorité qui ne fait pas confiance à l’image, vous pouvez créer un secret qui contient le certificat ou désactiver la vérification TLS.

Lorsque vous créez un secret pour le certificat CA, OpenShift Dedicated l’utilise pour accéder à votre serveur Git lors de l’opération de clone Git. Cette méthode est nettement plus sécurisée que la désactivation de la vérification SSL Git, qui accepte tout certificat TLS qui est présenté.

Procédure

Créez un secret avec un fichier de certificat CA.

  1. Dans le cas où votre CA utilise des autorisations de certification intermédiaires, combinez les certificats pour toutes les AC dans un fichier ca.crt. Entrez la commande suivante:

    $ cat intermediateCA.crt intermediateCA.crt rootCA.crt > ca.crt
    Copy to Clipboard Toggle word wrap
  2. Créez le secret en entrant la commande suivante:

    $ oc create secret generic mycert --from-file=ca.crt=</path/to/file> 
    1
    Copy to Clipboard Toggle word wrap
    1
    Il faut utiliser le nom de clé ca.crt.

3.4.2.8. Combinaisons de sources secrètes

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques.

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, tels qu’un secret d’authentification SSH avec un fichier .gitconfig.

Conditions préalables

  • Authentification SSH
  • Fichier .gitconfig

Procédure

  • Afin de créer un secret d’authentification SSH avec un fichier .gitconfig, entrez la commande suivante:

    $ oc create secret generic <secret_name> \
        --from-file=ssh-privatekey=<path/to/ssh/private/key> \
        --from-file=<path/to/.gitconfig> \
        --type=kubernetes.io/ssh-auth
    Copy to Clipboard Toggle word wrap

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine un fichier .gitconfig et un certificat d’autorité de certification (CA).

Conditions préalables

  • Fichier .gitconfig
  • Certificat CA

Procédure

  • Afin de créer un secret qui combine un fichier .gitconfig et un certificat CA, entrez la commande suivante:

    $ oc create secret generic <secret_name> \
        --from-file=ca.crt=<path/to/certificate> \
        --from-file=<path/to/.gitconfig>
    Copy to Clipboard Toggle word wrap

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une autorité d’authentification de base et un certificat d’autorité de certification (CA).

Conditions préalables

  • Informations d’authentification de base
  • Certificat CA

Procédure

  • Afin de créer un secret d’authentification de base avec un certificat CA, entrez la commande suivante:

    $ oc create secret generic <secret_name> \
        --from-literal=username=<user_name> \
        --from-literal=password=<password> \
        --from-file=ca-cert=</path/to/file> \
        --type=kubernetes.io/basic-auth
    Copy to Clipboard Toggle word wrap

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une authentification de base et un fichier .gitconfig.

Conditions préalables

  • Informations d’authentification de base
  • Fichier .gitconfig

Procédure

  • Afin de créer un secret d’authentification de base avec un fichier .gitconfig, entrez la commande suivante:

    $ oc create secret generic <secret_name> \
        --from-literal=username=<user_name> \
        --from-literal=password=<password> \
        --from-file=</path/to/.gitconfig> \
        --type=kubernetes.io/basic-auth
    Copy to Clipboard Toggle word wrap

Il est possible de combiner les différentes méthodes de création de secrets de clone source pour vos besoins spécifiques, comme un secret qui combine une authentification de base, un fichier .gitconfig et un certificat d’autorité de certification (CA).

Conditions préalables

  • Informations d’authentification de base
  • Fichier .gitconfig
  • Certificat CA

Procédure

  • Afin de créer un secret d’authentification de base avec un fichier .gitconfig et un certificat CA, entrez la commande suivante:

    $ oc create secret generic <secret_name> \
        --from-literal=username=<user_name> \
        --from-literal=password=<password> \
        --from-file=</path/to/.gitconfig> \
        --from-file=ca-cert=</path/to/file> \
        --type=kubernetes.io/basic-auth
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat