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
3 Réponses :
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}}
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.
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 }}
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"