Mình đang việc 1 bitbucket-pipeline để thực hiện upgrade eks cluster bằng eksctl
# This is an example Starter pipeline configuration # Use a skeleton to build, test and deploy using manual and parallel steps # ----- # You can specify a custom docker image from Docker Hub as your build environment. pipelines: custom: upgrade-eks: - variables: - name: eksClusterName default: 'eks-nimtechnology' allowed-values: # optionally restrict variable values - 'eks-nimtechnology' - name: regionName default: 'us-east-2' allowed-values: # optionally restrict variable values - 'us-east-2' - name: upgradeToVersion default: '1.21' allowed-values: # optionally restrict variable values - '1.21' - step: name: 'Get Cluster infomations' deployment: lab-nimtechnology image: weaveworks/eksctl:latest script: - eksctl get cluster --name $eksClusterName --region $regionName --output yaml - step: name: 'Upgrade EKS Controller' image: weaveworks/eksctl:latest trigger: manual script: - eksctl upgrade cluster --name $eksClusterName --region $regionName --version $upgradeToVersion --approve - step: name: 'Create New Node Group' image: weaveworks/eksctl:latest trigger: manual script: - eksctl create nodegroup --cluster $eksClusterName --region $regionName create-eks: - variables: - name: eksVersion default: '1.20' allowed-values: # optionally restrict variable values - '1.20' - step: name: 'Creating New EKS Cluster of Nimtechnology' deployment: lab-nimtechnology image: weaveworks/eksctl:latest script: - echo "Create a new eks cluster..." - eksctl create cluster --name eks-nimtechnology --region us-east-2 --version $eksVersion
Và mình cũng có chỉ các bạn cách để chúng ta có thể tạo nhiều env theo từng môi trường khác nhau.

Nhưng mà bitbucket-pipeline là không cho phép điều này.
The deployment environment ‘lab-nimtechnology’ in your bitbucket-pipelines.yml file occurs multiple times in the pipeline. Please refer to our documentation for valid environments and their ordering.
Mình cũng có thấy có người đã raise lên với bitbucket.
https://community.atlassian.com/t5/Bitbucket-questions/The-deployment-environment-test-in-your-bitbucket-pipelines-yml/qaq-p/971584
Bà cũng đã có ticket cho vụ này.
https://jira.atlassian.com/browse/BCLOUD-18261
Và chả biết bao giờ xong.
trong topic này thì có một số master đã hiến kế cho chúng ta.
https://stackoverflow.com/questions/68930752/the-deployment-environment-staging-in-your-bitbucket-pipelines-yml-file-occurs
và chúng ta sẽ sử dụng câu answer có nhiều người vote nhất.
The workaround for the issue with reusing Environment Variables without using the deployment clause for more than one steps in a pipeline I have found is to dump ENV VARS to a file and save it as an artifact that will be sourced in the following steps.
steps: - step: &set-environment-variables name: 'Set environment variables' script: - printenv | xargs echo export > .envs artifacts: - .envs - step: &next-step name: "Next step in the pipeline" script: - source .envs - next_actions pipelines: pull-requests: '**': - step: <<: *set-environment-variables deployment: my-deployment - step: <<: *next-step name: "Name of the next step being executed" branches: staging: - step: <<: *set-environment-variables deployment: my-deployment - step: <<: *next-step name: "Name of the next step being executed"