fastlane-plugin-update_jenkins_build 0.1.4 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +11 -1
- data/lib/fastlane/plugin/update_jenkins_build/actions/update_jenkins_build_action.rb +43 -11
- data/lib/fastlane/plugin/update_jenkins_build/helper/update_jenkins_build_helper.rb +11 -5
- data/lib/fastlane/plugin/update_jenkins_build/version.rb +1 -1
- metadata +7 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: dd94a14381f6b4065878242ccd53858e717e854015c7a8b8ba74746ee8f5831b
         | 
| 4 | 
            +
              data.tar.gz: f0fc857b6e62148a95b9be4f7a9733f8ac178f25081a88f520fe49d2ad703b19
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ed102c9db15db0ccbc9d42f117dccaf7dc108773ec21c316b721713e1afb6576a4a71a5b0a1a16650fb16ae87683ea6228eed55e7c6cadbf2aaacee5d6b41545
         | 
| 7 | 
            +
              data.tar.gz: bf8a574839dc58af1aa288a23d1bf75bac42024d3dc50d390192a70f3b7547ebf91bbd47dfd3de069226a53b86fca0d0c68ef5d544b27733db8d9b84b7bf2f8b
         | 
    
        data/README.md
    CHANGED
    
    | @@ -10,6 +10,15 @@ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To | |
| 10 10 | 
             
            fastlane add_plugin update_jenkins_build
         | 
| 11 11 | 
             
            ```
         | 
| 12 12 |  | 
| 13 | 
            +
            
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ### Configure Jenkins
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            ⚠️ **READ ME FRIST**
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            Jenkins version below 2.221, you need disable CSRF Protection in Global Security Settings page or
         | 
| 20 | 
            +
            else you must append '-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true' into Jenkins startup argument, [Check more details](https://github.com/icyleaf/fastlane-plugin-update_jenkins_build/issues/2).
         | 
| 21 | 
            +
             | 
| 13 22 | 
             
            ## About update_jenkins_build
         | 
| 14 23 |  | 
| 15 24 | 
             
            Update build's description of jenkins.
         | 
| @@ -22,6 +31,7 @@ $ bundle exec fastlane action update_jenkins_build | |
| 22 31 | 
             
            | Key          | Description                                 | Env Var                           | Default |
         | 
| 23 32 | 
             
            +--------------+---------------------------------------------+-----------------------------------+---------+
         | 
| 24 33 | 
             
            | description  | the description of current build            | UPDATE_JENKINS_BUILD_DESCRIPTION  |         |
         | 
| 34 | 
            +
            | url          | the url of jenkins                          | UPDATE_JENKINS_BUILD_URL          |         |
         | 
| 25 35 | 
             
            | project      | the name of project(job)                    | UPDATE_JENKINS_BUILD_PROJECT      |         |
         | 
| 26 36 | 
             
            | build_number | the build number of project(job)            | UPDATE_JENKINS_BUILD_BUILD_NUMBER |         |
         | 
| 27 37 | 
             
            | user         | the user of jenkins if enabled security     | UPDATE_JENKINS_BUILD_USER         |         |
         | 
| @@ -31,7 +41,7 @@ $ bundle exec fastlane action update_jenkins_build | |
| 31 41 | 
             
            +-----------------------------------+
         | 
| 32 42 | 
             
            | update_jenkins_build Return Value |
         | 
| 33 43 | 
             
            +-----------------------------------+
         | 
| 34 | 
            -
            | ture/false | 
| 44 | 
            +
            | [ture/false, response_body]       |
         | 
| 35 45 | 
             
            +-----------------------------------+
         | 
| 36 46 | 
             
            ```
         | 
| 37 47 |  | 
| @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            require 'fastlane/action'
         | 
| 2 2 | 
             
            require_relative '../helper/update_jenkins_build_helper'
         | 
| 3 | 
            +
            require 'rubygems'
         | 
| 3 4 | 
             
            require 'http'
         | 
| 4 5 | 
             
            require 'uri'
         | 
| 5 6 |  | 
| @@ -9,49 +10,69 @@ module Fastlane | |
| 9 10 | 
             
                  def self.run(params)
         | 
| 10 11 | 
             
                    @user = params[:user]
         | 
| 11 12 | 
             
                    @password = params[:password]
         | 
| 13 | 
            +
                    @url = params[:url]
         | 
| 12 14 | 
             
                    @project = params[:project]
         | 
| 13 15 | 
             
                    @build_number = params[:build_number]
         | 
| 14 | 
            -
                    @description = params[:description]
         | 
| 16 | 
            +
                    @description = format_description(params[:description])
         | 
| 15 17 |  | 
| 16 18 | 
             
                    url = "#{base_uri}/submitDescription"
         | 
