Skip to content

Commit e0a98d3

Browse files
authored
Merge pull request CactuseSecurity#3611 from tpurschke/develop
adding fall-back for https://googlechromelabs.github.io
2 parents 64d64b5 + 4c687c2 commit e0a98d3

File tree

1 file changed

+46
-8
lines changed

1 file changed

+46
-8
lines changed

roles/lib/tasks/install_puppeteer.yml

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,56 @@
8383

8484
become: true
8585
environment: "{{ proxy_env }}"
86-
86+
8787
# 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) }}"
93120

121+
# Extract downloads + version from Stable
94122
- name: parse latest stable versions for chrome #and headless shell
95123
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."
98136

99137
- block:
100138
- name: install unzip

0 commit comments

Comments
 (0)