nodeJs配置gitlab-ci

本文介绍了如何配置Node.js项目以使用GitLab CI。首先,详细解释了配置.yml文件的过程,包括前端框架的编译命令。接着,讨论了安装和设置专用于Node项目的GitLab Runner的步骤,如添加源、安装、注册等。在遇到因--analyze参数导致的持续运行问题时,选择了暂时移除该参数以使CI流程正常结束。

今天来配置nodeJs的ci

1.配置yml

前端同事给的前端框架编译命令如下,不太懂,不管:

# install dependencies
$ npm install # Or yarn install

# serve with hot reload at localhost:3000
$ npm run dev

# build for production and launch server
$ npm run build
$ npm start

# generate static project
$ npm run generate

直接gitLab中找到项目,setup-ci

stages:
 - compile
 - test-deploy
 - deploy

before_script:
 - echo 'no redis'
 - echo 'no DB'
 - npm install

compile_codes:
 stage: compile
 script:
  - npm run build
  
test_deploy: 
 stage: test-deploy
 script:
  - npm run lint
 allow_failure: true
 only: 
  - test
deploy:
 stage: deploy
 script:
  - echo 'deployd!'
 only: 
  - master

2.安装一个新的runner,专门给node项目使用

添加源

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

安装


                
<think>我们正在解决用户在运行gitlab-ci-local时遇到的PowerShell脚本执行被禁止的问题。用户可能看到类似“无法加载文件,因为在此系统上禁止运行脚本”的错误。这通常是由于PowerShell的执行策略(Execution Policy)限制导致的。 解决方案的核心是:**调整PowerShell执行策略**,但需注意安全风险。以下是具体步骤: --- ### **1. 确认当前执行策略** 以**管理员身份**打开PowerShell,运行: ```powershell Get-ExecutionPolicy ``` 常见返回值: - `Restricted`(默认):禁止运行任何脚本。 - `AllSigned`:只运行受信任发布者签名的脚本。 - `RemoteSigned`:运行本地脚本+来自互联网的已签名脚本。 - `Unrestricted`:允许所有脚本(⚠️高危)。 --- ### **2. 临时放宽执行策略(推荐)** 在**当前会话**中临时允许脚本运行(关闭窗口后失效): ```powershell Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process ``` - **安全提示**:此操作仅影响当前PowerShell进程,不影响系统全局设置。 --- ### **3. 永久放宽执行策略(谨慎使用)** 若需永久生效(如CI环境),可运行: ```powershell Set-ExecutionPolicy RemoteSigned -Scope LocalMachine ``` - **风险提示**:永久放宽策略可能降低系统安全性[^1]。 --- ### **4. 为单个脚本解除限制(最安全)** 右键点击脚本文件 → 选择“属性” → 勾选“解除锁定” → 点击“确定”: ![[解除锁定脚本示意图.png]] --- ### **5. 使用Bypass参数直接运行脚本** 在运行命令时强制绕过策略: ```powershell powershell.exe -ExecutionPolicy Bypass -File your_script.ps1 ``` - **适用场景**:适合在CI命令中直接使用(如GitLab CI的`script`字段)[^2]。 --- ### **针对gitlab-ci-local的解决方案** 在GitLab CI配置中,确保PowerShell脚本以绕过策略的方式运行: ```yaml job_name: script: - powershell -ExecutionPolicy Bypass -File ./ci_script.ps1 ``` --- ### **安全建议** - 优先选择**临时策略放宽**或**单脚本解除锁定**。 - 永久修改策略后,建议恢复为默认值: ```powershell Set-ExecutionPolicy Restricted -Scope LocalMachine ``` --- ### **原理说明** PowerShell执行策略是**安全护栏**,防止恶意脚本执行。开发/测试环境可适度放宽,生产环境需严格评估脚本来源[^3]。 --- §§相关问题§§ 1. 如何在不修改执行策略的情况下运行PowerShell脚本? 2. PowerShell执行策略有哪些级别?如何选择? 3. 如何为特定用户而非整个系统设置执行策略? 4. 在Docker容器中运行PowerShell脚本时如何避免执行策略问题? 5. 如何检查PowerShell脚本是否被恶意篡改?</think>### 解决 GitLab CI Local 中 PowerShell 脚本执行被禁止的问题 当在 `gitlab-ci-local` 中遇到 PowerShell 脚本无法执行(错误提示"禁止运行脚本")时,根本原因是 **PowerShell 执行策略(Execution Policy)的限制**。以下是逐步解决方案: --- #### 1. **确认当前执行策略** 在 PowerShell 中运行: ```powershell Get-ExecutionPolicy ``` 常见返回值: - `Restricted`(默认):禁止所有脚本执行 - `AllSigned`:只允许签名脚本 - `RemoteSigned`:允许本地脚本+签名网络脚本 - `Unrestricted`:允许所有脚本(⚠️高危) --- #### 2. **临时解决方案(推荐)** 在当前会话中临时允许脚本执行: ```powershell Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process ``` - **优点**:仅当前窗口生效,关闭后自动恢复 - **适用场景**:快速测试 CI 脚本 --- #### 3. **永久解决方案(谨慎使用)** ```powershell Set-ExecutionPolicy RemoteSigned -Scope LocalMachine ``` - **安全说明**:允许本地脚本+签名网络脚本,平衡安全性与可用性[^1] - **恢复默认**:`Set-ExecutionPolicy Restricted -Scope LocalMachine` --- #### 4. **针对 gitlab-ci-local 的专用方案** 在 GitLab CI 配置中强制绕过策略: ```yaml job_name: script: - powershell -ExecutionPolicy Bypass -File ./your_script.ps1 ``` > ✅ **原理**:通过命令行参数临时覆盖系统策略[^2] --- #### 5. **签名脚本(最安全方案)** 为脚本添加数字签名: ```powershell # 生成自签名证书 New-SelfSignedCertificate -Type CodeSigning -Subject "CN=GitLabScript" -KeyUsage DigitalSignature # 签名脚本 Set-AuthenticodeSignature -FilePath .\ci_script.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0] ``` - **优势**:满足 `AllSigned` 策略要求 - **适用场景**:生产环境部署[^3] --- #### 6. **修改注册表(Windows Server)** ```powershell # 查看当前策略 Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" | Select-Object ExecutionPolicy # 修改策略为 RemoteSigned Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" -Name ExecutionPolicy -Value "RemoteSigned" ``` --- ### **安全建议** 1. 优先使用 `RemoteSigned` 而非 `Unrestricted` 2. 在 CI 脚本顶部添加强制策略声明: ```powershell #Requires -ExecutionPolicy RemoteSigned ``` 3. 定期审计 PowerShell 脚本来源 4. 在 Docker 容器中运行 CI 时,在 Dockerfile 设置策略: ```dockerfile RUN powershell Set-ExecutionPolicy RemoteSigned ``` > ⚠️ **注意**:企业环境中需联系 IT 管理员调整组策略(GPO),个人设备可直接操作。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值