Skip to content

Commit 1e64cd6

Browse files
committed
ci: verify Ansible roles with ansible-lint
Fix #479
1 parent 90631a8 commit 1e64cd6

File tree

3 files changed

+38
-15
lines changed

3 files changed

+38
-15
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,8 @@ docker/mysql_backup_mystamps.sql.gz
3838

3939
# maven-wrapper
4040
.mvn/wrapper/maven-wrapper.jar
41+
42+
# @asm0dey uses molecule for role testing which generates .pyc files
43+
# and also creates molecule directory
44+
*.pyc
45+
molecule/

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ before_script:
2121
if [ "$TRAVIS_BRANCH" = 'prod' -a "$TRAVIS_PULL_REQUEST" = 'false' ]; then
2222
pip install --user ansible==2.1.1.0;
2323
fi;
24+
pip install --user ansible-lint;
2425
if [ "$TRAVIS_PULL_REQUEST" != 'false' ]; then
2526
gem install danger nokogiri --no-ri --no-rdoc;
2627
fi;

src/main/scripts/ci/check-build-and-verify.sh

+32-15
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ TEST_STATUS=
3232
CODENARC_STATUS=
3333
SPOTBUGS_STATUS=
3434
VERIFY_STATUS=
35+
ANSIBLE_LINT_STATUS=
3536

3637
DANGER_STATUS=skip
3738
if [ "${SPRING_PROFILES_ACTIVE:-}" = 'travis' ] && [ "${TRAVIS_PULL_REQUEST:-false}" != 'false' ]; then
@@ -66,6 +67,7 @@ if [ "$RUN_ONLY_INTEGRATION_TESTS" = 'no' ]; then
6667
AFFECTS_GROOVY_FILES="$(echo "$MODIFIED_FILES" | grep -q '\.groovy$' || echo 'no')"
6768
AFFECTS_PROPERTIES="$(echo "$MODIFIED_FILES" | grep -q '\.properties$' || echo 'no')"
6869
AFFECTS_LICENSE_HEADER="$(echo "$MODIFIED_FILES" | grep -q 'license_header\.txt$' || echo 'no')"
70+
AFFECTS_PLAYBOOKS="$(echo "$MODIFIED_FILES" | grep -Eq '(vagrant|deploy|bootstrap|/roles/.+)\.yml$' || echo 'no')"
6971

7072
if [ "$AFFECTS_POM_XML" = 'no' ]; then
7173
POM_STATUS=skip
@@ -97,7 +99,12 @@ if [ "$RUN_ONLY_INTEGRATION_TESTS" = 'no' ]; then
9799
fi
98100
[ "$AFFECTS_ROBOT_FILES" != 'no' ] || RFLINT_STATUS=skip
99101
[ "$AFFECTS_SHELL_FILES" != 'no' ] || SHELLCHECK_STATUS=skip
102+
103+
if [ "$AFFECTS_PLAYBOOKS" = 'no' ]; then
104+
ANSIBLE_LINT_STATUS=skip
105+
fi
100106
fi
107+
101108
echo 'INFO: Some checks could be skipped'
102109
else
103110
echo "INFO: Couldn't determine list of modified files."
@@ -218,6 +225,15 @@ if [ "$RUN_ONLY_INTEGRATION_TESTS" = 'no' ]; then
218225
>spotbugs.log 2>&1 || SPOTBUGS_STATUS=fail
219226
fi
220227
print_status "$SPOTBUGS_STATUS" 'Run SpotBugs'
228+
229+
if [ "$ANSIBLE_LINT_STATUS" != 'skip' ]; then
230+
ansible-lint \
231+
vagrant/provisioning/vagrant.yml \
232+
vagrant/provisioning/bootstrap.yml \
233+
src/main/scripts/ci/ansible/deploy.yml \
234+
>ansible_lint.log 2>&1 || ANSIBLE_LINT_STATUS=fail
235+
fi
236+
print_status "$ANSIBLE_LINT_STATUS" 'Run Ansible Lint'
221237
fi
222238

223239
mvn --batch-mode --activate-profiles frontend,native2ascii verify -Denforcer.skip=true -DskipUnitTests=true \
@@ -234,19 +250,20 @@ fi
234250
print_status "$DANGER_STATUS" 'Run danger'
235251

