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

如何通过Github Actions实现HANA DB实例的自动化启停?

可以用GitHub Actions实现HANA DB实例自动化启停

实现前提

  • 拥有HANA DB实例的启停权限(自建环境需服务器访问权限,SAP BTP环境需BTP账号权限)
  • GitHub仓库已配置必要的敏感信息(存储在Actions Secrets中)
  • 明确HANA实例的启停命令或API调用方式

具体实现方法

1. 配置GitHub Secrets

在仓库的「Settings > Secrets and variables > Actions」中添加以下敏感信息(根据实际环境调整):

  • HANA_HOST:HANA实例主机地址
  • HANA_USER:拥有启停权限的用户名
  • HANA_PASSWORD:用户密码(或SSH私钥,推荐密钥认证)
  • HANA_INSTANCE_NUMBER:HANA实例编号(如00)
  • 若为SAP BTP环境,需额外添加BTP_USER、BTP_PASSWORD、BTP_GLOBAL_ACCOUNT、BTP_SUBACCOUNT、HANA_SERVICE_INSTANCE_NAME

2. 创建GitHub Actions工作流文件

在仓库根目录下创建.github/workflows/hana-start-stop.yml,根据你的HANA环境选择对应示例:

示例1:自建HANA实例(SSH方式)

支持手动触发和定时启停:

name: HANA DB 自动化启停
on:
  # 手动触发,可选择执行启动/停止操作
  workflow_dispatch:
    inputs:
      action:
        description: '执行操作: start/stop'
        required: true
        default: 'start'
  # 定时触发:北京时间8点启动,22点停止(转换为UTC时间)
  schedule:
    - cron: '0 0 * * *'  # UTC 0点 = 北京时间8点(启动)
    - cron: '0 14 * * *' # UTC 14点 = 北京时间22点(停止)

jobs:
  execute-hana-action:
    runs-on: ubuntu-latest
    steps:
      - name: 安装SSH依赖
        run: sudo apt-get update && sudo apt-get install -y sshpass openssh-client
      
      - name: 执行启停命令
        env:
          HANA_HOST: ${{ secrets.HANA_HOST }}
          HANA_USER: ${{ secrets.HANA_USER }}
          HANA_PASSWORD: ${{ secrets.HANA_PASSWORD }}
          HANA_INSTANCE: ${{ secrets.HANA_INSTANCE_NUMBER }}
          ACTION: ${{ github.event.inputs.action || 'start' }}
        run: |
          if [ "$ACTION" = "start" ]; then
            # 通过SSH连接到HANA服务器执行启动命令
            sshpass -p "$HANA_PASSWORD" ssh -o StrictHostKeyChecking=no $HANA_USER@$HANA_HOST "HDB start $HANA_INSTANCE"
          else
            # 执行停止命令
            sshpass -p "$HANA_PASSWORD" ssh -o StrictHostKeyChecking=no $HANA_USER@$HANA_HOST "HDB stop $HANA_INSTANCE"
          fi

示例2:SAP BTP HANA Cloud实例(BTP CLI方式)

name: HANA Cloud 自动化启停
on:
  workflow_dispatch:
    inputs:
      action:
        description: '执行操作: start/stop'
        required: true
        default: 'start'
  schedule:
    - cron: '0 0 * * *'  # 北京时间8点启动
    - cron: '0 14 * * *' # 北京时间22点停止

jobs:
  hana-cloud-operation:
    runs-on: ubuntu-latest
    steps:
      - name: 安装BTP CLI
        run: |
          curl -LO https://github.com/SAP/btp-cli/releases/latest/download/btp-cli-linux-amd64.tar.gz
          tar -xzf btp-cli-linux-amd64.tar.gz
          sudo mv btp /usr/local/bin/
      
      - name: 登录BTP平台
        env:
          BTP_USER: ${{ secrets.BTP_USER }}
          BTP_PASSWORD: ${{ secrets.BTP_PASSWORD }}
          BTP_GLOBAL_ACCOUNT: ${{ secrets.BTP_GLOBAL_ACCOUNT }}
          BTP_SUBACCOUNT: ${{ secrets.BTP_SUBACCOUNT }}
        run: |
          btp login --user "$BTP_USER" --password "$BTP_PASSWORD" --global-account "$BTP_GLOBAL_ACCOUNT" --subaccount "$BTP_SUBACCOUNT"
      
      - name: 执行启停操作
        env:
          HANA_INSTANCE: ${{ secrets.HANA_SERVICE_INSTANCE_NAME }}
          ACTION: ${{ github.event.inputs.action || 'start' }}
        run: |
          if [ "$ACTION" = "start" ]; then
            btp update service-instance --name "$HANA_INSTANCE" --parameters '{"data": {"state": "STARTED"}}'
          else
            btp update service-instance --name "$HANA_INSTANCE" --parameters '{"data": {"state": "STOPPED"}}'
          fi

关键注意事项

  • 安全优先:所有敏感信息必须存储在GitHub Secrets中,禁止明文写入工作流文件;自建环境推荐使用SSH密钥认证代替密码
  • 权限验证:确保执行命令的用户拥有HANA实例的启停权限(如自建环境的sidadm用户)
  • 时区转换:定时任务的cron表达式基于UTC时间,需根据目标时区换算
  • 环境兼容性:GitHub Runner默认使用Ubuntu环境,若需其他操作系统,需调整依赖安装命令

内容的提问来源于stack exchange,提问作者LilNasX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:50:23