Dans le développement de logiciels modernes, CI / CD (intégration continue et livraison continue) est devenue l'une des technologies clés pour améliorer l'efficacité du développement et assurer la qualité du code. Grâce à des processus automatisés, l'équipe de développement peut détecter les problèmes au début de la phase de développement et publier rapidement de nouvelles versions. Cependant, sur différentes plates-formes de déploiement, comment identifier et distinguer automatiquement les types de systèmes, en particulier pour différents systèmes d'exploitation et environnements, reste un problème clé. Cet article présentera comment identifier et distinguer automatiquement les types de systèmes de différentes plates-formes de déploiement dans le processus CI / CD en combinaison avec le code PHP.
CI / CD est une pratique de développement qui intègre, teste et déploie automatiquement les changements de code. CI (intégration continue) implique la soumission automatique du code du développeur à une base de code partagée, la construction et les tests; CD (livraison continue) garantit que le code peut être déployé automatiquement dans un environnement de production et que le processus de déploiement est fiable et reproductible.
Dans les processus CI / CD réels, lors du déploiement sur différentes plates-formes, la configuration de l'environnement et l'exécution de code rencontrent souvent des différences dans les types de systèmes (par exemple, Linux, Windows, MacOS). Comment identifier automatiquement ces différences et effectuer des adaptations correspondantes est un aspect important de l'optimisation du système CI / CD.
PHP lui-même fournit des fonctions et des constantes intégrées qui peuvent être utilisées pour détecter le type système de l'environnement actuel. Avec ces outils, nous pouvons facilement obtenir une identification automatique dans le processus CI / CD.
PHP fournit des constantes PHP_OS , qui peuvent obtenir directement le type de système d'exploitation de l'environnement de fonctionnement PHP actuel. Voici un exemple de la façon de l'utiliser:
<?php
// Obtenez des informations sur le système d'exploitation
$os = PHP_OS;
echo "Le système d'exploitation actuel est:".$os;
?>
La valeur renvoyée par la constante PHP_OS variera selon différents systèmes d'exploitation, tels que:
Linux : Système Linux
Winnt : Système Windows
Darwin : Système macOS
Si des informations plus détaillées sont nécessaires, telles que le numéro de version du système d'exploitation, l'architecture, etc., vous pouvez l'obtenir via la fonction php_uname () . Il renvoie plus d'informations sur le système d'exploitation.
<?php
// Obtenez des informations détaillées sur le système d'exploitation
$uname = php_uname();
echo "Détails du système d'exploitation:".$uname;
?>
Cela rendra quelque chose comme celui qui suit:
Linux YourHost 4.15.0-50-Generic # 54-Ubuntu SMP ven 13 juil 17:32:05 UTC 2018 X86_64 (Linux)
Windows NT Win10 10.0 Build 18362 (Windows)
Darwin MacBook-Pro.Local 18.7.0 Darwin Kernel Version 18.7.0 (MacOS)
Une fois les informations du système d'exploitation obtenues, nous pouvons nous adapter dans le processus CI / CD en fonction des différents types de systèmes. Par exemple, si vous êtes déployé sur Linux, nous pouvons installer certaines dépendances et sur Windows, vous devrez peut-être utiliser différents séparateurs de chemin ou commandes.
<?php
$os = PHP_OS;
if (strpos($os, 'WIN') !== false) {
echo "C'est Windows système\n";
// Windows Opérations spécifiques
} elseif (strpos($os, 'Linux') !== false) {
echo "C'est Linux système\n";
// Linux Opérations spécifiques
} elseif (strpos($os, 'Darwin') !== false) {
echo "C'est macOS système\n";
// macOS Opérations spécifiques
} else {
echo "无法识别的操作système\n";
}
?>
Dans le processus CI / CD réel, après avoir automatiquement identifié le type de système, nous pouvons l'utiliser avec des outils de déploiement automatisés (tels que Jenkins, Gitlab CI, GitHub Actions, etc.) pour assurer l'exactitude du processus de déploiement. Par exemple, lorsque le système reconnaît qu'il s'agit d'une plate-forme Windows, le compositeur peut être automatiquement installé et la gestion des dépendances; Sur Linux, APT peut être utilisé pour installer des dépendances.
Supposons que nous utilisons GitLab CI pour le processus CI / CD. Voici un exemple simplifié de la configuration .gitlab-ci.yml où différents scripts de déploiement sont exécutés en fonction du type de système d'exploitation:
stages:
- deploy
deploy:
script:
- |
if [[ "$CI_RUNNER_OS" == "linux" ]]; then
echo "Se déployer à Linux système"
./deploy-linux.sh
elif [[ "$CI_RUNNER_OS" == "windows" ]]; then
echo "Se déployer à Windows système"
./deploy-windows.bat
else
echo "无法识别的操作système"
fi
Dans de nombreux projets PHP, l'URL est un élément de configuration commun. Si le nom de domaine de l'URL doit être ajusté en fonction de différents environnements pendant le processus de déploiement (par exemple, utilisez des noms de domaine locaux dans l'environnement de développement et les noms de domaine formels dans l'environnement de production), vous pouvez utiliser le code suivant pour le gérer:
<?php
// original URL
$url = "http://example.com/api/v1/data";
// Remplacer le nom de domaine comme m66.net
$modified_url = preg_replace('/https?:\/\/[^\/]+/', 'http://m66.net', $url);
echo "Modifié URL Oui:".$modified_url;
?>
Ce code remplace la partie du nom de domaine de l'URL d'origine par m66.net , quel que soit le nom de domaine de l'URL d'origine.
L'identification et la distinction automatique des différents types de systèmes en combinaison avec les processus CI / CD peuvent non seulement rendre le processus de déploiement plus efficace, mais également réduire les erreurs causées par les différences de plate-forme. Grâce à la fonction d'acquisition d'informations système fournie par PHP, nous pouvons effectuer différentes étapes de déploiement sur différents systèmes d'exploitation. Et par remplacement de l'URL, nous pouvons nous assurer que le nom de domaine correct est utilisé dans différents environnements. En utilisant ces approches, nous pouvons augmenter la flexibilité et la fiabilité de nos processus CI / CD, permettant ainsi l'intégration continue et la livraison de plusieurs plateformes.