236252
if [ "$RUN_ONLY_INTEGRATION_TESTS" = 'no' ]; then
237-
[ "$CS_STATUS" = 'skip' ] || print_log cs.log 'Run CheckStyle'
238-
[ "$PMD_STATUS" = 'skip' ] || print_log pmd.log 'Run PMD'
239-
[ "$LICENSE_STATUS" = 'skip' ] || print_log license.log 'Check license headers'
240-
[ "$POM_STATUS" = 'skip' ] || print_log pom.log 'Check sorting of pom.xml'
241-
[ "$BOOTLINT_STATUS" = 'skip' ] || print_log bootlint.log 'Run bootlint'
242-
[ "$RFLINT_STATUS" = 'skip' ] || print_log rflint.log 'Run robot framework lint'
243-
[ "$SHELLCHECK_STATUS" = 'skip' ] || print_log shellcheck.log 'Run shellcheck'
244-
[ "$JASMINE_STATUS" = 'skip' ] || print_log jasmine.log 'Run JavaScript unit tests'
245-
[ "$HTML_STATUS" = 'skip' ] || print_log validator.log 'Run html5validator'
246-
[ "$ENFORCER_STATUS" = 'skip' ] || print_log enforcer.log 'Run maven-enforcer-plugin'
247-
[ "$TEST_STATUS" = 'skip' ] || print_log test.log 'Run unit tests'
248-
[ "$CODENARC_STATUS" = 'skip' ] || print_log codenarc.log 'Run CodeNarc'
249-
[ "$SPOTBUGS_STATUS" = 'skip' ] || print_log spotbugs.log 'Run SpotBugs'
253+
[ "$CS_STATUS" = 'skip' ] || print_log cs.log 'Run CheckStyle'
254+
[ "$PMD_STATUS" = 'skip' ] || print_log pmd.log 'Run PMD'
255+
[ "$LICENSE_STATUS" = 'skip' ] || print_log license.log 'Check license headers'
256+
[ "$POM_STATUS" = 'skip' ] || print_log pom.log 'Check sorting of pom.xml'
257+
[ "$BOOTLINT_STATUS" = 'skip' ] || print_log bootlint.log 'Run bootlint'
258+
[ "$RFLINT_STATUS" = 'skip' ] || print_log rflint.log 'Run robot framework lint'
259+
[ "$SHELLCHECK_STATUS" = 'skip' ] || print_log shellcheck.log 'Run shellcheck'
260+
[ "$JASMINE_STATUS" = 'skip' ] || print_log jasmine.log 'Run JavaScript unit tests'
261+
[ "$HTML_STATUS" = 'skip' ] || print_log validator.log 'Run html5validator'
262+
[ "$ENFORCER_STATUS" = 'skip' ] || print_log enforcer.log 'Run maven-enforcer-plugin'
263+
[ "$TEST_STATUS" = 'skip' ] || print_log test.log 'Run unit tests'
264+
[ "$CODENARC_STATUS" = 'skip' ] || print_log codenarc.log 'Run CodeNarc'
265+
[ "$SPOTBUGS_STATUS" = 'skip' ] || print_log spotbugs.log 'Run SpotBugs'
266+
[ "$ANSIBLE_LINT_STATUS" = 'skip' ] || print_log ansible_lint.log 'Run Ansible Lint'
250267
fi
251268

252269
print_log verify.log 'Run integration tests'
@@ -255,8 +272,8 @@ if [ "$DANGER_STATUS" != 'skip' ]; then
255272
print_log danger.log 'Run danger'
256273
fi
257274

258-
rm -f cs.log pmd.log license.log pom.log bootlint.log rflint.log shellcheck.log jasmine.log validator.log enforcer.log test.log codenarc.log spotbugs.log verify-raw.log verify.log danger.log
275+
rm -f cs.log pmd.log license.log pom.log bootlint.log rflint.log shellcheck.log jasmine.log validator.log enforcer.log test.log codenarc.log spotbugs.log verify-raw.log verify.log danger.log ansible_lint.log
259276

260-
if echo "$CS_STATUS$PMD_STATUS$LICENSE_STATUS$POM_STATUS$BOOTLINT_STATUS$RFLINT_STATUS$SHELLCHECK_STATUS$JASMINE_STATUS$HTML_STATUS$ENFORCER_STATUS$TEST_STATUS$CODENARC_STATUS$SPOTBUGS_STATUS$VERIFY_STATUS$DANGER_STATUS" | grep -Fqs 'fail'; then
277+
if echo "$CS_STATUS$PMD_STATUS$LICENSE_STATUS$POM_STATUS$BOOTLINT_STATUS$RFLINT_STATUS$SHELLCHECK_STATUS$JASMINE_STATUS$HTML_STATUS$ENFORCER_STATUS$TEST_STATUS$CODENARC_STATUS$SPOTBUGS_STATUS$VERIFY_STATUS$DANGER_STATUS$ANSIBLE_LINT_STATUS" | grep -Fqs 'fail'; then
261278
exit 1
262279
fi

0 commit comments

Comments
 (0)