You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins构建配置页面添加HTML/JS并实现远程数据库下拉选择

How to Add a Dynamic Database Dropdown via AJAX in Jenkins Build Config Pages

Got it, let's walk through how to implement this dynamic database dropdown in your Jenkins build configuration. I've built similar dynamic fields before, so here's a practical, step-by-step approach:

1. First, Install the Required Plugin

You'll need the Active Choices Plugin—it's a staple for creating dynamic, script-driven parameters in Jenkins. This plugin lets you build reactive fields that can pull data from external sources via scripts or AJAX.

2. Set Up the Dynamic Parameter

In your Jenkins project's "Build Configuration" page:

  • Check the box for "This project is parameterized"
  • Click "Add Parameter" and select Active Choices Reactive Parameter (this supports both server-side Groovy and client-side JS logic)

If you can avoid front-end AJAX (to skip cross-origin restrictions), use a Groovy script in the plugin to fetch the database list from your remote server. This runs on the Jenkins backend, so browser CORS rules don't apply.

Here's a sample Groovy script that calls a remote API to get databases:

import groovy.json.JsonSlurper

// Replace with your remote server's API endpoint
def apiUrl = "http://your-remote-server/api/available-databases"
def connection = new URL(apiUrl).openConnection()
connection.setRequestMethod("GET")

// Add auth headers if your API requires them (e.g., API keys or tokens)
// connection.setRequestProperty("Authorization", "Bearer YOUR_SECRET_TOKEN")

def response = connection.content.text
def databases = new JsonSlurper().parseText(response)

// Return formatted options for the dropdown
databases.collect { db ->
    [value: db.id, displayName: db.name]
}
  • In the "Choice Type" dropdown, pick "Single Select" or "Multi Select" based on your needs
  • Save the parameter, and your dropdown will load databases automatically when the config page opens.

4. Option 2: Client-Side AJAX (If You Need Browser-Side Fetch)

If you specifically need to run AJAX in the browser (e.g., for user-specific data), you can use client-side JavaScript. Note: You'll need to handle CORS on your remote server (allow requests from your Jenkins domain) or route the API call through Jenkins as a proxy.

Here's a sample JS script using jQuery (Jenkins loads jQuery by default, so no extra setup needed):

jQuery(document).ready(function() {
    // Target your dropdown element (find its ID via browser dev tools)
    const dropdown = jQuery('#your-parameter-id');
    
    // Fetch databases from the remote API
    jQuery.ajax({
        url: "http://your-remote-server/api/available-databases",
        method: "GET",
        // Add auth headers if required
        headers: {
            "Authorization": "Bearer YOUR_SECRET_TOKEN"
        },
        success: function(data) {
            // Clear existing options
            dropdown.empty();
            // Populate dropdown with new options
            data.forEach(db => {
                dropdown.append(jQuery('<option>').val(db.id).text(db.name));
            });
        },
        error: function(xhr, status, error) {
            console.error("Failed to load databases:", error);
            dropdown.append(jQuery('<option>').val("").text("Failed to load databases"));
        }
    });
});
  • To find your parameter's ID: Right-click the dropdown in the config page > Inspect to get the element ID
  • In the Active Choices settings, select "JavaScript" as the script type and paste the code above
  • Make sure your remote server includes the Access-Control-Allow-Origin header allowing requests from your Jenkins URL

5. Key Tips for Success

  • Security: Never hardcode credentials in scripts. Use Jenkins' Credentials Plugin to store secrets, then reference them in your Groovy script (server-side) or pass them securely via headers (client-side—server-side is safer overall).
  • Permissions: Ensure your Jenkins user has permission to execute scripts (check "Global Security" > "Script Security" to approve trusted scripts).
  • Testing: Validate your API endpoint separately first to confirm it returns a JSON array like [{"id": "db1", "name": "Database 1"}, ...].

内容的提问来源于stack exchange,提问作者configureMe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:27:15