GitLab DevOps: PHP Lint
GitLab’s ability to extend other functions, even functions in other projects 을 활용하여 이것을 두 부분으로 나눴습니다. 내 실제 작업 시나리오는 GitLab을 사용하므로 GitLab CI를 사용합니다. 여기에서 공유하기 위해 my personal GitHub에 넣었습니다. 직관적이지 않은 조합이라는 것을 알고 있습니다.
일반 CI/CD 기능
테스트하려면 먼저 PHP 8.0을 실행할 수 있는 일반 Oracle Linux 8 이미지와 Drupal 사이트용 작성기가 필요합니다.
## Build an Oracle Linux 8 container, used by other tests below ##
.ol8_lamp_build:
stage: test
image: oraclelinux:8
before_script:
- dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
- dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
- dnf -y module enable php:remi-8.0
- dnf install -y php php-gd php-pdo zip unzip git php-curl php-mbstring php-zip php-json php-xml php-simplexml php-mysqlnd php-pecl-apcu wget curl
- php -v
- php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
- php composer-setup.php
- php -r "unlink('composer-setup.php');"
파트 1은 몇 가지 일반 CI 작업 템플릿을 포함하는 프로젝트입니다. tests.yml 파일에 있는 그 중 하나는 PHP Lint 테스트입니다. 특정 폴더에 있는 모든 php 파일을 테스트하고 싶다고 말하는 것은 생각만큼 쉽지 않습니다. 재귀적으로 적용하기 위한 플래그가 없으므로 루프가 필요합니다.
### PHP lint test ###
.php_lint:
stage: test
extends: .ol8_lamp_build
variables:
DIRECTORIES: "./"
EXTENSIONS: "php"
script:
## Recursively checks for files of specified extensions in specified directories and completes php lint on them
- cwd="$(pwd)"
- |
for DIRECTORY in $DIRECTORIES
do
cd $DIRECTORY
for EXT in $EXTENSIONS
do
files="$(find -name *.${EXT} -type f)"
for file in ${files}
do php -l ${file};
done;
done;
cd $cwd;
done;
여기에는 테스트를 시작할 디렉터리와 테스트할 확장에 대한 변수가 있습니다. 확장 변수는 기본적으로 php 파일로만 지정되지만 다른 확장을 포함하도록 재정의할 수 있습니다. 이는 다른 확장이 .module 및 .theme와 같은 php 코드에 사용되는 Drupal에서 유용합니다.
프로젝트의 CI 파일
두 번째 부분은 이러한 일반 템플릿을 참조하는 특정 프로젝트입니다. 실제 상황에서 이것이 다른 GitLab 프로젝트에 있을 것이라는 가정하에 전체 프로젝트 참조를 사용하면 프로젝트의 .gitlab-ci.yml 파일에서 다음과 같이 보입니다.
# Includes general CI jobs to extend from
include:
- project: '[path to the GitLab project with CI]'
ref: main
file: test.yml
## Stages ##
stages:
- test
## Test Jobs ##
### Tests for PHP errors in custom code ###
php:
extends: .php_lint
variables:
DIRECTORIES: ./web/themes/custom ./web/modules/custom
EXTENSIONS: php module theme inc
이 예제는 Drupal 8+ 사용자 정의 테마 및 사용자 정의 모듈 디렉토리에 있는 모든 .php, .module, .theme 및 .inc 파일에 대해 PHP 구문 테스트를 실행합니다.
Reference
이 문제에 관하여(GitLab DevOps: PHP Lint), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ryanlrobinson/gitlab-devops-php-lint-2emn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)