gpt4 book ai didi

Gitlab CI Review Apps - 将部署脚本中的信息返回到 gitlab ci 环境变量中

转载 作者:行者123 更新时间:2023-12-01 12:24:50 24 4
gpt4 key购买 nike

我使用 gitlab-ci 进行自动化测试。现在我扩展它以允许通过 ansible playbook 审查部署在 digitalocean droplets 上的应用程序。

这工作得很好,但我需要从 ansible 获取一个变量到 .gitlab-ci - 我找不到办法做到这一点。

.gitlab-ci.yml

Deploy for Review:
before_script: []
stage: review
script: 'cd /home/playbooks/oewm/deployment && ansible-playbook -i inventories/review --extra-vars "do_name=$CI_PIPELINE_ID api_git_branch=$CI_BUILD_REF_NAME" digitalocean.yml'
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$IP_FROM_ANSIBLE
on_stop: "Stop Review"
only:
- branches
when: manual
tags:
- deploy

剧本中的相关部分:

- name: Create DO Droplet
delegate_to: localhost
local_action:
module: digital_ocean
state=present
command=droplet
name=review-{{ do_name }}
api_token={{ do_token }}
region_id={{ do_region }}
image_id={{ do_image }}
size_id={{ do_size }}
ssh_key_ids={{ do_ssh }}
wait_timeout=500
register: my_droplet

- name: print info about droplet
delegate_to: localhost
local_action:
module: debug
msg="ID is {{ my_droplet.droplet.id }} IP is {{ my_droplet.droplet.ip_address }}"

那么我怎样才能得到 gitlab-ci 的 droplet ID 和 IP?(后面的Stop Action 需要这个ID,IP给开发者查看)

最佳答案

Ansible 本身就是一个 YAML 配置的脚本工具,并且本身可能接近图灵完整的自动化脚本环境。为什么不让它在某处写入一个名为“./ip_address.sh”的文件,然后将该 .sh 点包含到您的 gitlab CI 中?

所有这些的最顶层,在 .gitlab-ci.yml 中会有这样的:

script:
- ./run_ansible.sh ./out/run_file_generated_from_ansible.sh
- . ./out/run_file_generated_from_ansible.sh
- echo $IP_FROM_ANSIBLE
environment:
name: review/$CI_BUILD_REF_NAME
url: http://$IP_FROM_ANSIBLE
on_stop: "Stop Review"

编写上面的两个 shell 脚本作为练习留给读者。魔法发生在 Ansible“剧本”中,它实际上只是一个脚本,您可以在其中使用文件名“./out/run_file_generate_from_ansible.sh”“将变量导出到磁盘”。

你没有说清楚的是你需要在 Gitlab-CI 中使用该变量做什么,它在哪里结束,接下来会发生什么。所以在上面,我只是展示了一种可以通过临时磁盘文件“导出”IP 地址的方法。

您可以将该导出的值保存为工件并在其他阶段捕获它,因此如果您将它们全部放在名为 ./out< 的目录中,则此类“工件导出”可以在阶段之间传递 然后在 gitlab-ci.yml 中声明一个 artifacts 语句。

关于Gitlab CI Review Apps - 将部署脚本中的信息返回到 gitlab ci 环境变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41036151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com