J'ai présenté lors du Drupalcamp de Rennes en mars 2024 mon nouveau sideproject : un ensemble de jobs factorisés pour gitlab ci.
La problématique était la suivante :
- je déploie pas mal de sites, sur des infrastructures différentes, tout est automatisé via la Gitlab CI. Quand j'attaque un nouveau projet, je me contente de copier le fichier .gitlab-ci.yml, qui définit toute la procédure, depuis mon projet le plus récent vers ce nouveau projet. Je dois ensuite penser à modifier certaines variables, certains comportements afin que cela marche sur ce nouveau projet, c'est long, et il est facile de faire une erreur.
- Si je fais des évolutions dans mes jobs, le portage sur les anciens projets est complexe.
- Je me retrouve entre mes différents projets avec aucune cohérence, au niveau du noms des stages, des jobs lancés, des fonctionnalités...
J'ai décidé de prendre ce problème à la base et j'ai commencé à poser les besoins que j'avais :
- Une liste de jobs factorisés, dans laquelle je viens piocher en fonction des besoins du projet. Tous ces jobs étant sur un même dépôt. La réutilisation étant géré via des includes. La généralisation des jobs est faite via les variables Gitlab, par exemple le user ssh est une variable $SSH_USER.
- Ces variables doivent pouvoir être différentes entre les différents environnements (dans mon cas : prod et preprod).
- Les règles de déploiements sont fixes, un tag de la forme x.y.z lancera un déploiement en prod, un commit / merge sur une branche preprod lancera lui un déploiement en preprod.
- Je dois assurer la compatibilité ascendante, ainsi une nouvelle fonctionnalité développée ne doit pas casser les déploiements existants.
- Tout doit être documenté, que ça soit pour mon moi du futur ou pour les curieux afin qu'ils s'en servent comme inspiration.
Voici ce à quoi je suis arrivé :
Un dépôt gitlab qui contient des jobs, factorisés :
Pour la documentation, j'ai utilisé l'outil opensource de meta : Docusaurus. Qui génère un mini site statique à partir de fichiers markdown, qui sont directement dans le dépôt :
Cette documentation est hébergée via Gitlab pages avec un nom de domaine personnalisé : https://gitlab-ci-templates.kgaut.net/
Comment ça marche ?
Tous mes jobs sont dans le dossier « templates » du dépôt : https://gitlab.com/kgaut/gitlab-ci-templates/-/tree/main/templates?ref_type=heads
Chaque type de job est dans un fichier spécifique afin de pouvoir, à la carte, utiliser que ce dont on a besoin suivant notre projet :
Voici par exemple le contenu du job de déploiement :
variables:
DRUPAL_SITE_PATH : 'web/sites/default'
MIGRATION_SCRIPT_PATH : 'scripts'
MIGRATION_SCRIPT_PREDEPLOY_PATH : "$MIGRATION_SCRIPT_PATH/pre-deploy"
MIGRATION_SCRIPT_POSTDEPLOY_PATH : "$MIGRATION_SCRIPT_PATH/post-deploy"
.deploy:
stage: deploy
extends:
.ssh
script:
- wget -O drupal-deploy.sh "https://gitlab.com/kgaut/gitlab-ci-templates/-/raw/$CI_TEMPLATE_VERSION/scripts/drupal-deploy.sh"
- $SSH_CHAIN 'bash -s' < ./drupal-deploy.sh $PROJECT_ROOT $DRUPAL_SITE_PATH $DRUSH_BIN $CI_ENVIRONMENT_NAME $CI_COMMIT_SHORT_SHA $CI_COMMIT_TAG $DRUSH_ALIAS
prod:deploy:
extends:
- .prod
- .deploy
preprod:deploy:
extends:
- .preprod
- .deploy
Chaque job défini des variables par défaut qui peuvent être surchargées par projet. Toutes les variables sont référencées ici : https://gitlab-ci-templates.kgaut.net/docs/bases/variables
Mise en application
Je commence petit à petit à basculer tous mes sites sur ces templates, voici par exemple le .gitlab-ci.yml de mon site, sur lequel vous êtes actuellement :
variables:
CI_TEMPLATE_VERSION: &CI_TEMPLATE_VERSION 0.4.0 # Le tag de mon projet de déploiement
PATH_TO_THEME: "./web/themes/custom/kgaut_2024"
ASSETS_IMAGE: "registry.gitlab.com/kgaut/docker-node-images:19"
ASSETS_ARTEFACTS: "./web/themes/custom/kgaut_2024/css"
SENTRY_PROJECT : 'kgautnet'
SENTRY_ORG : 'kgautnet'
DB_PATH: 'db'
DIFFS_PATH: 'files/diffs'
ENV_PREPROD_DISABLED: 1
QA_DOCKER_IMAGE: wodby/drupal-php:8.2-dev
PHPCS_DOCKER_IMAGE: $QA_DOCKER_IMAGE
PHPSTAN_DOCKER_IMAGE: $QA_DOCKER_IMAGE
include: # Ici c'est l'inclusion de l'ensemble des jobs utilisés pour le déploiement du site
- project: kgaut/gitlab-ci-templates
ref: *CI_TEMPLATE_VERSION
file:
- '/templates/generic/stages-variables-extends.yml'
- '/templates/drupal/backup.yml'
- '/templates/drupal/diff-config.yml'
- '/templates/generic/diff-repository.yml'
- '/templates/generic/assets.yml'
- '/templates/drupal/deploy.yml'
- '/templates/generic/sentry.yml'
- '/templates/drupal/post-deploy-clear-cache.yml'
- '/templates/generic/scheduled-clean-dump.yml'
- '/templates/drupal/scheduled-backup.yml'
- '/templates/generic/deploy-tracking.yml'
- '/templates/qa/phpstan.yml'
- '/templates/qa/phpcs.yml'
Certaines variables sont définies directement dans ce fichier, et d'autres, pour des raisons de sécurités sont directement définies sur Gitlab :
Les variables sur Gitlab permettent aussi de définir les variables qui sont différentes par environnement (host SSH, User SSH par exemple) dans le cas courant je n'ai qu'un seul environnement : la production.
Et voici le déploiement en lui même :
Via la variable CI_TEMPLATE_VERSION je fais référence à un tag de mes templates de déploiement, ainsi, même si je fais des évolutions, les templates sont bloqués et je ne risque pas de casser des déploiements qui fonctionnent. Une montée de version est évidement possible, mais sera faite en pleine conscience. Les différents tags sont visibles ici : https://gitlab.com/kgaut/gitlab-ci-templates/-/tags
La branche principale est main, elle peut contenir des modifications en test, un tag ne sera créé que lorsque tout est considéré comme stable.
J'ai profité du troisième jour du drupalcamp afin d'ajouter un peu de QA, avec pour l'instant uniquement des jobs phpstan et phpcs. Ces jobs crééent des artefacts qui sont récupéré par gitlab. Dans les merge request, cela permet de voir les différents problèmes de qualité de code.
En conclusion
Le but de ce dépôt n'est pas forcément d'être utilisé tel quel par d'autres personnes, le processus de déploiement n'est pas forcément compatible avec le votre ou celui de votre agence. Néanmoins, je pense qu'il y a des idées à piquer, ne serai-ce que dans le concept global ou dans des jobs en particulier.
Lors de la conférence de présentation, on m'a posé la question de l'avenir de ce projet. Je continue à le mettre en place sur mes projets, et à ajouter des fonctionnalités au fur et à mesure, je ne compte donc pas l'abandonner comme cela.
Je suis preneur de tout retour, idée, question !
Retrouvez :
- Le dépôt : https://gitlab.com/kgaut/gitlab-ci-templates
- La documentation : https://gitlab-ci-templates.kgaut.net/
- Les slides de ma présentation : https://docs.google.com/presentation/d/1i0FZDAzQDJAidGSiyxdFbDD7oeaVh7QKCknqgBJk5nU/
- Un projet de test qui utilise la pipeline : https://gitlab.com/kgaut/drupal.kgaut.xyz
Contenus en rapport
Les diapositives de la présentation : https://docs.google.com/presentation/d/1i0FZDAzQDJAidGSiyxdFbDD7oeaVh7Q…
Dépôt test / démo CI : https://gitlab.com/kgaut/drupal.kgaut.xyz
Commentaires
Как быстро получить права, удостоверения на охранные услуги, спецтехнику и другие документы
Получение различных права — важный шаг для тех, кто хочет легально работать в сферах охраны, управления спецтехникой и других направлениях. Чтобы оформить нужные сертификаты быстро и без лишних проблем, нужно следовать нескольким простым рекомендациям.
Выбор авторизованной организации
Ищите лицензированные учебные заведения или центры, которые предоставляют интенсивные курсы по интересующей вас специальности. Это сокращает время подготовки и повышает шансы успешно сдать экзамен.
Особенности получения лицензии на охрану
- Пройдите медицинское обследование, необходимое для допуска к занятиям.
- Обучение обычно включает теорию (законодательство, права и обязанности) и практические навыки (самооборона, работа с техникой охраны).
- По окончании курсов сдается экзамен для получения удостоверения.
Получение прав на корки на машину спецназначения
- Выбирайте специализированные курсы по конкретному виду техники — экскаваторы, погрузчики, автокраны и т.п.
- Программа обучения включает теорию безопасности и практическое управление техникой.
- После обучения нужно сдать экзамен в Гостехнадзоре или соответствующем органе для выдачи сертификата права на автопогрузчик купить
Оформление других лицензий
Для различных специальностей (электромонтаж, сварочные работы, высотные работы и др.) тоже нужны специализированные курсы и сертификация. Важно выбирать центры с официальной аккредитацией и подходящей лицензией для выдачи подтверждающих документов.
Полезные советы для быстрой и успешной подготовки
- Своевременно собирайте все необходимые документы (паспорт, медсправки, фото).
- Пользуйтесь официальными учебниками и методическими материалами.
- Не откладывайте обучение на последний момент, выбирайте интенсивные курсы.
- Заранее узнайте правила сдачи экзаменов, чтобы избежать стресса.
Быстро получить права на охрану, спецтехнику и другие направления реально при грамотно организованной подготовке, правильном выборе курсов и соблюдении всех требований законодательства. Будьте внимательны и не пренебрегайте подготовкой для уверенного прохождения аттестаций!
Как быстро получить права на водительское удостоверение
Получение водительских прав на автомобили — важный шаг для тех, кто хочет начать независимо водить. В этой статье рассмотрим, как максимально оперативно оформить водительские документы.
1. Выбор учебного центра
Для ускоренного получения удостоверения лучше всего выбирать аккредитованные автошколы, которые предлагают быстрые тренинги обучения.
2. Прохождение подготовки
- Выбирайте курс с минимальным сроком — обычно от 1 до 2 месяцев.
- Проходите теорию и тренировки в удобном для себя графике.
- Можно дополнительно заниматься по учебным материалам для закрепления знаний.
3. Медицинская заключение
Для прохождения экзаменов обязательно необходима медицинское подтверждение. Получите её в ближайшей поликлинике или у специалистов.
4. Сдача экзаменов
- Теоретический экзамен можно подготовить через онлайн-тестирование и практические занятия.
- Практический экзамен с инструктором проводится в ГИБДД или МФЦ.
- При хорошей подготовке и правильной организации можно купить права за один визит.
5. Оформление прав
После успешного прохождения экзаменов документы выдаются в течение нескольких дней.
Советы для ускорения процесса
- Записывайтесь в автошколу заранее, чтобы не ждать набор группы.
- Используйте современные онлайн-платформы для теории.
- Занимайтесь вождением с инструктором постоянно.
- Подготовьте все документы заранее для быстрого оформления.
Получить права на управление автомобилем быстро — вполне реально при четком планировании, правильном выборе автошколы и серьезном подходе к обучению.
What Are Cheats for Games and How They Work within the Counter-Strike: Global Offensive (CSGO) Skin Gambling Sector
Cheats in gaming are unauthorized tools created to alter game mechanics, giving players an unjust benefit. In the context of Counter-Strike: Global Offensive (CSGO), cheats typically involve features like aimbots, wallhacks, or recoil control, which improve player performance beyond normal human ability.
Within the CSGO virtual item wagering sector, cheats play a particularly significant role. This market revolves around betting using in-game skins—visual customization items that have real-world value. Cheats can influence the outcome of matches or gambling games by providing unfair insight into results or by automating betting processes.
Cheating software works via injecting code into the game client or external applications, intercepting game data, and tampering with it to display information concealed within standard gameplay. For skin gambling, this could mean bots placing calculated wagers based on in-game events or manipulating game outcomes to ensure wins illegally
Despite efforts by game developers and http://cntuvek.ru/forum/user/30889/ gambling platforms to prevent and restrict cheats, the market remains vulnerable due to the clandestine operation of cheat distribution and usage. This creates significant challenges regarding fairness, player trust, and legal implications within the combined space of CSGO gameplay and skin gambling.
In summary, cheats in games like CS:GO are unfair methods that manipulate game functions. When these cheats intersect with the skin gambling sector, they enable dishonest practices, undermining the integrity of both gaming and betting environments.
Key synonyms used in this article:
- Cheats: illegal software
- Games: video games
- Skin gambling: virtual item wagering
- Affect: influence
- Operate: operate by
- Market: realm
Как получить права на специальную технику
Получение прав на эксплуатацию специальной техникой — важный шаг для тех, кто планирует работать с специализированными машинами. В данной статье рассмотрим основные этапы и требования.
1. Требования к кандидатам
Для получения удостоверения необходимо соответствовать следующим условиям:
- Достигнуть возраста от 18 полных лет.
- Иметь медицинское заключение о здоровье для управления спецтехникой.
- Пройти курсы в сертифицированной школе.
2. Выбор учебного центра
Лучше всего обращаться в авторизованные учреждения, которые предлагают обучающие программы по вождению спецтехники. Там обучают теоретическим знаниям и практическим навыкам.
3. Обучение и сдача экзаменов
Обучение включает в себя:
- Изучение правил эксплуатации техники купить права на электропогрузчик
- Практические занятия на учебных площадках.
- Сдачу теоретического экзамена.
- Сдачу практического экзамена.
4. Получение удостоверения
После успешной сдачи экзаменов выдается удостоверение оператора, позволяющее легально эксплуатировать спецтехникой.
Заключение
Получить права на спецтехнику — это комплексный процесс, который требует серьёзного отношения к обучению и прохождению всех этапов проверки. Правильный выбор учебного центра и качественная подготовка обеспечат вам профессиональные навыки и легальный статус оператора.
Если вам нужна помощь по получению прав на спецтехнику, обратитесь к экспертам в соответствующей сфере.
Ajouter un commentaire