在 YAML 中声明和使用变量 (Percy.io)

Declare and use variable in YAML (Percy.io)

您好,我有一个如下所示的 YAML 文件 -

- name: Name 1
  url: http://localhost:8080/page1
- name: Name 2
  url: http://localhost:8080/page2
- name: Name 3
  url: http://localhost:8080/page3

如您所见,http://localhost:8080/url 属性 的公共部分。 有没有办法声明一个像 hostname 这样的变量并在整个文件中重用它?

我查看了 this 文档并尝试了以下方法,但它不起作用 -

- hostname: "{{http://localhost:8080}}"
- name: Name 1
  url: {{hostname}}/page1
- name: Name 2
  url: {{hostname}}/page2
- name: Name 3
  url: {{hostname}}/page3

但这不起作用。求助!

例如剧本

- hosts: localhost
  vars:
    hostname: "http://localhost:8080"
    l1:
      - name: Name 1
        url: "{{ hostname }}/page1"
      - name: Name 2
        url: "{{ hostname }}/page2"
      - name: Name 3
        url: "{{ hostname }}/page3"
  tasks:
    - debug:
        var: l1

给予

ok: [localhost] => 
  l1:
  - name: Name 1
    url: http://localhost:8080/page1
  - name: Name 2
    url: http://localhost:8080/page2
  - name: Name 3
    url: http://localhost:8080/page3

当您将列表项放入文件时,例如

shell> cat name-url.yml
- name: Name 1
  url: "{{ hostname }}/page1"
- name: Name 2
  url: "{{ hostname }}/page2"
- name: Name 3
  url: "{{ hostname }}/page3"

使用 lookup 插件 模板 并将 YAML 字符串转换为列表,例如下面的剧本给出了相同的结果

- hosts: localhost
  vars:
    hostname: "http://localhost:8080"
  tasks:
    - set_fact:
        l1: "{{ lookup('template', 'name-url.yml')|from_yaml }}"
    - debug:
        var: l1

我想提出这个建议,你看起来像是在为你正在快照的站点的基础 URL 做这个。您可以将 --base-url 标志传递给 snapshot 命令:

$ npx percy snapshot --base-url http://localhost:8080 snapshots.yml

snapshots.yml 可能是:

- name: Name 1
  url: /page1
- name: Name 2
  url: /page2
- name: Name 3
  url: /page3

## or

- url: /page1
- url: /page2
- url: /page3

Relevant Percy CLI PR