1
votes

Action GitHub: passer la variable d'environnement à en action à l'aide de PowerShell

J'utilise en essayant de créer un flux de travail qui s'exécutera dans PowerShell. Je suis en train de définir un environnement pour mon nom de branche à utiliser dans une étape d'extraction d'un référentiel différent.

- name: Checkout repo  
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${env:CURRENT_BRANCH}

Dans une étape ultérieure, j'essaye de passer la variable:

run: |
  $branchName = $Env:GITHUB_REF -replace "refs/heads/", ""
  echo "CURRENT_BRANCH=${branchName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append

J'ai essayé différents formats impliquant des accolades, mais je continue à obtenir une sortie de la construction qui montre ce texte exact comme chemin. Je ne sais pas trop comment le faire évaluer.
Lorsque je fais ${{ env:CURRENT_BRANCH }} j'ai reçu l'erreur suivante:

Le workflow n'est pas valide. .github / workflows / publish.yml (Ligne: 54, Col: 14): Symbole inattendu: 'env: CURRENT_BRANCH'. Situé à la position 1 dans l'expression: env: CURRENT_BRANCH


0 commentaires

3 Réponses :


2
votes

Pour faire référence à une variable du contexte donné ( env dans ce cas) dans les actions GitHub flux de travail , nous devons utiliser un point ( . Caractères, mais vous utilisé deux points) ( : ). Pour corriger l'erreur ci-dessus, le flux de travail doit être ajusté:

- name: Checkout repo  
  uses: actions/checkout@v2
- name: Next Step
[...]

De plus, vous n'avez pas à détecter la branche actuelle et à la transmettre à l'action d'extraction. actions/checkout@v2 utilisera la branche actuelle par défaut. Il suffit donc d'avoir:

- name: Checkout repo  
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${{env.CURRENT_BRANCH}}


2 commentaires

Pour votre deuxième point: je vérifie deux dépôts. La première, à partir de laquelle l'action s'exécute, choisira la bonne branche. Cependant, le deuxième référentiel utilise Master . Est-ce ce à quoi vous vous attendez?


Je sais que j'avais essayé ça avant, mais peut-être que j'avais autre chose foiré. Cela a fonctionné cette fois! Les actions sont épuisantes.



0
votes

Une solution que j'ai trouvée ailleurs et je la posterai ici en option, bien que j'aimerais savoir si l'utilisation des variables d'environnement est peut-être dans mon scénario. La solution consiste à utiliser les sorties d'une étape

- name: Output Variables
  id: SetVariables
  run: |
    $branchName = $Env:GITHUB_REF -replace "refs/heads/", ""
    echo "Branch: ${branchName}"
    echo "::set-output name=branch::${branchName}"

- name: Checkout Repo 2
  uses: actions/checkout@v2
  with:
    repository: 'MyOrg/MyRepo'
    ref: ${{ steps.SetVariables.outputs.branch }}


0 commentaires

0
votes

C'est une méthode de travail maintenant, plus d'infos ici :

echo "action_state=yellow" >> $GITHUB_ENV

Celui ci-dessous ne fonctionne plus pour moi. Un peu de recherche a montré que cela était dû à un problème de sécurité .

echo "::set-output name=action_state::yellow"


0 commentaires