Тема: CI в Gitlab и проверка AWS Cloud Formation json файлов

Понадобилось мне тут сделать праверочку для json файлов по которым стартует Cloud Formation в AWS. Поскольку все лежит в Git'e то он подойдет идеально. Я не стал сильно заморачиваться, можно и по красивее, но так как это для себя любимого, то пойдет...

.gitlab-ci.yml

variables:
  GIT_SSL_NO_VERIFY: "true"

stages:
  - Test JSON
  - Test CloudFormation

test:jsonlint:
  stage: Test JSON
  image: python:latest

  before_script:
    - pip install demjson

  script:
    - find ./ -name '*.json' | awk '{print "echo \"-------------------------------------------------\"; python .ci/jsonlint-py -S "$1}' | sh

test:cfn-check:
  stage: Test CloudFormation
  image: node:latest

  before_script:
    - npm install -g cfn-check
    - ln -s /usr/bin/nodejs /usr/bin/node

  script:
    - find ./ -name '*.json' | awk '{print "echo \"-------------------------------------------------\"; bash .ci/cfn-check-wrapper.sh "$1}' | sh

.ci/cfn-check-wrapper.sh

#!/bin/bash

OUTPUT=`cfn-check -c $1`
EXITCODE=$?

if [ $EXITCODE -eq 0 ]; then
    echo "$1 ok"
else
    echo "$1 fail"
    echo "$OUTPUT"
fi

exit $EXITCODE

.ci/jsonlint-py

#! /usr/bin/python
# -*- coding: utf-8 -*-
r"A JSON syntax validator and formatter tool. Requires demjson module."

__author__ = "Deron Meranda <http://deron.meranda.us/>"
__homepage__ = "http://deron.meranda.us/python/demjson/"
__date__ = "2014-12-22"
__version__ = "2.2.4"
__credits__ = "Copyright (c) 2006-2015 Deron E. Meranda <http://deron.meranda.us/>"

import sys

try:
    import demjson
except ImportError:
    sys.stderr.write("Can not import the demjson Python module.\n")
    sys.stderr.write("Try running:  pip install demjson\n")
    sys.exit(1)


if __name__ == '__main__':
    lint = demjson.jsonlint( program_name=sys.argv[0] )
    rc = lint.main( sys.argv[1:] )
    sys.exit(rc)

Что происходит: в момент слияния запросов гит стартует докер контейнер и в нем инсталлирует все что надо для проверки. Два цикла, в первом просто проверяем json на правильность и второй, проверяем на соответствие стандартам cloud formation'а. Можно еще и онлайн проверку добавить, но долго ждать.

Post's attachments

git_ci_example.PNG
git_ci_example.PNG 36.31 kb, 1 downloads since 2017-07-03 

You don't have the permssions to download the attachments of this post.