[英].env files in Github Actions CI/CD workflows: how to provide these into the workflow
我為 Node 和 PHP 項目的 CI/CD 流程使用 Github Actions 工作流。
在一個工作流中,我將我的存儲庫克隆到 Github Actions runner 虛擬機中。 然后為了在工作流中運行測試,我必須在克隆的存儲庫中有.env
文件。
問題是我的.env
文件不是存儲庫的一部分(這是普遍存在的做法)。
為了解決這個問題,我使用了我認為的解決方法:設置MY_PROJECT_ENV
Github Action sercret 變量,手動將我的.env
文件的內容放在那里,然后使用 Linux console echo "${{ secrets.MY_PROJECT_ENV}}" >.env
在我的工作流程中動態創建.env
文件echo "${{ secrets.MY_PROJECT_ENV}}" >.env
。 這行得通。
但我想知道是否有其他方法可以將.env
文件提供給 Github Actions 工作流程?
如您所知.env
並不意味着推送到遠程存儲庫。
您需要以某種方式將環境變量添加到運行程序的機器上。
在您的情況下,您可以使用.yaml
文件添加環境變量,如下所示
steps:
- name: Hello Program
run: Hello $FIRST_NAME $LAST_NAME!
env:
FIRST_NAME: Akhil
LAST_NAME: Pentamsetti
更多信息請訪問github 官方文檔關於使用環境變量。
我做了以下操作,簡單有效:
.env.example
保存在存儲庫中,並在 CI 作業開始時運行以下命令:# Create the .env file
cp .env.example .env
# Install dependencies so we can run artisan commands
composer install ...
# generate an APP_KEY
php artisan key:generate
另一種方法是將.env.ci
文件提交到存儲庫,其中包含特定於 CI 環境的環境變量,並在運行測試時運行cp.env.ci.env
。 敏感密鑰仍應設置為機密。
從技術上講,您可以在 YAML 文件中的 secrets/env 之間提供所有環境變量,並且沒有 .env 文件,但我喜歡在每次測試運行時設置一個隨機的 APP_KEY,以確保沒有任何依賴於特定 APP_KEY 的東西。
順便說一句,這是環境優先級如何在 phpunit 測試中與 Laravel 一起使用。 這是 laravel 特定的,可能會讓人感到驚訝,因為它並不是 phpunit 在 Laravel 之外單獨工作的方式:
phpunit.xml
中設置的環境變量總是“贏”(這在 Laravel 中是正確的,盡管 phpunit 的文檔說系統環境變量優先於phpunit.xml
文件項).env
文件項資料來源:我創建/運行了 Chipper CI,這是一個用於 Laravel 的 CI 平台。
我知道有 3 種方法可以做到這一點。 一年后,我在另一個問題中回答了我自己的問題。 看那邊。
為了 SO 規則和可查找性,我在這里做了一個總結。
您將.env
文件保存在存儲庫中。 使用dotenv 操作將文件讀入工作流程。
您將文件保留在存儲庫之外。 那么你有兩種獲取.env
變量的方法:
2.1。 正如我在上面的問題中所寫,手動將文件內容復制到 GitHub 操作秘密變量,然后在您的工作流程中從該變量創建.env
文件。
2.2. Use the GitHub Actions API to create/update the secrets : write the NodeJS script on your machine (chances are you anyway use Webpack, Gulp or the like Node thing so you have Node installed).
該腳本應讀取本地.env
文件並將其內容寫入 GH 機密。 當然,您可以使用您在項目中使用的任何語言編寫控制台命令來執行此操作。
就這么簡單:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.