我的目的很簡單,在請求請求時使用 Github 操作運行 cypress e2e 測驗。我使用cypress-firebase進行測驗,我所有的測驗都應該使用Firebase Emulator運行。而且我還使用了cypress-io/github-action進行 CI。
我的問題是,在使用 cypress-io/github-action 時,我需要為我的 react 應用程式傳遞一些環境變數才能與 Firebase 模擬器一起使用,并且整個應用程式無法識別所有環境變數。請參閱我的作業流程檔案以了解。
這是我的 Github 操作作業流檔案的相關部分:
- name: Cypress run
uses: cypress-io/github-action@v2
with:
browser: chrome
headless: true
record: true
start: yarn run ci:start:emulator
wait-on: "http://localhost:3000"
wait-on-timeout: 300 # wait for 5 minutes
env:
# Add debugger
# https://github.com/cypress-io/github-action#debugging
DEBUG: "@cypress/github-action"
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: ${{ secrets.REACT_APP_PROJECT_ID }}
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CI_CLOUD_FUNCTIONS_CONFIG }}
# Branch settings
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF: ${{ github.ref }}
# pass the Cypress Dashboard variables
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
# UID of user to login during test
CYPRESS_BASE_URL: http://localhost:3000
CYPRESS_TEST_UID: ${{ secrets.CYPRESS_TEST_UID }}
# Service Account (used for creating custom auth tokens)
SERVICE_ACCOUNT: ${{ secrets.CYPRESS_SERVICE_ACCOUNT }}
# Environment variables
REACT_APP_ANY_KEY: ${{ secrets.REACT_APP_ANY_KEY }}
這是我ci:start:emulator在package.json檔案中的命令:
"ci:start:emulator": "firebase emulators:exec 'yarn start'"
問題是yarn start命令無法識別我上面的REACT_APP_ANY_KEY環境變數。似乎cypress-io/github-action沒有將它們傳遞給我的yarn start命令。
我嘗試的是將上面的命令更改為
"ci:start:emulator": "cross-env REACT_APP_ANY_KEY=<SOME_HARD_CODE_VALUE> firebase emulators:exec 'yarn start'"
它完美地作業!但是當然,我們不想像這樣通過這個命令傳遞大量的環境變數。
任何幫助將不勝感激!
uj5u.com熱心網友回復:
根據docs You can define environment variables for a step, job, or entire workflow,所以在這里你只為這一步Cypress run而不是為整個作業定義了那些 env 變數,要解決這個問題,你應該使用this定義 env 變數,一個例子:
jobs:
job1:
env:
# Add debugger
# https://github.com/cypress-io/github-action#debugging
DEBUG: "@cypress/github-action"
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: ${{ secrets.REACT_APP_PROJECT_ID }}
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CI_CLOUD_FUNCTIONS_CONFIG }}
# Branch settings
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF: ${{ github.ref }}
# pass the Cypress Dashboard variables
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }}
# UID of user to login during test
CYPRESS_BASE_URL: http://localhost:3000
CYPRESS_TEST_UID: ${{ secrets.CYPRESS_TEST_UID }}
# Service Account (used for creating custom auth tokens)
SERVICE_ACCOUNT: ${{ secrets.CYPRESS_SERVICE_ACCOUNT }}
# Environment variables
REACT_APP_ANY_KEY: ${{ secrets.REACT_APP_ANY_KEY }}
env 變數應該可以在這個Job步驟中訪問,如果你想設定全域環境變數,你應該在作業之前定義它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329012.html
標籤:火力基地 柏 github-actions 火力基地工具
