Cette série d'articles est indexée sur NgateSystems.com. Vous y trouverez également une fonction de recherche par mot-clé très utile.
Dernière révision : 24 novembre
La publication 4.2 a lancé le concept de pré-rendu d'une page Web. L'idée était que si une page ne change jamais (ou, du moins, ne change pas trop souvent), alors elle pourrait aussi bien être transformée en HTML lors de la "construction" du projet.
C'est bien mais, si les données sous-jacentes changent trop souvent, exécuter des builds pour mettre à jour les pages pré-rendues manuellement deviendra ennuyeux. L'automatisation est sûrement la réponse.
Vous pouvez résoudre ce problème de plusieurs manières, mais je vous recommande d'utiliser un script pour exécuter la séquence de construction/déploiement, puis de demander au planificateur Windows de l'exécuter automatiquement
Voici un script PS1 que vous pourriez utiliser :
$projectId = [myProjectId] $projectPath = [myProjectPath] # Define log file path $logPath = "$projectPath\log.txt" # Overwrite the log file with a timestamp at the beginning $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" "Log started at $timestamp" | Out-File -FilePath $logPath -Force # Set the project ID gcloud config set project $projectId # Redirect output to log file try { cd $projectPath 2>&1 | Out-File -FilePath $logPath -Append npm run build | Out-File -FilePath $logPath -Append # Fetch all versions ordered by creation date, excluding the latest 10 $oldVersions = gcloud app versions list ` --sort-by="~version.createTime" ` --format="value(version.id)" | Select-Object -Skip 10 # Delete the old versions if there are any if ($oldVersions.Count -gt 0) { "Deleting old versions..."| Out-File -FilePath $logPath -Force $oldVersions | ForEach-Object { gcloud app versions delete $_ --quiet 2>&1 | Out-File -FilePath $logPath -Append } } else { "No old versions to delete. The limit of $MaxVersions is not exceeded." | Out-File -FilePath $logPath -Force } gcloud app deploy build/app.yaml --quiet 2>&1 | Out-File -FilePath $logPath -Append } catch { "An error occurred: $_" | Out-File -FilePath $logPath -Append }
Dans ce script, [myProjectId} est votre identifiant de projet Google - par exemple "svelte-dev-80286"
et [myProjectPath] est le chemin d'accès complet de votre projet VSCode - par exemple "C:UsersmjoycDesktopGitProjectssvelte-dev". Le fichier log.txt de sortie se retrouve à la racine de votre dossier de projet VSCode
Le script semble plus compliqué que prévu. Voici les raisons de cela :
Étant donné que vous avez l'intention de planifier le script automatiquement, vous devez conserver un fichier journal pour vous indiquer ce qui ne va pas en cas d'erreur. Cela ajoute à lui seul un « fouillis » inévitable. Mais il y a aussi une étrange section « suppression de version ». Vous en avez besoin car, chaque fois que vous exécutez un « build », Google créera une nouvelle version dans le stockage cloud. Il existe un nombre maximum par défaut de versions que vous pouvez créer. J'ai ajouté cette section lorsque mon système a commis une erreur lorsque le nombre de versions atteignait 200.
Dans le script ci-dessus, je limite le nombre de versions maintenues à seulement 10 (je paie l'hébergement de mon application maintenant !).
Le moyen le plus direct de tester le fichier de script dans une session de terminal VSCode est de sélectionner son contenu, de le coller dans la session et d'appuyer sur Entrée. Mais à des fins de production, vous avez besoin d'une certaine automatisation.
Voici une procédure pour enregistrer une tâche du planificateur Windows pour exécuter le script de build.
J'utilise une tâche du planificateur Windows créée à l'aide de la procédure ci-dessus pour exécuter une version nocturne pour la page de recherche par mot-clé pré-rendue "ngatesystems.com". Bien que les nouveaux articles ne soient désormais ajoutés que rarement, je continue de modifier régulièrement les pages existantes. L'exécution nocturne signifie que la page de recherche n'a jamais plus d'un jour de retard sur les données en direct.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!