Ishan
Ishan

Reputation: 4359

How do I use PowerShell with Gitlab CI in Gitlab Pages?

How do I use PowerShell commands/scripts with Gitlab CI in a .gitlab-ci.yml file which is used to deploy to gitlab pages?

I am trying to execute the build.ps1 file from .gitlab-ci.yml, but when it reaches the build.ps1 line, it gives an error saying /bin/bash: line 5: .build.ps1: command not found

I am trying to use the PowerShell script to convert a file in my repo and have the converted file deployed to gitlab pages using .gitlab-ci.yml

Here is my code:

.gitlab.yml

pages:
  stage: deploy
  script:
  - mkdir .public
  - .\build.ps1
  - cp -r * .public
  - mv .public public
  artifacts:
    paths:
    - public
  only:
  - master

Upvotes: 15

Views: 42598

Answers (3)

live2
live2

Reputation: 4285

The docker image philippheuer/docker-gitlab-powershell is outdated. The source on Github was also deleted.

I use in my gitlab-ci.yml the following image mcr.microsoft.com/powershell:latest more Informations available here

scriptjob:
  stage: script
  image: 
    name: "mcr.microsoft.com/powershell:latest"
  script:
    - pwsh ./myscript.ps1

Upvotes: 8

Colin
Colin

Reputation: 1846

For anyone who is having trouble launching grunt within their gitlab CI/CD via a powershell file, add this line to the top of your file:

$env:path += ";" + (Get-Item "Env:AppData").Value + "\npm"

Upvotes: 0

Ishan
Ishan

Reputation: 4359

I have been able to figure out a solution to my own question.

Solution

To Run PowerShell Command/Script from a .gitlab-ci.yml file on a gitlab.com using the Gitlab CI, you need to make sure that the contents of your .gitlab-ci.yml file is as shown below.

Note: The .gitlab-ci.yml below works without having to install a Gitlab Runner on your own machine and has been tested on the http://gitlab.com website.

image: philippheuer/docker-gitlab-powershell

pages:
  stage: deploy
  script:
  - mkdir .public
  # run PowerShell Script
  - powershell -File build.ps1
  # run PowerShell Command
  - powershell -Command "Get-Date"
  - cp -r * .public
  - mv .public public
  artifacts:
    paths:
    - public
  only:
  - master

Upvotes: 16

Related Questions