commit 8db8758970310bf08ee08d95f792cf6c0ac40d1c Author: Arne Teuke Date: Thu Jul 20 14:31:19 2017 +0100 recommitting to see if git can be fixed diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c49b39a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +# .gitignore for cd_nagios +.yardoc +Gemfile.lock +FileList diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..f1c0ec8 --- /dev/null +++ b/Gemfile @@ -0,0 +1,22 @@ +source ENV['GEM_SOURCE'] || 'https://rubygems.org' + +puppetversion = ENV.key?('PUPPET_VERSION') ? ENV['PUPPET_VERSION'] : ['>= 3.3'] +gem 'metadata-json-lint' +gem 'puppet', puppetversion +gem 'puppetlabs_spec_helper', '>= 1.0.0' +gem 'puppet-lint', '>= 1.0.0' +gem 'facter', '>= 1.7.0' +gem 'rspec-puppet' +gem 'puppet-strings' +gem 'rake' +gem 'semantic_puppet' +gem 'rgen' + +# rspec must be v2 for ruby 1.8.7 +if RUBY_VERSION >= '1.8.7' && RUBY_VERSION < '1.9' + gem 'rspec', '~> 2.0' + gem 'rake', '~> 10.0' +else + # rubocop requires ruby >= 1.9 + gem 'rubocop' +end diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..e88dff1 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,242 @@ +pipeline { + agent { + label 'puppet' + } + + stages { + + stage('pulling master before adding files') { + steps { + sshagent(['0c22dc63-2ae0-4ad5-98e0-65aa0f0f411g']) { + sh '''git config user.name "Jenkins Server" + git config user.email jenkins@confdroid.com + git pull origin master + git checkout -b jenkins ''' + } + } + } + + stage('install required gems') { + steps { + sh 'bundle install' + } + } + + stage('puppet-lint tests') { + steps { + sh '''find . -iname *.pp -exec puppet-lint \\ + --no-class_inherits_from_params_class-check \\ + --no-variable_scope-check \\ + --no-80chars-check \\ + --no-arrow_alignment-check \\ + --no-autoloader_layout-check \\ + --log-format "%{path}:%{line}:%{check}:%{KIND}:%{message}" {} \\;''' + } + } + + stage('puppet parser test') { + steps { + sh '''for file in $(find . -iname \'*.pp\'); do + puppet parser validate --color false --render-as s --modulepath=modules $file || exit 1; + done;''' + } + } + + stage('Puppet ERB template test') { + steps{ + sh '''for file in $(find . -iname \'*.erb\'); + do erb -P -x -T "-" $file | ruby -c || exit 1; + done;''' + } + } + + stage('compiler warnings') { + steps { + warnings canComputeNew: false, canResolveRelativePaths: false, consoleParsers: [[parserName: 'Puppet-Lint']], defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', unHealthy: '' + } + } + + stage('update repo structure') { + steps { + sh '''if [ test -f REPOSTRUCTURE.md ]; then + rm -Rf REPOSTRUCTURE.md + fi + echo "$(tree --dirsfirst --charset=ascii .)" > REPOSTRUCTURE.md''' + } + } + + stage('create Puppet documention') { + steps { + sh 'puppet strings' + } + } + + stage('create changelog') { + steps{ + step([$class: 'GitChangelogRecorder', config: [configFile: 'git-changelog-settings.json', createFileTemplateContent: '''

Git Changelog changelog

+ +

+Changelog of Git Changelog. +

