Использование VB.net - вытащить файл из GitLab - PullRequest
0 голосов
/ 08 июня 2018

Как видно из названия, я ищу способ извлечь определенные файлы из частного репозитория GitLab с использованием VB.net (2017).

У меня есть приложение, которое я пишу, которое будет вызывать определенные сценарии PowerShell.У меня есть несколько других пользователей, которые работают со мной над написанием сценариев, поэтому мы используем GitLab в качестве хранилища для них.

Мы хотим, чтобы приложение получало последнюю версию сценариев из GitLab при открытии приложения, затемиз приложения вызовите сценарии.

Я все сделал, за исключением загрузки сценариев из GitLab.

1 Ответ

0 голосов
/ 31 августа 2018

Так что я выкладываю ответ здесь на тот случай, если у кого-то еще есть такой же вопрос.Я действительно смог сделать это довольно легко.

Сначала вы должны сгенерировать личный токен.Для этого достаточно проходов, поэтому я не буду вдаваться в подробности.

Далее необходимо получить адрес необработанного файла, который вы хотите загрузить.Вы можете получить это, открыв файл в GitLab, затем в правом верхнем углу окна есть кнопка «Open Raw», которая открывает необработанную страницу.
См. Изображение здесь

Получить URL из адресной строки.Как только вы это сделаете, у вас есть все, что вам нужно, чтобы свернуть файл, используя VB.net.

Вы должны взять адрес необработанного файла, скажем, это было "https://gitlab.com/CompanyName/raw/master/folder/filename.ps1", вы потом добавляете?", С вашим личным токеном, так что это выглядит так: "https://gitlab.com/CompanyName/raw/master/folder/filename.ps1?private_token=MyPrivateToken"и используйте локон (через powershell), чтобы получить его.

В моем коде уже была функция для запуска сценариев PowerShell (с кодом, который, как мне кажется, я покинул этот сайт ... забыл точное местоположение), который был таким:

    Private Function RunScript(ByVal scriptText As String) As String
    ' Takes script text as input and runs it, then converts
    ' the results to a string to return to the user
    ' create Powershell runspace
    Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()

    ' open it
    MyRunSpace.Open()

    ' create a pipeline and feed it the script text
    Dim MyPipeline As Pipeline = MyRunSpace.CreatePipeline()

    MyPipeline.Commands.AddScript(scriptText)

    ' add an extra command to transform the script output objects into nicely formatted strings
    ' remove this line to get the actual objects that the script returns. For example, the script
    ' "Get-Process" returns a collection of System.Diagnostics.Process instances.
    MyPipeline.Commands.Add("Out-String")

    ' execute the script
    Dim results As Collection(Of PSObject) = MyPipeline.Invoke()

    ' close the runspace
    MyRunSpace.Close()

    ' convert the script result into a single string
    Dim MyStringBuilder As New StringBuilder()

    For Each obj As PSObject In results
        MyStringBuilder.AppendLine(obj.ToString())
    Next

    ' return the results of the script that has
    ' now been converted to text
    Return MyStringBuilder.ToString()

End Function

Теперь я могу вызвать команду curl с этой функцией следующим образом:

RunScript("curl https://gitlab.com/CompanyName/raw/master/folder/filename.ps1?private_token=MyPrivateToken -outfile C:\DownloadFolder\FileName.ps1")

Вот и все!В любое время, когда вам нужно получить файл, вы можете просто получить местоположение необработанного файла и изменить вызов функции, чтобы отразить новый адрес, и захватить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...