如果使用github操作已经存在kubernetes服务,则跳过该服务的创建



我设置了以下github操作作业,以自动部署一个"nginx";应用程序,并创建";nginx服务";推送服务。

当服务已经存在时,我试图在服务创建步骤中配置一个跳过。

我的工作:

name: CD_EKS
on:
- push
jobs:
eks_nginx_deployment_service:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Trigger deploy
uses: Consensys/kubernetes-action@master
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
with:
args: apply -f nginx_deployment.yaml
- name: Get Service List
id: get_service_list
uses: Consensys/kubernetes-action@master
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
with:
args: get services/nginx-service -o name
- name: Create ELB service
if: <service doesn't exist> # <- that's my point
uses: Consensys/kubernetes-action@master
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
with:
args: create -f nginx_loadbalancer.yaml

我试图引用前面的步骤(get_Service_list(输出,但没有成功。

谢谢

如果您想在前一步的输出基础上跳过一步,请尝试以下操作:

步骤1-确定要使用的输出的名称

如果你想访问ConsenSys/kubernetes-action的输出,我们首先需要确定输出的名称。值得庆幸的是,ConsensSys通过Action:的YAML定义记录了这个输出

./。action.yml

outputs:
result:
description: "Output of the kubectl command run"

为了访问步骤的输出,GitHub Actions支持以下表达式:${{ steps.STEP_ID.outputs.OUTPUT_NAME }}

由于我们知道您要使用的步骤的ID,并且ConsensSys记录了该操作的输出,因此我们知道最终表达式如下:${{ steps.get_service_list.outputs.result }}

步骤2-确定适当的"如果"语句

从步骤1中,我们能够确定get_service_list的输出是kubectl命令的输出。这意味着人们必须对kubectl有一点了解(在当地进行实验可以帮助做到这一点(。由于您正在传递get services/nginx-service -o name,我假设您正在检查名为services/nginx-service的项的存在。如果存在,kubectl get services/nginx-service -o name将输出services/nginx-service。如果它不存在,kubectl将返回一个错误。换句话说,我们可以说如果输出不等于"服务/nginx服务";,运行名为";创建ELB服务">

第3步-把所有东西放在一起

以上两个步骤给了我们:

  • get_service_list步骤输出的正确名称
  • 我们要用于名为";创建ELB服务">

把这些信息放在一起;创建ELB服务";步骤可以采取以下形式:

- name: Create ELB service
if: steps.get_service_list.outputs.result != 'services/nginx-service'
uses: Consensys/kubernetes-action@master
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
with:
args: create -f nginx_loadbalancer.yaml

注意GitHub Actions会自动假设条件if关键字的值是一个表达式,因此不必将该表达式括在${{ }}中。

有用的链接/注释

  • GitHub动作表达式中支持的运算符
  • 关于上下文和表达式

相关内容

  • 没有找到相关文章

最新更新