TMPF='/tmp/out.yml' # should be outside Jenkins WS to prevent data leakage
RC=0
+echo "Using $(yamllint --version)"
+
# Build a table header, using ';' as column sep
SUMMARY='PDF Verify Matrix;YAML Lint;'
for adapter in ${INSTALLER_ADAPTERS}; do
# Iterate all PDFs, check with each installer adapter, log results
while IFS= read -r lab_config; do
valid_yaml='OK'
+ echo -e "\n###################### ${lab_config} ######################\n"
echo -e "\n\nyamllint -s ${lab_config}"
if ! yamllint -s "${lab_config}"; then valid_yaml='FAIL'; fi
SUMMARY+="\n${lab_config#labs/};${valid_yaml};"
ENV.filters['ipaddr_index'] = ipaddr_index
ENV.filters['dpkg_arch'] = dpkg_arch
-# Run `eyaml decrypt` on the whole file, in case any PDF data is encrypted
+# Run `eyaml decrypt` on the whole file, but only if PDF data is encrypted
# Note: eyaml return code is 0 even if keys are not available
try:
- DICT = yaml.safe_load(check_output(['eyaml', 'decrypt', '-f', ARGS.yaml]))
+ if 'ENC[PKCS7' in open(ARGS.yaml).read():
+ DICT = yaml.safe_load(check_output(['eyaml', 'decrypt',
+ '-f', ARGS.yaml]))
except CalledProcessError as ex:
- logging.error('eyaml decryption failed!')
+ logging.error('eyaml decryption failed! Fallback to raw data.')
except OSError as ex:
- logging.warn('eyaml not found, skipping decryption')
+ logging.warn('eyaml not found, skipping decryption. Fallback to raw data.')
try:
DICT['details']
except (NameError, TypeError) as ex:
- logging.warn('PDF decryption skipped, fallback to using raw data.')
with open(ARGS.yaml) as _:
DICT = yaml.safe_load(_)