diff options
-rw-r--r-- | jjb/ci-AGL-verify/ci-platform-jjb.yaml | 11 | ||||
-rw-r--r-- | jjb/ci-apps-verify/ci-apps-jjb.yaml | 4 | ||||
-rw-r--r-- | jjb/common/include-agl-lava-jobs-submit.sh | 99 | ||||
-rw-r--r-- | jjb/common/include-agl-local-conf-fstypes.sh | 4 | ||||
-rw-r--r-- | jjb/common/include-agl-repo.sh | 6 | ||||
-rw-r--r-- | jjb/common/include-agl-run-test-prepare.sh | 35 | ||||
-rw-r--r-- | jjb/common/include-agl-run-test-rsync-changeid.sh | 7 | ||||
-rw-r--r-- | jjb/common/include-agl-run-test-short-release.sh | 15 | ||||
-rw-r--r-- | jjb/common/include-agl-run-test-short.sh | 95 | ||||
-rw-r--r-- | jjb/common/include-apps-build-app.sh | 25 | ||||
-rw-r--r-- | jjb/common/include-apps-rsync-download-changeid.sh | 11 | ||||
-rw-r--r-- | jjb/test-lava/test-lava.yaml | 2 | ||||
-rw-r--r-- | packer/provision/agl_dependencies.sh | 4 |
13 files changed, 230 insertions, 88 deletions
diff --git a/jjb/ci-AGL-verify/ci-platform-jjb.yaml b/jjb/ci-AGL-verify/ci-platform-jjb.yaml index e4eda721..5d7e02a4 100644 --- a/jjb/ci-AGL-verify/ci-platform-jjb.yaml +++ b/jjb/ci-AGL-verify/ci-platform-jjb.yaml @@ -6,6 +6,7 @@ - raspberrypi3 - intel-corei7-64 - dra7xx-evm + - m3ulcb-nogfx - qemux86-64 project: - meta-agl @@ -109,6 +110,10 @@ current-parameters: true abort-all-job: true kill-phase-on: FAILURE + - name: 'ci-platform-{project}-verify-CIB-m3ulcb-nogfx' + current-parameters: true + abort-all-job: true + kill-phase-on: FAILURE - multijob: name: CIB-{project}-finish-success condition: SUCCESSFUL @@ -149,6 +154,10 @@ current-parameters: true abort-all-job: true kill-phase-on: FAILURE + - name: 'ci-platform-{project}-verify-CIBT-m3ulcb-nogfx' + current-parameters: true + abort-all-job: true + kill-phase-on: FAILURE - multijob: name: 'CIBT-{project}-finish-success' condition: SUCCESSFUL @@ -488,6 +497,8 @@ - ../common/include-agl-run-test-prepare.sh - ../common/include-agl-lava-labs-prepare.sh - ../common/include-agl-run-test-short.sh + - ../common/include-agl-lava-jobs-submit.sh + publishers: - naginator: max-failed-builds: 2 diff --git a/jjb/ci-apps-verify/ci-apps-jjb.yaml b/jjb/ci-apps-verify/ci-apps-jjb.yaml index 3e8e2f8a..2fbebf3a 100644 --- a/jjb/ci-apps-verify/ci-apps-jjb.yaml +++ b/jjb/ci-apps-verify/ci-apps-jjb.yaml @@ -11,6 +11,8 @@ #= raspberrypi3 #= dra7xx-evm project: + - agl-service-bluetooth + - agl-service-wifi - controls - dashboard - home @@ -392,7 +394,9 @@ - ../common/include-agl-repo.sh - ../common/include-agl-select.sh - ../common/include-agl-run-test-prepare.sh + - ../common/include-agl-lava-labs-prepare.sh - ../common/include-agl-run-test-short.sh + - ../common/include-agl-lava-jobs-submit.sh publishers: - naginator: diff --git a/jjb/common/include-agl-lava-jobs-submit.sh b/jjb/common/include-agl-lava-jobs-submit.sh new file mode 100644 index 00000000..8de2c78a --- /dev/null +++ b/jjb/common/include-agl-lava-jobs-submit.sh @@ -0,0 +1,99 @@ +# (c) 2017 Kevin Hilman <khilman@baylibre.com> +# License GPLv2 +# +# Submit LAVA YAML job file (default testjob.yaml) to first available LAVA lab +# with matching device-type +# +JOB_FILE=${1:-testjob.yaml} + +if [ ! -e $JOB_FILE ]; then + echo "ERROR: LAVA job file $JOB_FILE not present." + exit 1 +fi +JOB_BASE=$(basename $JOB_FILE .yaml) + +# find device_type from job file +line=$(grep ^device_type: $JOB_FILE | tr -d '[:space:]') +device_type=${line/device_type:/} +echo "Found device_type $device_type in LAVA job $JOB_FILE" + +# iterate over available labs +for lab in "${!labs[@]}"; do + val=${labs[$lab]} + OFS=${IFS} + IFS=';' + arr=(${labs[$lab]}) + IFS=${OFS} + + url=${arr[0]} + user=${arr[1]} + + # LAVA URL with username + full_url=${url/:\/\//:\/\/${user}\@} + + echo -n "Checking for $device_type at $full_url... " + line=$(lava-tool devices-list $full_url |grep $device_type | tr -d '[:space:]') + if [ -z "$line" ]; then + echo "not found." + continue + fi + IFS='|' + arr=($line) + device_status=${arr[2]} + IFS=${OFS} + + # device is only available if "idle" or "running" + device_available=0 + if [ x"$device_status" = x"idle" ]; then + device_available=1 + elif [ x"$device_status" = x"running" ]; then + device_available=1; + fi + + if [ $device_available = 0 ]; then + echo " Not Available. Status: $device_status" + continue + else + echo " Found and available. Status: $device_status" + fi + + # + # LAVA job submit, get job ID and status from lava-tool output + # + JOB_STATUS="${JOB_BASE}_${lab}.status" + lava-tool submit-job --block $full_url $JOB_FILE |tee $JOB_STATUS + + IFS=':' + line=$(grep "job id" $JOB_STATUS | tr -d '[:space:]') + arr=($line) + job_id=${arr[1]} + line=$(grep "Job Status:" $JOB_STATUS | tr -d '[:space:]') + arr=($line) + status=${arr[1]} + IFS=${OFS} + + echo "LAVA job $job_id completed with status: $status" + + echo "####" + echo "#### Start: Output from LAVA job $job_id ####" + echo "####" + + JOB_OUTPUT="${JOB_BASE}_output.yaml" + JOB_LOG="${JOB_BASE}_output.log" + curl -s -o $JOB_OUTPUT $full_url/scheduler/job/$job_id/log_file/plain + cat $JOB_OUTPUT | grep '"target",' | sed -e 's#- {"dt".*"lvl".*"msg":."##g' -e 's#"}$##g' | tee $JOB_LOG + + echo "####" + echo "#### End: Output from LAVA job $job_id ####" + echo "####" + + # after one successful submit, we're done + if [ x"$status" = x"Complete" ]; then + exit 0 + else + continue + fi +done + +# if we get here, none of the labs had a successful completion +exit 1 diff --git a/jjb/common/include-agl-local-conf-fstypes.sh b/jjb/common/include-agl-local-conf-fstypes.sh index d22d8bff..c48cd81b 100644 --- a/jjb/common/include-agl-local-conf-fstypes.sh +++ b/jjb/common/include-agl-local-conf-fstypes.sh @@ -5,6 +5,7 @@ ## Change FSTYPES to sane values ################################################################################ +# "old" echo 'IMAGE_FSTYPES_remove = "ext4"' >> conf/local.conf echo 'IMAGE_FSTYPES_remove = "ext3"' >> conf/local.conf echo 'IMAGE_FSTYPES_remove = "tar.bz2"' >> conf/local.conf @@ -12,3 +13,6 @@ echo 'IMAGE_FSTYPES_remove = "tar.gz"' >> conf/local.conf echo 'IMAGE_FSTYPES_remove = "iso"' >> conf/local.conf echo 'IMAGE_FSTYPES_remove = "hddimg"' >> conf/local.conf echo 'IMAGE_FSTYPES += "tar.xz ext4.xz "' >> conf/local.conf + +# "new" +echo 'AGL_DEFAULT_IMAGE_FSTYPES := "ext4.xz tar.xz"' >> conf/local.conf diff --git a/jjb/common/include-agl-repo.sh b/jjb/common/include-agl-repo.sh index fee52137..d7411515 100644 --- a/jjb/common/include-agl-repo.sh +++ b/jjb/common/include-agl-repo.sh @@ -19,9 +19,13 @@ cd repoclone export REPODIR=`pwd` if test x"" = x"${RELEASE_VERSION}" -a x"" = x"${RELEASE_BRANCH}" ; then - repo init --reference=/opt/AGL/preclone -q -b $TARGETBRANCH -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + repo init --reference=/opt/AGL/preclone -q -b $TARGETBRANCH -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo else + if test x"AGL/meta-renesas-rcar-gen3" = x"${TARGETPROJECT}" ; then + repo init --reference=/opt/AGL/preclone -q -b master -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + else repo init --reference=/opt/AGL/preclone -q -b $TARGETBRANCH -m ${RELEASE_BRANCH}_${RELEASE_VERSION}.xml -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo + fi fi diff --git a/jjb/common/include-agl-run-test-prepare.sh b/jjb/common/include-agl-run-test-prepare.sh index 36f5a7a4..00d67882 100644 --- a/jjb/common/include-agl-run-test-prepare.sh +++ b/jjb/common/include-agl-run-test-prepare.sh @@ -4,7 +4,7 @@ ################################################################################ ## Run SHORT CI test ################################################################################ -#set -x +set -x #ls -alh #pwd @@ -33,7 +33,6 @@ if [ ! -f meta-agl/templates/machine/${MACHINE}/test/hwtest.short.enable ] ; the echo "Add meta-agl/templates/machine/${MACHINE}/test/hwtest.enable.short to enable" else eval export ENVFILE=meta-agl/templates/machine/${MACHINE}/test/hwtest.short.environment - eval export TESTJOBFILE=meta-agl/templates/machine/${MACHINE}/test/testjob_short.yaml fi if [ ! -f $ENVFILE ] ; then @@ -42,30 +41,28 @@ if [ ! -f $ENVFILE ] ; then exit 1 fi -if [ ! -e $TESTJOBFILE ] ; then - echo "No short HW test environment file available for ${MACHINE}." - echo "Add ${TESTJOBFILE} to enable." - exit 1 -fi - # some defaults -export DEVICE_TYPE=raspberrypi3-uboot -export DEVICE_NAME=raspberrypi3 -export DEVICE_DTB=uImage-bcm2710-rpi-3-b.dtb -export DEVICE_KERNEL=uImage -export DEVICE_INITRAMFS=initramfs-netboot-image-raspberrypi3.ext4 -export DEVICE_NBDROOT=agl-demo-platform-raspberrypi3.ext4 -export DEVICE_NBDROOT_COMPRESSION=none -export DEVICE_BOOT_METHOD=u-boot -export DEVICE_BOOT_TYPE=bootm +#export DEVICE_ARCH=arm +#export DEVICE_TYPE=raspberrypi3-uboot +#export DEVICE_NAME=raspberrypi3 +#export DEVICE_DTB=uImage-bcm2710-rpi-3-b.dtb +#export DEVICE_KERNEL=uImage +#export DEVICE_INITRAMFS=initramfs-netboot-image-raspberrypi3.ext4 +#export DEVICE_INITRAMFS_COMPRESSION=false +#export DEVICE_NBDROOT=agl-demo-platform-raspberrypi3.ext4 +#export DEVICE_NBDROOT_COMPRESSION=false +#export DEVICE_BOOT_METHOD=u-boot +#export DEVICE_BOOT_TYPE=bootm export DEVICE_URL_PREFIX='https://download.automotivelinux.org/AGL/upload/ci/' # import device defaults. Format 'a=b' -for i in DEVICE_TYPE DEVICE_NAME DEVICE_DTB DEVICE_KERNEL DEVICE_INITRAMFS DEVICE_NBDROOT DEVICE_NBDROOT_COMPRESSION DEVICE_BOOT_METHOD DEVICE_BOOT_TYPE; do - if grep -q $i $ENVFILE ; then +for i in DEVICE_ARCH DEVICE_TYPE DEVICE_NAME DEVICE_DTB DEVICE_KERNEL DEVICE_INITRAMFS DEVICE_INITRAMFS_COMPRESSION DEVICE_NBDROOT DEVICE_NBDROOT_COMPRESSION DEVICE_BOOT_METHOD DEVICE_BOOT_TYPE DEVICE_URL_PREFIX DEVICE_QEMU_ARGS DEVICE_KERNEL_CMDLINE; do + if grep -q ^$i $ENVFILE ; then X=$(grep $i $ENVFILE | sed -e "s#${i}=##g" -e "s#;.*##g") eval export ${i}=${X} + else + echo "Variable ${i} missing in environment file $ENVFILE" fi done diff --git a/jjb/common/include-agl-run-test-rsync-changeid.sh b/jjb/common/include-agl-run-test-rsync-changeid.sh index 64165553..be3f68bb 100644 --- a/jjb/common/include-agl-run-test-rsync-changeid.sh +++ b/jjb/common/include-agl-run-test-rsync-changeid.sh @@ -25,9 +25,12 @@ cd output pwd ls -alhR tmp/deploy/images -# copy files to $DEST +# copy files to $DEST (only if variable is non-empty) for i in DEVICE_DTB DEVICE_KERNEL DEVICE_INITRAMFS DEVICE_NBDROOT; do - eval cp -avL tmp/deploy/images/${TARGETMACHINE}/$(echo "$"${i}) ${DEST}/ + FILE=$(eval echo \$${i}) + if [ -n "$FILE" ]; then + cp -avL tmp/deploy/images/${TARGETMACHINE}/${FILE} ${DEST}/ + fi done tree $DEST diff --git a/jjb/common/include-agl-run-test-short-release.sh b/jjb/common/include-agl-run-test-short-release.sh index f09dca8c..8a262638 100644 --- a/jjb/common/include-agl-run-test-short-release.sh +++ b/jjb/common/include-agl-run-test-short-release.sh @@ -11,15 +11,6 @@ echo "## ${MACHINE} ##" cd $REPODIR -echo "## $TESTJOBFILE ##" - -if [ -e $TESTJOBFILE ] ; then - echo "Using $TESTJOBFILE ..." - cp $TESTJOBFILE testjob.yaml -else - echo "!! NO TESTJOBFILE - trying to continue with a default !!" -fi - cat <<EOF > testjob.yaml # Your first LAVA JOB definition for a $MACHINE board device_type: @REPLACE_DEVICE_TYPE@ @@ -43,7 +34,7 @@ visibility: public actions: - deploy: timeout: - minutes: 10 + minutes: 15 to: nbd dtb: url: '@REPLACE_URL_PREFIX@/@REPLACE_DTB@' @@ -110,6 +101,6 @@ else # cleanup #ssh -o StrictHostKeyChecking=no jenkins-slave@10.30.72.8 rm -rf /srv/download/AGL/upload/ci/${CHID}/ - - exit 1 + # exit 1 + exit 0 fi diff --git a/jjb/common/include-agl-run-test-short.sh b/jjb/common/include-agl-run-test-short.sh index 1ffc6f45..da12802a 100644 --- a/jjb/common/include-agl-run-test-short.sh +++ b/jjb/common/include-agl-run-test-short.sh @@ -6,29 +6,16 @@ ################################################################################ -#set -x +set -x echo "## ${MACHINE} ##" cd $REPODIR -echo "## $TESTJOBFILE ##" - -if [ -e $TESTJOBFILE ] ; then - echo "Using $TESTJOBFILE ..." - cp $TESTJOBFILE testjob.yaml -else - echo "!! NO TESTJOBFILE - trying to continue with a default !!" -fi - cat <<EOF > testjob.yaml # Your first LAVA JOB definition for a $MACHINE board device_type: @REPLACE_DEVICE_TYPE@ job_name: AGL-short-smoke -protocols: - lava-xnbd: - port: auto - timeouts: job: minutes: 30 @@ -38,12 +25,20 @@ timeouts: minutes: 5 priority: medium visibility: public +EOF + +if [ ${DEVICE_BOOT_METHOD} = "u-boot" ]; then +cat <<EOF >> testjob.yaml + +protocols: + lava-xnbd: + port: auto # ACTION_BLOCK actions: - deploy: timeout: - minutes: 10 + minutes: 15 to: nbd dtb: url: '@REPLACE_URL_PREFIX@/@REPLACE_DTB@' @@ -60,6 +55,8 @@ actions: # BOOT_BLOCK - boot: + timeout: + minutes: 10 method: @REPLACE_BOOT_METHOD@ commands: nbd type: @REPLACE_BOOT_TYPE@ @@ -69,47 +66,59 @@ actions: username: root EOF +fi + +if [ ${DEVICE_BOOT_METHOD} = "qemu" ]; then +cat <<EOF >>testjob.yaml +context: + no_kvm: false + arch: @REPLACE_DEVICE_ARCH@ + extra_options: [@REPLACE_QEMU_ARGS@] + +actions: +- deploy: + timeout: + minutes: 15 + to: tmpfs + os: oe + images: + kernel: + image_arg: '-kernel {kernel} -append @REPLACE_KERNEL_CMDLINE@' + url: '@REPLACE_URL_PREFIX@/@REPLACE_KERNEL@' + ramdisk: + image_arg: '-drive format=raw,file={ramdisk}' + url: '@REPLACE_URL_PREFIX@/@REPLACE_INITRAMFS@' + compression: @REPLACE_INITRAMFS_COMPRESSION@ + +- boot: + timeout: + minutes: 10 + method: @REPLACE_BOOT_METHOD@ + media: tmpfs + prompts: ["root@@REPLACE_MACHINE@:~"] + auto_login: + login_prompt: "login:" + username: root + +EOF +fi CHID=${GERRIT_CHANGE_NUMBER}/${GERRIT_PATCHSET_NUMBER}/${MACHINE} # REPLACE_DEVICE_TYPE +sed -i -e "s#@REPLACE_DEVICE_ARCH@#${DEVICE_ARCH}#g" testjob.yaml sed -i -e "s#@REPLACE_DEVICE_TYPE@#${DEVICE_TYPE}#g" testjob.yaml sed -i -e "s#@REPLACE_DTB@#${CHID}/${DEVICE_DTB}#g" testjob.yaml sed -i -e "s#@REPLACE_KERNEL@#${CHID}/${DEVICE_KERNEL}#g" testjob.yaml sed -i -e "s#@REPLACE_INITRAMFS@#${CHID}/${DEVICE_INITRAMFS}#g" testjob.yaml +sed -i -e "s#@REPLACE_INITRAMFS_COMPRESSION@#${DEVICE_INITRAMFS_COMPRESSION}#g" testjob.yaml sed -i -e "s#@REPLACE_NBDROOT@#${CHID}/${DEVICE_NBDROOT}#g" testjob.yaml sed -i -e "s#@REPLACE_NBDROOT_COMPRESSION@#${DEVICE_NBDROOT_COMPRESSION}#g" testjob.yaml sed -i -e "s#@REPLACE_BOOT_METHOD@#${DEVICE_BOOT_METHOD}#g" testjob.yaml sed -i -e "s#@REPLACE_BOOT_TYPE@#${DEVICE_BOOT_TYPE}#g" testjob.yaml sed -i -e "s#@REPLACE_MACHINE@#${DEVICE_NAME}#g" testjob.yaml sed -i -e "s#@REPLACE_URL_PREFIX@#${DEVICE_URL_PREFIX}#g" testjob.yaml +sed -i -e "s#@REPLACE_QEMU_ARGS@#${DEVICE_QEMU_ARGS}#g" testjob.yaml +sed -i -e "s#@REPLACE_KERNEL_CMDLINE@#${DEVICE_KERNEL_CMDLINE}#g" testjob.yaml cat testjob.yaml -lava-tool submit-job --block https://agl-jenkins-user@lava.automotivelinux.org testjob.yaml | tee .myjob - -MYJOB=`cat .myjob | grep "submitted as job" | sed -e "s#submitted as job id: ##g"` - -echo "#### JOBID: $MYJOB #####" - -( lava-tool job-status https://agl-jenkins-user@lava.automotivelinux.org $MYJOB | tee .status ) || true -STATUS=`grep "Job Status:" .status | sed -e "s#Job Status: ##g"` - -if [ x"Complete" = x"$STATUS" ] ; then - echo "YAY! $STATUS" - curl -o plain_output.yaml https://lava.automotivelinux.org/scheduler/job/$MYJOB/log_file/plain - cat plain_output.yaml | grep '"target",' | sed -e 's#- {"dt".*"lvl".*"msg":."##g' -e 's#"}$##g' - - # cleanup - #ssh -o StrictHostKeyChecking=no jenkins-slave@10.30.72.8 rm -rf /srv/download/AGL/upload/ci/${CHID}/ - - exit 0 -else - echo "Nooooooooo! $STATUS" - curl -o plain_output.yaml https://lava.automotivelinux.org/scheduler/job/$MYJOB/log_file/plain - cat plain_output.yaml | grep '"target",' | sed -e 's#- {"dt".*"lvl".*"msg":."##g' -e 's#"}$##g' - - # cleanup - #ssh -o StrictHostKeyChecking=no jenkins-slave@10.30.72.8 rm -rf /srv/download/AGL/upload/ci/${CHID}/ - - exit 1 -fi diff --git a/jjb/common/include-apps-build-app.sh b/jjb/common/include-apps-build-app.sh index f46c7f8d..694dcf7d 100644 --- a/jjb/common/include-apps-build-app.sh +++ b/jjb/common/include-apps-build-app.sh @@ -46,7 +46,7 @@ if [[ ! x"yes" = x"$HANDLED" ]] && $(echo "$TARGETPROJECT" | grep -q "apps/"); t # clone git rm -rf ${MYPROJECT} - git clone https://${GERRIT_HOST}/gerrit/${GERRIT_PROJECT}.git + git clone --recursive https://${GERRIT_HOST}/gerrit/${GERRIT_PROJECT}.git pushd ${MYPROJECT} git log -1 --pretty=oneline if test x"" != x"${TARGETREFSPEC}" ; then @@ -66,14 +66,23 @@ if [[ ! x"yes" = x"$HANDLED" ]] && $(echo "$TARGETPROJECT" | grep -q "apps/"); t git log -1 --pretty=oneline # Fixme: use aglbuild script - if test -f Makefile ; then - make - make package + set -x + export DONE=0 + if test x"0" = x"$DONE" -a -f conf.d/autobuild/agl/autobuild ; then + mkdir -p $(pwd)/package/ + conf.d/autobuild/agl/autobuild package DEST=$(pwd)/package/ + export DONE=1 fi - if test -f ${MYPROJECT}.pro; then - qmake - make - make package + if test x"0" = x"$DONE" -a -f Makefile ; then + make + make package + export DONE=1 + fi + if test x"0" = x"$DONE" -a -f ${MYPROJECT}.pro; then + qmake + make + make package + export DONE=1 fi popd diff --git a/jjb/common/include-apps-rsync-download-changeid.sh b/jjb/common/include-apps-rsync-download-changeid.sh index d6e9f8a3..5feaeb13 100644 --- a/jjb/common/include-apps-rsync-download-changeid.sh +++ b/jjb/common/include-apps-rsync-download-changeid.sh @@ -3,9 +3,9 @@ #set -x set -e -echo "\n\n\n" +echo -e "\n\n\n" echo "#########################################" -echo "\n\n\n" +echo -e "\n\n\n" export RSYNCDST="/srv/download/AGL/upload/ci/${GERRIT_CHANGE_NUMBER}/${GERRIT_PATCHSET_NUMBER}" @@ -18,8 +18,13 @@ mkdir -p UPLOAD/${TARGETARCH} export DEST=$(pwd)/UPLOAD/${TARGETARCH} pushd ${MYPROJECT} +pwd + +ls -alh + ls -ls package + +ls package || true cp package/*.wgt $DEST ls -alh $DEST diff --git a/jjb/test-lava/test-lava.yaml b/jjb/test-lava/test-lava.yaml index 4f0a20c0..31935843 100644 --- a/jjb/test-lava/test-lava.yaml +++ b/jjb/test-lava/test-lava.yaml @@ -78,4 +78,6 @@ - ../common/include-agl-bitbake-image.sh - ../common/include-agl-run-test-prepare.sh - ../common/include-agl-run-test-rsync-changeid.sh + - ../common/include-agl-lava-labs-prepare.sh - ../common/include-agl-run-test-short.sh + - ../common/include-agl-lava-jobs-submit.sh diff --git a/packer/provision/agl_dependencies.sh b/packer/provision/agl_dependencies.sh index 3516a022..efb14e2c 100644 --- a/packer/provision/agl_dependencies.sh +++ b/packer/provision/agl_dependencies.sh @@ -89,6 +89,10 @@ npm install ### hope that is enough +# ruby markdown linter +sudo gem install mdl +# python markdown linter +sudo pip install mdlint exit 0 |