1
votes

Comment mettre à jour le PATH dans un fichier de flux de travail d'action Github pour un dernier exécuteur hébergé Windows

J'essaie actuellement d'ajouter le flux de travail des actions GitHub à un dépôt ...

Pour faire un développement C ++ / CMake / swig / python (c'est-à-dire un développement de bibliothèque python natif), je dois télécharger et installer swigwin et le mettre à disposition dans le PATH ...

Malheureusement, il semble que la commande $env:Path... ne soit pas prise en compte lors des prochaines étapes suivantes

Exemple

> Set up job
> Run actions/checkout@v23s
> Check cmake
v Install swig
...
SWIG Version 4.0.1
...
v Check swig
 swig -version
  shell: C:\Program Files\PowerShell\6\pwsh.EXE -command ". '{0}'"
swig : The term 'swig' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At D:\a\_temp\0a8dc0e1-ec51-429b-abd0-cb3597e983ac.ps1:2 char:1
+ swig -version
+ ~~~~
+ CategoryInfo          : ObjectNotFound: (swig:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : CommandNotFoundException

##[error]Process completed with exit code 1.

Observé

name: Python Windows CI

on: [push, pull_request]

jobs:
  # Building using the GitHub runner environment directly.
  build:
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v2
    - name: Check cmake
      run: cmake --version
    - name: Install swig
      run: |
        (New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.0.1.zip","swigwin-4.0.1.zip");
        Expand-Archive .\swigwin-4.0.1.zip .;
        $env:Path += ";.\swigwin-4.0.1";
        swig -version;
    - name: Check swig
      run: swig -version # swig cmdlet not found...


0 commentaires

3 Réponses :


1
votes

EDIT: GitHub a déprécié cela, veuillez voir une autre réponse ... réf: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/

Vous devez utiliser la syntaxe d'action echo "::add-path::..." , dans votre cas:

...
    - name: Install swig
      run: |
        (New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.0.1.zip","swigwin-4.0.1.zip");
        Expand-Archive .\swigwin-4.0.1.zip .;
        echo "::add-path::./swigwin-4.0.1"
    - name: Check swig
      run: swig -version

src: https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#adding-a-system-path


2 commentaires

le lien n'est plus valide


@jitter Link corrigé! semble que les rédacteurs de documents Github suivent mes conseils et réorganisent le document en conséquence: D



3
votes

Les commandes add-path et set-env sont devenues obsolètes le 1er octobre 2020 pour des raisons de sécurité: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add- commandes de chemin /

La méthode recommandée pour ajouter à% PATH% consiste à utiliser les fichiers d'environnement comme suit:

En supposant que vous utilisez Powershell , le shell par défaut:

echo "C:\directory\to\add\to\path" >> $GITHUB_PATH

ou bien pour bash :

echo "C:\directory\to\add\to\path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append


0 commentaires

1
votes

Les autres réponses sont un peu dépassées (en raison des actions GitHub rendant obsolète add-path comme expliqué dans la réponse de @Kel Solaar), voici un exemple complet basé sur la réponse @Mizus:

    - name: Install swig
      if: "startsWith(runner.os, 'windows')"
      run: |
        (New-Object System.Net.WebClient).DownloadFile("http://prdownloads.sourceforge.net/swig/swigwin-4.0.1.zip","swigwin-4.0.1.zip");
        Expand-Archive .\swigwin-4.0.1.zip .;
        echo "$((Get-Item .).FullName)/swigwin-4.0.1" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

Une autre différence par rapport à la réponse @Mizus est que le chemin absolu vers le répertoire swig est utilisé, c'est pour s'assurer qu'il fonctionne toujours même si le répertoire de travail change.


0 commentaires