Github 준비
1.웨어하우스 설정에서 웹후크 추가
개인 창고를 예로 들어보세요:
1.웨어하우스를 생성한 후 설정을 클릭하세요.
웹훅 액세스 경로 설정:
내 프로젝트를 예로 들면 프레임워크는 tp6을 사용합니다. public/ 아래에 basic.php라는 파일을 만듭니다. 이 파일은 코드가 서버에 푸시될 때 GitHub가 액세스하고 실행할 수 있는 파일입니다.
이 파일은 링크가 트리거되면 파일의 명령이 자동으로 실행되어 자동 git pull을 구현하는 데 사용됩니다.
2. 링크가 유효한지, 파일에 접근했는지 테스트
위 그림과 같이 녹색 ✅이 나타나면 링크에 접근했다는 뜻이고, 빨간색 ⚠️ 표시가 나타나면 메시지가 나타나면 해당 파일에 액세스하지 않았음을 의미합니다. 링크에 문제가 있는지, 코드에 문제가 있는지 확인할 때 사용합니다.
-
[x] Github이 완성되었습니다.
PHP 코드 배포
1. 후크 파일 추가 및 쉘 명령 실행
일부는 아래와 같습니다
内联代码片
.
<?php //git webhook 自动部署脚本 $requestBody = file_get_contents("php://input"); //接收数据 if (empty($requestBody)) { //判断数据是不是空 die('send fail'); } $content = json_decode($requestBody, true); //数据转换 //若是主分支且提交数大于0 if ($content['ref']=='refs/heads/main') { //或将命令加入 shell里,看个人需求 git reset --hard origin/master && git clean -f $res = shell_exec('cd /www/wwwroot/xxxx/ && echo `sudo git pull` >> b.log');//PHP函数执行git命令 $res_log = '-------------------------'.PHP_EOL; $res_log .= ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push'.$res; file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//将每次拉取信息追加写入到日志里 } ?>
로그인 후 복사
-
[x] 이제 명령의 PHP 셸 부분이 완료되었으며 다양한 프로젝트 요구에 따라 디버깅할 수 있습니다.
일반적인 오류 처리
1. .php.ini 파일에서는 셸이 비활성화되지 않습니다. 이 오류는 비교적 일반적이며 디버깅 중에 쉽게 찾을 수 있으므로 자세히 설명하지 않겠습니다.
방법: php.ini에서 shell_exec를 삭제하고 서비스를 다시 시작하세요.
2..git 권한 문제, .git/ 디렉터리의 파일 권한 그룹을 www
로 변경하세요. 일반적으로 권한 오류가 발생하면 해당 파일 디렉터리가 권한 그룹인지 먼저 확인하는 것이 좋습니다. 그렇지 않은 경우 다음 명령을 사용하여 파일 권한 그룹을 수정할 수 있습니다
//以www用户组为例 chown -R www:www file/
로그인 후 복사3. 권한 그룹 문제
이전 프로세스에 문제가 없고 코드에 문제가 없다고 판단되면 단계별로 문제를 해결하세요. 여전히 자동으로 풀링되지 않습니다. 위의 셸을 수동으로 실행하면 코드가 성공적으로 풀려날 수 있습니다. 로그 기록을 켜십시오. 로그 기록의 내용이 비어 있으면 이전 버전을 새 버전으로 교체해 보십시오. 4. 호스트 키 확인에 실패했습니다.^M 치명적: 원격 담당자에서 읽을 수 없습니다. ...
www 권한 그룹에서 github에 연결하기 위한 공개키가 생성되지 않았기 때문입니다
여기 작성자는 다른 해결 방법이 있으면 이 방법을 사용합니다. , 비공개 메시지나 댓글 영역 메시지를 보내 주시기 바랍니다.
vim /etc/sudoers를 열고 비밀번호 없이 sudo 권한을 실행하려면 루트 아래에 www 줄을 추가하세요.
5 이제 웹후크가 작동하고 파일을 수정하여 제출하고 로그를 쿼리할 수 있습니다.
로컬 환경 centos + php7.3 + nginx