این روزها برنامه نویسان برای توسعه پروژه های خود از یه سری کتابخانه های از پیش آماده که خود نیز برنامه ای جداگانه و روی سکوهای گیت نگهداری می شوند، استفاده می کنند و در روند بیلد پروژه، این دست کتابخانه ها توسط برنامه های مدیریت وابستگی ها به پروژه اضافه و برنامه را کامل می کنند.

php-composer

برنامه های مدیریت وابستگی ها در زبان های برنامه نویسی مختلف متفاوت و مختص همان زبان برنامه نویسی می باشد. برای مثال در زبان php این برنامه نامش composer و در زبان پایتون، pip و در زبان nodejs، npn یا yarn هستند.

برنامه نویسان، آدرس های کتابخانه ها مورد نیاز در برنامه خود را چه به صورت آدرس git و یا چه به صورت مسیر فایل مشخص در کنار پروژه، در فایلی مخصوص به آن برنامه مدیریت وابستگی ها به صورت یک تنظیم قرار می دهند، تا برنامه شان قابلیت انتقال به هاست های مختلف را داشته باشد.

حال برخی از این کتابخانه ها که روی git می باشند، به صورت یک repository خصوصی ایجاد و توسعه داده می شوند. برای استفاده این دست کتابخانه ها که دسترسی به آن ها برای همه باز نمی باشد کمی کار را مشکل می کند. حال با شیوه ای خاص لازم است تا مکانیزم مدیریت این دست کتابخانه ها را مدیریت نمود تا برنامه همچنان بتواند روند بیلد خود را کامل نماید.

مراحل اجرا

برای ایجاد دسترسی به آن repository خصوصی در gitlab لازم است تا مراحل زیر طی شوند

تولید token

در گام اول لازم است تا برای ریپوی مورد نظر یک token با دسترسی خواند ایجاد شود. نحوه ایجاد توکن برای پروژه به ترتیب زیر می باشد:

  • به مسیر زیر رفته:
  • Project → Settings → Repository → Deploy Tokens
  • Name: composer
  • Scopes: read_repository
  • از این اطلاعات یادداشت برداری کنید

فایل composer.json

در فایل composer.json آدرس ها کتابخانه های خصوصی به صورت نمونه ارائه شده است:

"repositories": [
    {
        "type": "vcs",
        "url": "https://code.project.com/group-a/project1.git"
    },
    {
        "type": "vcs",
        "url": "https://code.project.com/group-b/project2.git"
    }
]

تنظیم فایل .gitlab-ci.yml

پیش فرض این است که اطلاعات مرحله قبلی به صورت متغییر در gitlab ذخیره شده، پس فایل .gitlab-ci.yml می تواند به صورت زیر باشد:

stages:
  - build

build_app:
    stage: build
    image: composer:2
    variables:
        COMPOSER_ALLOW_SUPERUSER: "1"
    before_script:
        - composer config --global gitlab-token.code.project.com "$GITLAB_TOKEN_PASS"
    script:
        - composer install --no-interaction --prefer-dist --no-dev

پیکربندی فایل Dockerfile

در گام بع دی به پیکربندی فایل Dockerfile می رسیم

FROM composer:2 AS builder
ARG GITLAB_TOKEN_PASS
RUN composer config --global gitlab-token.code.project.com ${GITLAB_TOKEN_PASS}

COPY composer.json composer.lock ./
RUN composer install --no-interaction --prefer-dist --no-dev

خب در این روند، با پیکربندی ای که شده، composer در فایل composer.json تمامی کتابخانه های خصوصی را به وصسله token آن گیت دریافت و در پروزه قرار می دهد.

منابع:

- Personal access tokens - Authentication for privately hosted packages and repositories

برچسب ها: tips programming devops php composer