def audit(String url, Map params = [:]) { def reporter = params.reporter ? params.reporter : 'html' def username = params.username ? params.username : ''; def password = params.password ? params.password : ''; def standard = params.standard ? params.standard : 'WCAG2AA'; def includeWarnings = params.includeWarnings ? params.includeWarnings : false; def includeNotices = params.includeNotices ? params.includeNotices : false; def pa11yImage = buildDockerImage() def dockerArgs = """ -e PA11Y_REPORTER='${reporter}' -e PA11Y_URL='${url}' -e PA11Y_USERNAME='${username}' -e PA11Y_PASSWORD='${password}' -e PA11Y_STANDARD='${standard}' -e PA11Y_INCLUDE_WARNINGS='${includeWarnings}' -e PA11Y_INCLUDE_NOTICES='${includeNotices}' """ pa11yImage.inside(dockerArgs) { sh 'chown -R pa11y: ./' def report = sh( script: 'su pa11y - /usr/local/bin/run-audit', returnStdout: true ) return report } } def buildDockerImage() { dir ('.pa11y') { def resourceFiles = [ 'com/cadoles/pa11y/Dockerfile', 'com/cadoles/pa11y/patty.json.tmpl', 'com/cadoles/pa11y/run-audit.sh' ]; for (res in resourceFiles) { def fileContent = libraryResource res def fileName = res.substring(res.lastIndexOf("/")+1) writeFile file:fileName, text:fileContent } def safeJobName = URLDecoder.decode(env.JOB_NAME).toLowerCase().replace('/', '-').replace(' ', '-') def imageTag = "${safeJobName}-${env.BUILD_ID}" return docker.build("pa11y:${imageTag}", ".") } }