Sha256: 7d6b0909b48d923218a9f48c5a29506ec34e22f4544bea9d4c0b121385276059

Contents?: true

Size: 1.82 KB

Versions: 13

Compression:

Stored size: 1.82 KB

Contents

module Fastlane
  module Actions
    class MakeChangelogFromJenkinsAction < Action
      def self.run(params)
        require 'json'
        require 'net/http'

        changelog = ""

        if Helper.is_ci? || Helper.is_test?
          # The "BUILD_URL" environment variable is set automatically by Jenkins in every build
          jenkins_xml_url = URI(ENV["BUILD_URL"] + "api/json\?wrapper\=changes\&xpath\=//changeSet//comment")
          begin
            json = JSON.parse(Net::HTTP.get(jenkins_xml_url))
            json['changeSet']['items'].each do |item|
              comment = item['comment']
              changelog << comment.strip + "\n"
            end
          rescue => ex
            UI.error("Unable to read/parse changelog from jenkins: #{ex.message}")
          end
        end

        Actions.lane_context[SharedValues::FL_CHANGELOG] = changelog.strip.length > 0 ? changelog : params[:fallback_changelog]
      end

      def self.description
        "Generate a changelog using the Changes section from the current Jenkins build"
      end

      def self.details
        "This is useful when deploying automated builds. The changelog from Jenkins lists all the commit messages since the last build."
      end

      def self.available_options
        [
          FastlaneCore::ConfigItem.new(key: :fallback_changelog,
                                       description: "Fallback changelog if there is not one on Jenkins, or it couldn't be read",
                                       optional: true,
                                       default_value: "")
        ]
      end

      def self.output
        [
          ['FL_CHANGELOG', 'The changelog generated by Jenkins']
        ]
      end

      def self.authors
        ["mandrizzle"]
      end

      def self.is_supported?(platform)
        true
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
fastlane-1.83.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.82.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.81.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.80.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.70.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.69.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.68.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.67.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.66.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.65.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.64.0 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.63.1 lib/fastlane/actions/make_changelog_from_jenkins.rb
fastlane-1.63.0 lib/fastlane/actions/make_changelog_from_jenkins.rb