簡體   English   中英

gitlab CI/CD 部署 laravel 項目

[英]gitlab CI/CD deploy laravel project

我想通過 ci/cd gitlab 部署我的 laravel 項目,我在部署我的項目時遇到問題。 我正在嘗試通過 gitlab CI 將我的 Laravel 項目部署到 cpanel。 我在這個項目中使用了部署程序包,但是當我將提交推送到 gitlab 並且管道失敗時。

當我將提交推送到 gitlab 並在我的管道錯誤圖像中出現此錯誤時出現此錯誤

這是我的 deploy.php 代碼

<?php
declare(strict_types=1);
return [
    'default' => 'basic',
    'strategies' => [
    ],
    'hooks' => [
        'start' => [
        ],
        'build' => [
        ],
        'ready' => [
            'artisan:storage:link',
            'artisan:view:clear',
            'artisan:config:cache',
            'artisan:migrate',
            'artisan:horizon:terminate',
        ],
        'done' => [
            'fpm:reload',
        ],
        'success' => [
        ],
        'fail' => [
        ],
        'rollback' => [
            'fpm:reload',
        ],
    ],
    'options' => [
        'application' => env('APP_NAME', 'Laravel'),
        'repository' => 'git@gitlab.com/mygroup/project.git',
        'php_fpm_service' => 'php7.4-fpm',
    ],

    'hosts' => [
        'mywebsite.com' => [
            'deploy_path' => '/home/sfd/public_html/nas',
            'user' => 'deployer',
        ],
    ],

    'localhost' => [

    ],


    'include' => [

    ],

    'custom_deployer_file' => false,

];

這是我的 gitlab-ci.yml 代碼

image: edbizarro/gitlab-ci-pipeline-php:7.4

stages:
  - preparation
  - building
  - deploy


composer:
  stage: preparation
  script:
    - php -v
    - composer install --prefer-dist --no-ansi --no-interaction --no-progress --no-scripts --no-suggest
    - cp .env.example .env
    - php artisan key:generate
  artifacts:
    paths:
      - vendor/
      - .env
    expire_in: 1 days
    when: always
  cache:
    paths:
      - vendor/

yarn:
  stage: preparation
  script:
    - yarn --version
    - yarn install --pure-lockfile
  artifacts:
    paths:
      - node_modules/
    expire_in: 1 days
    when: always



.build-production-assets:
  stage: building
  dependencies:
    - composer
    - yarn
  script:
    - cp .env.example .env
    - echo "PUSHER_APP_ID=$PUSHER_LIVE_APP_ID" >> .env
    - echo "PUSHER_APP_KEY=$PUSHER_LIVE_APP_KEY" >> .env
    - echo "PUSHER_APP_SECRET=$PUSHER_LIVE_APP_SECRET" >> .env
    - yarn --version
    - yarn run production --progress false
  artifacts:
    paths:
      - public/css/
      - public/js/
      - public/fonts/
      - public/mix-manifest.json
    expire_in: 1 days
    when: always
  only:
    - dev

.init_ssh_live: &init_ssh_live |
  mkdir -p ~/.ssh
  echo -e "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
  chmod 600 ~/.ssh/id_rsa
  [[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config



deploy:
  stage: deploy
  script:
    - *init_ssh_live
    - php artisan deploy my-website.com -s upload
  environment:
    name: live
    url: https://my-website.com
  only:
    - dev

作為本期的注釋

您收到的錯誤是因為 Deployer 無法通過 SSH 連接到您的服務器。

你得到命令“ rm -f /PATH/.dep/deploy.lock ”失敗。 因為這是部署過程中在主機上執行的第一個命令。

因此,請仔細檢查“將 SSH 密鑰與 GitLab CI/CD 一起使用”文檔,看看是否缺少以下步驟:

  • 受密碼保護的私鑰(需要 ssh-agent)
  • 缺少ssh-keyscan以確保驗證遠程主機

在切換回您自己的項目之前,先嘗試讓這個示例項目工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM