如何搭建GitHub至Salesforce的自动化部署流水线及手动部署按钮
实现GitHub与Salesforce的部署流水线及手动增量部署
一、搭建自动部署流水线到Salesforce Org
完全可以通过GitHub Actions实现master分支代码到Salesforce Org的自动部署,具体步骤如下:
配置Salesforce认证密钥
- 进入GitHub仓库的「Settings → Secrets and variables → Actions」,添加以下敏感信息作为仓库密钥:
SFDC_USERNAME:目标Salesforce Org的登录用户名SFDC_PASSWORD:用户名对应的密码+安全令牌(IP未加入白名单的环境需添加令牌)
- 生产环境更推荐JWT认证,需额外添加
SFDC_CLIENT_ID(Connected App的客户端ID)和SFDC_JWT_KEY(私钥内容)。
- 进入GitHub仓库的「Settings → Secrets and variables → Actions」,添加以下敏感信息作为仓库密钥:
编写GitHub Actions工作流文件
在仓库的.github/workflows目录下新建sfdx-auto-deploy.yml,示例配置如下:name: Auto Deploy to Salesforce on: push: branches: [ master ] # 代码推送到master分支时自动触发 jobs: deploy: runs-on: ubuntu-latest steps: - name: 拉取仓库代码 uses: actions/checkout@v4 - name: 初始化Salesforce DX环境 uses: salesforcedx-actions/setup-sfdx@v2 - name: 认证到Salesforce Org run: | # 密码+令牌认证(适用于开发环境) sfdx auth:web:login -d -a target-org -u ${{ secrets.SFDC_USERNAME }} -p ${{ secrets.SFDC_PASSWORD }} # JWT认证(适用于生产环境) # sfdx auth:jwt:grant --clientid ${{ secrets.SFDC_CLIENT_ID }} --jwtkeyfile server.key --username ${{ secrets.SFDC_USERNAME }} --setdefaultdevhubusername -a target-org - name: 部署Apex代码到Salesforce run: sfdx force:source:deploy -x manifest/package.xml --wait 30 --testlevel RunLocalTests这个工作流会在master分支有代码推送时,自动完成拉取代码、初始化SFDX、认证Org、部署代码的全流程。
二、设置手动按钮实现增量变更部署
可以通过GitHub Actions的workflow_dispatch事件创建手动触发按钮,点击后部署master分支的增量变更,配置方式如下:
配置手动触发条件
修改工作流文件的触发规则,添加workflow_dispatch事件,示例:on: workflow_dispatch: # 开启手动触发按钮 push: branches: [ master ] # 可选保留自动触发逻辑配置完成后,GitHub仓库的「Actions」标签下会出现对应工作流,带有「Run workflow」手动触发按钮。
实现增量部署逻辑
增量部署的核心是识别上次部署后master分支的变更文件,仅部署这些文件。可以结合Git命令获取变更,再传递给SFDX部署命令:steps: # 保留拉取代码、初始化SFDX、认证Org的步骤不变 - name: 获取增量变更文件 id: get-changes run: | # 对比当前HEAD与上一次提交的差异,筛选出force-app目录下的变更文件 CHANGED_FILES=$(git diff --name-only HEAD^ HEAD -- force-app/ | tr '\n' ',') echo "changed_files=$CHANGED_FILES" >> $GITHUB_OUTPUT - name: 部署增量变更 if: steps.get-changes.outputs.changed_files != '' run: sfdx force:source:deploy --sourcepath ${{ steps.get-changes.outputs.changed_files }} --wait 30 --testlevel RunSpecifiedTests --tests YourApexTestClass若需更精准的增量控制,建议维护一个记录上次成功部署commit SHA的GitHub变量,每次部署后更新该值,确保只部署两次部署之间的所有变更。
关键注意事项
- 测试级别要求:部署时必须指定测试级别,生产环境要求至少运行指定测试或本地测试,不可跳过测试环节。
- 账号权限:确保GitHub Actions使用的Salesforce账号拥有「Author Apex」「Modify All Data」等部署所需权限。
- 代码检查:建议在部署前添加静态代码扫描步骤(如
sfdx scanner:run),提前发现代码质量问题。
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

