GitHub Actions按需自托管AWS EC2 runner缺少mode参数报错配置咨询
问题原因
你使用的machulav/ec2-github-runner@v2版本要求必须显式声明mode参数,用来指定对EC2实例的操作类型,未声明就会触发你遇到的报错。
配置方法
mode参数可选值如下:
mode: start:启动指定的EC2实例,并将其注册为当前仓库的GitHub Actions自托管runnermode: stop:注销当前实例对应的runner,并停止EC2实例mode: restart:先执行停止逻辑,再执行启动逻辑
如果你需要实现「工作流启动时拉起EC2、任务执行完成后关闭EC2」的逻辑,需要将action拆分为两个步骤分别声明不同的mode,参考完整配置如下:
jobs: deploy: runs-on: ubuntu-latest steps: # 第一步:启动EC2实例并注册runner - name: Start EC2 runner uses: machulav/ec2-github-runner@v2 with: mode: start github-token: ${{ secrets.GH_TOKEN }} ec2-instance-id: i-03d221ab975187b # 已经指定现有实例ID的情况下不需要填写ec2-instance-type,可删除该参数 # 第二步:在EC2 runner上执行你的业务任务 - name: Run build task uses: actions/checkout@v4 with: fetch-depth: 1 # 这里指定runs-on为你注册的runner标签,默认是self-hosted,也可以自定义标签 runs-on: self-hosted # 第三步:任务结束后停止EC2实例,配置always确保即使前面任务失败也会执行停止操作 - name: Stop EC2 runner uses: machulav/ec2-github-runner@v2 if: always() with: mode: stop github-token: ${{ secrets.GH_TOKEN }} ec2-instance-id: i-03d221ab975187b
内容的提问来源于stack exchange,提问作者Gaurav Yadav
相关产品推荐
相关产品推荐

