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