+ +{{#tags}} +

{{name}}

+ {{#issues}} + {{#hasIssue}} + {{#hasLink}} +

{{name}} {{issue}} {{title}}

+ {{/hasLink}} + {{^hasLink}} +

{{name}} {{issue}} {{title}}

+ {{/hasLink}} + {{/hasIssue}} + {{^hasIssue}} +

{{name}}

+ {{/hasIssue}} + + + {{#commits}} +{{hash}} {{authorName}} {{commitTime}} +

+

{{{messageTitle}}}

+ +{{#messageBodyItems}} +
  • {{.}}
  • +{{/messageBodyItems}} +

    + {{/commits}} + + {{/issues}} +{{/tags}} +''', createFileTemplateFile: '', createFileUseTemplateContent: true, createFileUseTemplateFile: false, customIssues: [[link: '', name: '', pattern: '', title: ''], [link: '', name: '', pattern: '', title: '']], dateFormat: 'YYYY-MM-dd HH:mm:ss', file: 'CHANGELOG.md', fromReference: '', fromType: 'firstCommit', gitHubApi: '', gitHubApiTokenCredentialsId: '', gitHubIssuePattern: '#([0-9]+)', gitHubToken: '', gitLabApiTokenCredentialsId: '', gitLabProjectName: '', gitLabServer: '', gitLabToken: '', ignoreCommitsIfMessageMatches: '^\\[maven-release-plugin\\].*|^\\[Gradle Release Plugin\\].*|^Merge.*', ignoreCommitsWithoutIssue: false, ignoreTagsIfNameMatches: '', jiraIssuePattern: '\\b[a-zA-Z]([a-zA-Z]+)-([0-9]+)\\b', jiraPassword: '', jiraServer: '', jiraUsername: '', jiraUsernamePasswordCredentialsId: '', mediaWikiPassword: '', mediaWikiTemplateContent: '''__NOTOC__ + += Git Changelog changelog = +Changelog of Git Changelog. + +{{#tags}} +== {{name}} == + {{#issues}} + {{#hasIssue}} + {{#hasLink}} +=== {{name}} [{{link}} {{issue}}] {{title}} === + {{/hasLink}} + {{^hasLink}} +=== {{name}} {{issue}} {{title}} === + {{/hasLink}} + {{/hasIssue}} + {{^hasIssue}} +=== {{name}} === + {{/hasIssue}} + + {{#commits}} +[https://gitlab.puppetsoft.com/12WW1160/git-changelog-lib/commit/{{hash}} {{hash}}] {{authorName}} {{commitTime}} + +\'\'\'{{{messageTitle}}}\'\'\' + +{{#messageBodyItems}} + * {{.}} +{{/messageBodyItems}} + + {{/commits}} + + {{/issues}} +{{/tags}} +''', mediaWikiTemplateFile: '', mediaWikiTitle: '', mediaWikiUrl: '', mediaWikiUseTemplateContent: false, mediaWikiUseTemplateFile: false, mediaWikiUsername: '', noIssueName: 'No issue', readableTagName: '/([^/]+?)$', showSummary: false, showSummaryTemplateContent: '''

    Git Changelog changelog

    + +

    +Changelog of Git Changelog. +

    + +{{#tags}} +

    {{name}}

    + {{#issues}} + {{#hasIssue}} + {{#hasLink}} +

    {{name}} {{issue}} {{title}}

    + {{/hasLink}} + {{^hasLink}} +

    {{name}} {{issue}} {{title}}

    + {{/hasLink}} + {{/hasIssue}} + {{^hasIssue}} +

    {{name}}

    + {{/hasIssue}} + + + {{#commits}} +{{hash}} {{authorName}} {{commitTime}} +

    +

    {{{messageTitle}}}

    + +{{#messageBodyItems}} +
  • {{.}}
  • +{{/messageBodyItems}} +

    + + + {{/commits}} + + {{/issues}} +{{/tags}} +''', showSummaryTemplateFile: '', showSummaryUseTemplateContent: false, showSummaryUseTemplateFile: false, subDirectory: '', timeZone: 'UTC', toReference: '', toType: 'master', untaggedName: 'Unreleased', useConfigFile: false, useFile: true, useGitHub: false, useGitHubApiTokenCredentials: false, useGitLab: false, useGitLabApiTokenCredentials: false, useIgnoreTagsIfNameMatches: false, useJira: false, useJiraUsernamePasswordCredentialsId: false, useMediaWiki: false, useReadableTagName: false, useSubDirectory: false]]) + + } + } + + stage('check for UTF-8 files') { + steps { + sh '''if [ ! -d tests ]; then + mkdir tests + fi + if [ -f tests/UTF_Files ]; then + rm -Rf tests/UTF_Files + fi + echo "$(find . -type f -exec file {} \\;)" > FileList + echo "$(grep -v ASCII FileList | grep -v git)" > tests/UTF_Files''' + } + } + + stage('show diff') { + steps { + sh 'git diff' + } + } + + stage('recommit changes to repo') { + steps { + sshagent(['0c22dc63-2ae0-4ad5-98e0-65aa0f0f411g']) { + sh '''git config user.name "Jenkins Server" + git config user.email jenkins@confdroid.com + echo `git add -A && git commit -am "recommit for updates in build $BUILD_NUMBER"` + git push origin HEAD:jenkins''' + } + } + } + + stage('update Gitlab') { + steps { + updateGitlabCommitStatus state: 'success' + } + } + } + + post { + always { + deleteDir() /* clean up our workspace */ + } + success { + echo 'Pipeline finished successfully!' + } + unstable { + echo 'I am unstable :/' + } + failure { + echo 'I failed :(' + step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'support@confdroid.com', sendToIndividuals: true]) + } + changed { + echo 'Things were different before...' + mail bcc: '', body: "Pipeline Job '${JOB_NAME}' has changed, please verify.", cc: '', from: '', replyTo: '', subject: "Pipeline Job '${JOB_NAME}' has changed", to: 'support@confdroid.com' + } + } +}