如何通过Jenkins Pipeline自动化在IIS服务器上部署Angular应用?
实现Jenkins自动化部署Angular应用到IIS的配置方案
一、批处理脚本(适配Jenkins自由风格项目)
如果使用Jenkins自由风格项目,可直接添加以下批处理命令,需根据你的实际环境修改路径与站点名称:
:: 切换到Angular项目根目录 cd D:\jenkins_workspace\your-angular-project :: 安装项目依赖(若依赖已缓存可跳过此步) call npm install :: 构建Angular生产环境包 call ng build --prod --output-path=dist :: 停止目标IIS站点,避免文件被锁定无法覆盖 call "%SystemRoot%\system32\inetsrv\appcmd" stop site "YourIISSiteName" :: 清空IIS站点物理路径下的旧文件(可选,确保部署环境干净) rmdir /s /q "C:\inetpub\wwwroot\your-angular-app" mkdir "C:\inetpub\wwwroot\your-angular-app" :: 复制构建产物到IIS物理路径 xcopy /E /Y "D:\jenkins_workspace\your-angular-project\dist\*" "C:\inetpub\wwwroot\your-angular-app\" :: 启动IIS站点完成部署 call "%SystemRoot%\system32\inetsrv\appcmd" start site "YourIISSiteName"
核心注意点:
- 确保Jenkins服务运行账号拥有IIS站点管理权限和目标目录的读写权限
--output-path可自定义构建输出目录,按需调整即可- 频繁构建时可配置Jenkins的npm缓存,减少依赖安装耗时
二、Jenkinsfile(推荐流水线项目使用)
使用Declarative Pipeline更便于维护与扩展,示例如下:
pipeline { agent any // 若IIS部署在特定虚拟机,需指定对应Jenkins节点标签 environment { PROJECT_DIR = 'D:\\jenkins_workspace\\your-angular-project' IIS_SITE_NAME = 'YourIISSiteName' IIS_TARGET_PATH = 'C:\\inetpub\\wwwroot\\your-angular-app' } stages { stage('拉取代码') { steps { git url: 'https://your-repo-url.git', branch: 'main' } } stage('安装依赖') { steps { bat 'cd %PROJECT_DIR% && npm install' } } stage('构建生产包') { steps { bat 'cd %PROJECT_DIR% && ng build --prod --output-path=dist' } } stage('部署到IIS') { steps { bat """ "%SystemRoot%\\system32\\inetsrv\\appcmd" stop site "%IIS_SITE_NAME%" rmdir /s /q "%IIS_TARGET_PATH%" mkdir "%IIS_TARGET_PATH%" xcopy /E /Y "%PROJECT_DIR%\\dist\\*" "%IIS_TARGET_PATH%\\" "%SystemRoot%\\system32\\inetsrv\\appcmd" start site "%IIS_SITE_NAME%" """ } } } post { success { echo 'Angular应用已成功部署到IIS!' } failure { echo '部署失败,请检查日志排查问题!' } } }
额外优化建议:
- 可添加
cache步骤缓存node_modules,大幅缩短重复构建时间 - 若需要重启应用池,可在部署脚本中加入
appcmd recycle apppool "YourAppPoolName" - 部署前可新增代码检查、单元测试阶段,保障构建产物质量
内容的提问来源于stack exchange,提问作者Subharoop Ghosh
相关产品推荐
相关产品推荐

