This plugin adds Jenkins pipeline steps to interact with the GCP API.
The plugin assumes that you have a GCP account and a project. You will need to create a service account, download the JSON key file locally and upload it to your Jenkins as Secret file. The service account will need to have the necessary permissions to interact with the GCP services you want to use.
- withGCP
- computeFirewallRulesCreate
- computeFirewallRulesDelete
- computeFirewallRulesList
- more features to come...
This step will load the credentials file by the id and set the environment variables for the gcloud command to use. In particular, it will try to extract the client_email from the file and set it as CLOUDSDK_CORE_ACCOUNT environment variable. And it will also attempt to extract the project_id from the file and set it as CLOUDSDK_CORE_PROJECT environment variable.
withGCP(credentialsId: "credentials-id") {
// run gcloud commands here
}
You can also combine other steps with it:
withGCP(credentialsId: "credentials-id") {
computeFirewallRulesCreate(name: "firewallRuleName", allow: "tcp:22")
}
This step will create a firewall rule with the given configuration. Please refer to the CLI command documentation for more information on the parameters.
Either allow or action must be provided:
computeFirewallRulesCreate(name: "firewallRuleName", allow: "tcp:22")
or
computeFirewallRulesCreate(name: "firewallRuleName", action: "DENY", rules: "tcp:22")
This step will delete firewall rules with the given names. Names should be separated by a whitespace. Please refer to the CLI command documentation for more information.
computeFirewallRulesDelete(name: "firewallRuleName anotherFirewallRuleName")
This step will list firewall rules. Please refer to the CLI command documentation for more information.
To print the list of firewall rules:
computeFirewallRulesList()
To print the list of firewall rules in table format:
computeFirewallRulesList(format: "table(name)")
To print the list of firewall rules applying a filter:
computeFirewallRulesList(filter: "name~'^default-.*' AND network=default")
To store the result in a variable for further processing:
def json = computeFirewallRulesList(format: "json")
def jqOutput = sh(script: "echo '${json}' | jq -r .[].id", returnStdout: true).trim()
echo "Filtered Output: ${jqOutput}"
To suppress the console output:
def firewallRules = computeFirewallRulesList(printOutput: false)
echo "Firewall Rules: ${firewallRules}"
Refer to our contribution guidelines
Licensed under MIT, see LICENSE