[PR #10170/52cd1049 backport][stable-11] jenkins_credentials: new module to manage Jenkins credentials (#10294)

jenkins_credentials: new module to manage Jenkins credentials (#10170)

* Added Jenkins credentials module to manage Jenkins credentials

* Added Jenkins credentials module to manage Jenkins credentials

* Added import error detection, adjusted indentation, and general enhancements.

* Added py3 requirement and set files value to avoid errors

* Added username to BOTMETA. Switched to format() instead of f strings to support py 2.7, improved delete function, and added function to read private key

* Remove redundant message



* Replaced requests with ansible.module_utils.urls, merged check domain and credential functions, and made minor adjustments to documentation

* Adjusted for py 2.7 compatibility

* Replaced command with state.

* Added managing credentials within a folder and made adjustments to documentation

* Added unit and integration tests, added token managament, and adjusted documentation.

* Added unit and integration tests, added token management, and adjusted documentation.(fix)

* Fix BOTMETA.yml

* Removed files and generate them at runtime.

* moved id and token checks to required_if

* Documentation changes, different test setup, and switched to Ansible testing tools

* Fixed typos

* Correct indentation.



---------


(cherry picked from commit 52cd104962)

Co-authored-by: YoussefKhalidAli <154611350+YoussefKhalidAli@users.noreply.github.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
patchback[bot] 2025-06-24 06:51:33 +02:00 committed by GitHub
commit ec87b44816
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 1921 additions and 0 deletions

View file

@ -0,0 +1,79 @@
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Prepare the test environment
include_tasks: pre.yml
vars:
output_dir: "{{ playbook_dir }}/generated"
- name: Generate token
community.general.jenkins_credential:
name: "test-token"
jenkins_user: "{{ jenkins_username }}"
jenkins_password: "{{ jenkins_password }}"
type: "token"
no_log: yes
register: token_result
- name: Assert token and tokenUuid are returned
assert:
that:
- token_result.token is defined
- token_result.token_uuid is defined
fail_msg: "Token generation failed"
success_msg: "Token and tokenUuid successfully returned"
- name: Set token facts
set_fact:
token: "{{ token_result.token }}"
tokenUuid: "{{ token_result.token_uuid }}"
- name: Test adding new credentials and scopes
include_tasks: add.yml
vars:
run_number: 1
output_dir: "{{ playbook_dir }}/generated"
- name: Test adding credentials and scopes when they already exist
include_tasks: add.yml
vars:
run_number: 2
output_dir: "{{ playbook_dir }}/generated"
- name: Test editing credentials
include_tasks: edit.yml
vars:
output_dir: "{{ playbook_dir }}/generated"
- name: Test deleting credentials and scopes
include_tasks: del.yml
vars:
run_number: 1
- name: Test deleting credentials and scopes when they don't exist
include_tasks: del.yml
vars:
run_number: 2
- name: Delete token
community.general.jenkins_credential:
id: "{{ tokenUuid }}"
name: "test-token-2"
jenkins_user: "{{ jenkins_username }}"
jenkins_password: "{{ jenkins_password }}"
state: "absent"
type: "token"
register: delete_token_result
- name: Assert token deletion
assert:
that:
- delete_token_result.changed is true
fail_msg: "Token deletion failed"
success_msg: "Token successfully deleted"
- name: Remove generated test files
ansible.builtin.file:
path: "{{ playbook_dir }}/generated"
state: absent