You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bitbucket Pipeline结合Tomcat用户部署WAR包及SFTP密钥使用

刚好我之前处理过类似的部署场景,给你详细拆解这两个问题:

1. 通过Bitbucket Pipeline用Tomcat用户部署WAR包到Tomcat服务器

要完成这个流程,核心是做好Tomcat权限配置和Bitbucket Pipeline的部署脚本,步骤如下:

  • 配置Tomcat的部署用户:
    首先得在Tomcat服务器的conf/tomcat-users.xml文件里,添加一个拥有manager-script角色的用户——这个角色是允许通过脚本/API部署应用的关键。示例配置:
    <user username="tomcat-deploy-user" password="your-secure-password" roles="manager-script"/>
    
    保存后重启Tomcat,让配置生效。
  • 在Bitbucket里配置敏感变量:
    为了避免把密码硬写到脚本里,去你的Bitbucket仓库的「Settings > Repository variables」页面,添加两个变量:
    • TOMCAT_USER:刚才配置的Tomcat用户名
    • TOMCAT_PASS:对应的密码
  • 编写Bitbucket Pipeline脚本:
    在项目根目录创建bitbucket-pipelines.yml,先完成WAR包的构建(这里用Maven做示例,你可以根据自己的项目调整构建命令),再用git-ftp部署到Tomcat。示例配置:
    image: maven:3.8.6-openjdk-11
    
    pipelines:
      default:
        - step:
            name: Build & Deploy WAR to Tomcat
            script:
              # 安装git-ftp(如果镜像自带可以跳过)
              - apt-get update && apt-get install -y git-ftp
              # 构建WAR包
              - mvn clean package
              # 执行部署命令,就是你提供的示例改造版
              - git ftp push --user $TOMCAT_USER --passwd $TOMCAT_PASS "sftp://your-tomcat-ip/var/lib/tomcat8/webapps/ROOT"
    
    注意:ROOT目录会让Tomcat把这个WAR包作为默认应用,如果你的应用有特定名称,替换成对应的目录即可。
2. 利用SSH密钥进行SFTP操作(替代密码更安全)

用密码认证虽然简单,但SSH密钥更安全,也避免了密码泄露的风险,结合git-ftp的操作步骤如下:

  • 生成SSH密钥对:
    在本地终端执行命令生成密钥(一路回车即可,不需要设置密码):
    ssh-keygen -t rsa -b 4096 -C "your-work-email@example.com"
    
    生成后会得到id_rsa(私钥,要保密)和id_rsa.pub(公钥,放到服务器上)。
  • 把公钥部署到Tomcat服务器:
    登录到Tomcat服务器,找到部署用户的~/.ssh目录(没有就创建一个,权限设为700),把id_rsa.pub的内容追加到authorized_keys文件里,然后把这个文件的权限设为600(避免权限过大被拒绝)。
  • 在Bitbucket里配置私钥变量:
    回到Bitbucket仓库的「Settings > Repository variables」,添加SSH_PRIVATE_KEY变量,值就是刚才生成的id_rsa文件的全部内容(复制粘贴时注意不要漏掉换行)。
  • 修改Pipeline脚本用密钥认证:
    调整bitbucket-pipelines.yml,先加载SSH密钥,再执行部署:
    image: maven:3.8.6-openjdk-11
    
    pipelines:
      default:
        - step:
            name: Build & Deploy with SSH Key
            script:
              # 安装依赖工具
              - apt-get update && apt-get install -y git-ftp openssh-client
              # 配置SSH密钥
              - mkdir -p ~/.ssh
              - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
              - chmod 600 ~/.ssh/id_rsa
              # 构建WAR包
              - mvn clean package
              # 用SSH密钥进行SFTP部署,不需要密码了
              - git ftp push --user $TOMCAT_USER --key ~/.ssh/id_rsa "sftp://your-tomcat-ip/var/lib/tomcat8/webapps/ROOT"
    

你提供的这个命令就是典型的密码认证式SFTP部署:

git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD "sftp://35.150.122.100/var/lib/tomcat8/webapps/ROOT"
只需要把$FTP_USERNAME和$FTP_PASSWORD替换成你配置的Tomcat用户信息,或者用Bitbucket的变量引用即可。

内容的提问来源于stack exchange,提问作者Sai Charan Teja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:44:35