Импорт-модуль не находит установленные в контейнере модули - PullRequest
0 голосов
/ 01 апреля 2020

В Jenkins, когда я запускаю конвейер и пытаюсь использовать модули в контейнере, я получаю модули, которые не найдены, как показано ниже:

Я использую шаг сборки "Powershell".

Когда я запускаю контейнер в интерактивном режиме, я вижу модули, как показано ниже (# 3):

1

[Tatux.Utils] $ pwsh -NonInteractive -NoProfile -File /tmp/jenkins1449086927549124636.ps1
################################
Running on node 745612521e5a
Build: jenkins-Powershell-Tatux.Utils-16
################################


    Directory: /opt/microsoft/powershell/7/Modules

ModuleType Version    PreRelease Name                                PSEdition
---------- -------    ---------- ----                                ---------
Manifest   1.2.5                 Microsoft.PowerShell.Archive        Desk     
Manifest   7.0.0.0               Microsoft.PowerShell.Host           Core     
Manifest   7.0.0.0               Microsoft.PowerShell.Management     Core     
Manifest   7.0.0.0               Microsoft.PowerShell.Security       Core     
Manifest   7.0.0.0               Microsoft.PowerShell.Utility        Core     
Script     1.4.6                 PackageManagement                   Desk     
Script     2.2.3                 PowerShellGet                       Desk     
Script     2.0.5                 PSDesiredStateConfiguration         Core     
Script     2.0.0                 PSReadLine                          Desk     
Binary     2.0.3                 ThreadJob                           Desk     
[91mImport-Module: [0m/tmp/jenkins1449086927549124636.ps1:9
[96mLine |
[96m   9 | [0m [96mImport-Module Pester, PSScriptAnalyzer[0m
[96m     | [91m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[91m[96m     | [91mThe specified module 'Pester' was not loaded because no valid module file was found in any module directory.
[0m
Build step 'PowerShell' marked build as failure
Recording NUnit tests results
FATAL: No NUnit test report files were found. Configuration error?
Finished: FAILURE 

Это мой dockerfile :

2

FROM mcr.microsoft.com/powershell:7.0.0-ubuntu-18.04

MAINTAINER "Nigel Tatschner"

# Set up required repos

RUN apt-get update && \
    apt-get -qy full-upgrade && \
    apt-get install -qy git && \
# Install a basic SSH server
    apt-get install -qy openssh-server && \
    sed -i 's|session    required     pam_loginuid.so|session    optional     pam_login$
    mkdir -p /var/run/sshd && \
# Install JDK 8 (latest stable edition at 2019-04-01)
    apt-get install -qy openjdk-8-jdk && \
# Cleanup old packages
    apt-get -qy autoremove && \
# Add user jenkins to the image
    adduser --quiet jenkins && \
# Set password for the jenkins user (you may want to alter this).
    echo "####:####" | chpasswd && \
    mkdir /home/#####/.m2

RUN mkdir /home/jenkins/.ssh/ \
    && chown -R ####:####/home/####/.m2/ \
    && chown -R ####:#### /home/####/.ssh/

CMD ["/usr/sbin/sshd", "-D"]

RUN pwsh -command "install-Module -Name Pester, PSScriptAnalyzer -force"
# Standard SSH port
EXPOSE 22

CMD [ "pwsh" ]

Выходные данные интерактивного сеанса tty:

3

Interactive tty session with container using image

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете попробовать это перед вызовом Import-Module:

Get-Module -ListAvailable -Refresh | Out-Null 


В качестве альтернативы, вы можете импортировать Pester по его абсолютному пути:

Import-Module /root/.local/share/powershell/Modules/Pester
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...