首页 > 解决方案 > 如何防止 GitHub 操作替换某些文件

问题描述

我想做一个简单的 CD/CD 来为我的 Laravel 项目进行自动部署,但结果我的 .env 文件总是被替换。我如何确保它不总是被替换

这是我的动作文件

name: Laravel

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  laravel-tests:

    runs-on: self-hosted

    steps:
    - uses: shivammathur/setup-php@b7d1d9c9a92d8d8463ce36d7f60da34d461724f8
      with:
        php-version: '7.4'
    - uses: actions/checkout@v2
    - name: Copy .env
      run: php -r "file_exists('.env') || copy('.env.example', '.env');"
    - name: Install Dependencies
      run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
    - name: Generate key
      run: php artisan key:generate
    - name: Directory Permissions
      run: chmod -R 777 storage bootstrap/cache
    - name: Create Database
      run: |
        mkdir -p database
        touch database/database.sqlite
    - name: Execute tests (Unit and Feature tests) via PHPUnit
      env:
        DB_CONNECTION: sqlite
        DB_DATABASE: database/database.sqlite
      run: vendor/bin/phpunit

标签: laravelgithubgithub-actions

解决方案


每次您的工作流程运行时,您都会获得一台新机器。因此,没有您在上次运行时创建的文件。因此,如果您需要在运行时创建一些文件,则每次都需要重复此步骤。

在此处查看以了解更好的 github ations 基础知识。

您没有太多选择来共享此文件 accros run,因为在工件中保密是不好的选择。因此,每次需要时,您都需要根据您可能保存在秘密上下文中的秘密重新创建此文件。请检查此链接

- name: Create env file
        run: |
          cat << EOF >> .env
          API_ENDPOINT="https://xxx.execute-api.us-west-2.amazonaws.com"
          API_KEY=${{ secrets.API_KEY }}
          EOF

推荐阅读