| 17 | 
            -
                    res = if @user
         | 
| 19 | 
            +
                    res = if @user || @password
         | 
| 18 20 | 
             
                            HTTP.basic_auth(user: @user, pass: @password)
         | 
| 19 21 | 
             
                                .post(url, form: {description: @description})
         | 
| 20 22 | 
             
                          else
         | 
| 21 | 
            -
                            HTTP.post(url, form: { | 
| 23 | 
            +
                            HTTP.post(url, form: {
         | 
| 24 | 
            +
                              "description" => @description,
         | 
| 25 | 
            +
                              "Jenkins-Crumb" => "234234234234234234" # random value
         | 
| 26 | 
            +
                            })
         | 
| 22 27 | 
             
                          end
         | 
| 23 28 |  | 
| 24 | 
            -
                     | 
| 29 | 
            +
                    # Submit form succesed it will 302 to the build url.
         | 
| 30 | 
            +
                    result = res.code == 302 ? 'success' : "#{res.code} fail"
         | 
| 25 31 |  | 
| 32 | 
            +
                    jenkins_version = Helper::UpdateJenkinsBuildHelper.jenkins_version(@url, @user, @password)
         | 
| 26 33 | 
             
                    params = {
         | 
| 27 34 | 
             
                      title: "Summary for update_jenkins_build #{UpdateJenkinsBuild::VERSION}".green,
         | 
| 28 35 | 
             
                      rows: {
         | 
| 29 | 
            -
                         | 
| 36 | 
            +
                        jenkins_version: jenkins_version,
         | 
| 37 | 
            +
                        result: result,
         | 
| 30 38 | 
             
                        url: "#{base_uri}/editDescription",
         | 
| 31 39 | 
             
                        auth: @user ? true : false,
         | 
| 32 40 | 
             
                        description: @description,
         | 
| 33 41 | 
             
                      }
         | 
| 34 42 | 
             
                    }
         | 
| 35 43 |  | 
| 36 | 
            -
                    puts ""
         | 
| 37 44 | 
             
                    puts Terminal::Table.new(params)
         | 
| 38 | 
            -
                    puts ""
         | 
| 39 45 |  | 
| 40 | 
            -
                     | 
| 46 | 
            +
                    if res.code != 302
         | 
| 47 | 
            +
                      UI.error "Detect `update_jenkins_build` ran fail."
         | 
| 48 | 
            +
                      if jenkins_version && Gem::Version.new(jenkins_version) > Gem::Version.new('2.221')
         | 
| 49 | 
            +
                        UI.error "Because Jenkins v#{jenkins_version} removed 'disable CSRF Protection' option since 2.222,"
         | 
| 50 | 
            +
                        UI.error "You need append '-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true' into Jenkins startup argument."
         | 
| 51 | 
            +
                        UI.error "Please check https://github.com/icyleaf/fastlane-plugin-update_jenkins_build/issues/2"
         | 
| 52 | 
            +
                      else
         | 
| 53 | 
            +
                        UI.error "Please 'disable CSRF Protection' in 'Global Security Settings' page from Jenkins."
         | 
| 54 | 
            +
                      end
         | 
| 55 | 
            +
                    end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    [result, res.body]
         | 
| 58 | 
            +
                  end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                  def self.format_description(descripion)
         | 
| 61 | 
            +
                    descripion.gsub('\n', "\n")
         | 
| 41 62 | 
             
                  end
         | 
| 42 63 |  | 
| 43 64 | 
             
                  def self.base_uri
         | 
| 44 | 
            -
                    uri = URI( | 
| 65 | 
            +
                    uri = URI(@url)
         | 
| 45 66 | 
             
                    uri.path = "/job/#{@project}/#{@build_number}"
         | 
| 46 67 | 
             
                    uri.to_s
         | 
| 47 68 | 
             
                  end
         | 
| 48 69 |  | 
| 49 70 | 
             
                  def self.return_value
         | 
| 50 | 
            -
                    "ture/false"
         | 
| 71 | 
            +
                    "[ture/false, response_body]"
         | 
| 51 72 | 
             
                  end
         | 
| 52 73 |  | 
| 53 74 | 
             
                  def self.return_type
         | 
| 54 | 
            -
                    : | 
| 75 | 
            +
                    :array
         | 
| 55 76 | 
             
                  end
         | 
| 56 77 |  | 
| 57 78 | 
             
                  def self.example_code
         | 
| @@ -60,6 +81,7 @@ module Fastlane | |
| 60 81 | 
             
                        description: "AdHoc v1.0 (1.0.1)"
         | 
| 61 82 | 
             
                      )',
         | 
| 62 83 | 
             
                      'update_jenkins_build(
         | 
| 84 | 
            +
                        url: "http://127.0.0.1:8080/", # specify specific jenkins url
         | 
| 63 85 | 
             
                        project: "foobar", # specify specific project name
         | 
| 64 86 | 
             
                        build_number: 75, # specify specific build number
         | 
| 65 87 | 
             
                        description: "AdHoc v1.0 (1.0.1)",
         | 
| @@ -76,6 +98,10 @@ module Fastlane | |
| 76 98 | 
             
                    "Update build's description of jenkins"
         | 
| 77 99 | 
             
                  end
         | 
| 78 100 |  | 
| 101 | 
            +
                  def self.details
         | 
| 102 | 
            +
                    "MUST disable CSRF in Security configure"
         | 
| 103 | 
            +
                  end
         | 
| 104 | 
            +
             | 
| 79 105 | 
             
                  def self.available_options
         | 
| 80 106 | 
             
                    [
         | 
| 81 107 | 
             
                      FastlaneCore::ConfigItem.new(key: :description,
         | 
| @@ -83,6 +109,12 @@ module Fastlane | |
| 83 109 | 
             
                                           description: "the description of current build",
         | 
| 84 110 | 
             
                                              optional: false,
         | 
| 85 111 | 
             
                                                  type: String),
         | 
| 112 | 
            +
                      FastlaneCore::ConfigItem.new(key: :url,
         | 
| 113 | 
            +
                                              env_name: "UPDATE_JENKINS_BUILD_URL",
         | 
| 114 | 
            +
                                           description: "the url of jenkins",
         | 
| 115 | 
            +
                                         default_value: ENV['JENKINS_URL'],
         | 
| 116 | 
            +
                                              optional: true,
         | 
| 117 | 
            +
                                                  type: String),
         | 
| 86 118 | 
             
                      FastlaneCore::ConfigItem.new(key: :project,
         | 
| 87 119 | 
             
                                              env_name: "UPDATE_JENKINS_BUILD_PROJECT",
         | 
| 88 120 | 
             
                                           description: "the name of project(job)",
         | 
| @@ -5,11 +5,17 @@ module Fastlane | |
| 5 5 |  | 
| 6 6 | 
             
              module Helper
         | 
| 7 7 | 
             
                class UpdateJenkinsBuildHelper
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                   | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def self.jenkins_version(url, user, password)
         | 
| 10 | 
            +
                    url = "#{url}/api/json"
         | 
| 11 | 
            +
                    res = if user && password
         | 
| 12 | 
            +
                            HTTP.basic_auth(user: user, pass: password)
         | 
| 13 | 
            +
                                .get(url)
         | 
| 14 | 
            +
                          else
         | 
| 15 | 
            +
                            HTTP.get(url)
         | 
| 16 | 
            +
                          end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    res.headers['X-Jenkins']
         | 
| 13 19 | 
             
                  end
         | 
| 14 20 | 
             
                end
         | 
| 15 21 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: fastlane-plugin-update_jenkins_build
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1 | 
| 4 | 
            +
              version: 0.3.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - icyleaf
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-06-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: http
         | 
| @@ -164,7 +164,7 @@ dependencies: | |
| 164 164 | 
             
                - - ">="
         | 
| 165 165 | 
             
                  - !ruby/object:Gem::Version
         | 
| 166 166 | 
             
                    version: '0'
         | 
| 167 | 
            -
            description: | 
| 167 | 
            +
            description:
         | 
| 168 168 | 
             
            email: icyleaf.cn@gmail.com
         | 
| 169 169 | 
             
            executables: []
         | 
| 170 170 | 
             
            extensions: []
         | 
| @@ -180,7 +180,7 @@ homepage: https://github.com/icyleaf/fastlane-plugin-update_jenkins_build | |
| 180 180 | 
             
            licenses:
         | 
| 181 181 | 
             
            - MIT
         | 
| 182 182 | 
             
            metadata: {}
         | 
| 183 | 
            -
            post_install_message: | 
| 183 | 
            +
            post_install_message:
         | 
| 184 184 | 
             
            rdoc_options: []
         | 
| 185 185 | 
             
            require_paths:
         | 
| 186 186 | 
             
            - lib
         | 
| @@ -195,9 +195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 195 195 | 
             
                - !ruby/object:Gem::Version
         | 
| 196 196 | 
             
                  version: '0'
         | 
| 197 197 | 
             
            requirements: []
         | 
| 198 | 
            -
             | 
| 199 | 
            -
             | 
| 200 | 
            -
            signing_key: 
         | 
| 198 | 
            +
            rubygems_version: 3.2.32
         | 
| 199 | 
            +
            signing_key:
         | 
| 201 200 | 
             
            specification_version: 4
         | 
| 202 201 | 
             
            summary: Update Description of Build
         | 
| 203 202 | 
             
            test_files: []
         |