|
83 | 83 |
|
84 | 84 | become: true |
85 | 85 | environment: "{{ proxy_env }}" |
86 | | - |
| 86 | + |
87 | 87 | # get google chrome for pdf generation |
88 | | -- name: get last known good versions of chrome to download |
89 | | - uri: |
90 | | - url: https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json |
91 | | - register: chrome_versions |
92 | | - become: false |
| 88 | +- block: |
| 89 | + - name: get last known good versions (primary) |
| 90 | + uri: |
| 91 | + url: https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json |
| 92 | + return_content: true |
| 93 | + register: chrome_versions |
| 94 | + become: false |
| 95 | + |
| 96 | + rescue: |
| 97 | + - name: fallback - get last known good versions (raw.githubusercontent.com) |
| 98 | + uri: |
| 99 | + url: https://raw.githubusercontent.com/GoogleChromeLabs/chrome-for-testing/main/data/last-known-good-versions-with-downloads.json |
| 100 | + return_content: true |
| 101 | + headers: |
| 102 | + Accept: application/json |
| 103 | + register: chrome_versions |
| 104 | + become: false |
| 105 | + |
| 106 | +# Parse once, regardless of Content-Type |
| 107 | +- name: normalize/parse JSON response |
| 108 | + set_fact: |
| 109 | + chrome_versions_parsed: >- |
| 110 | + {{ |
| 111 | + chrome_versions.json |
| 112 | + if (chrome_versions.json is defined) |
| 113 | + else (chrome_versions.content | trim | from_json) |
| 114 | + }} |
| 115 | +
|
| 116 | +# Pick the Stable channel (some users accidentally use 'stable', so be flexible) |
| 117 | +- name: select Stable channel |
| 118 | + set_fact: |
| 119 | + cft_stable: "{{ chrome_versions_parsed.channels.Stable | default(chrome_versions_parsed.channels.stable) }}" |
93 | 120 |
|
| 121 | +# Extract downloads + version from Stable |
94 | 122 | - name: parse latest stable versions for chrome #and headless shell |
95 | 123 | set_fact: |
96 | | - stable_chrome_versions: "{{ chrome_versions['json']['channels']['Stable']['downloads'] }}" |
97 | | - chrome_dest: "/usr/local/fworch/bin/Chrome/Linux-{{ chrome_versions['json']['channels']['Stable']['version'] }}" |
| 124 | + stable_chrome_versions: "{{ cft_stable.downloads }}" |
| 125 | + chrome_dest: "/usr/local/fworch/bin/Chrome/Linux-{{ cft_stable.version }}" |
| 126 | + |
| 127 | +# (Optional) sanity checks to fail early with a clear message |
| 128 | +- name: validate parsed data |
| 129 | + assert: |
| 130 | + that: |
| 131 | + - chrome_versions_parsed is mapping |
| 132 | + - cft_stable is mapping |
| 133 | + - cft_stable.version is defined |
| 134 | + - cft_stable.downloads is defined |
| 135 | + fail_msg: "Failed to parse Chrome for Testing JSON or locate the Stable channel." |
98 | 136 |
|
99 | 137 | - block: |
100 | 138 | - name: install unzip |
|
0 commit comments