jenkinsci / jenkinsci/github-checks-plugin

Checks can not be published with classes extending GitHubAppCredentials

Open
#426 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
89
Forks
50
Avg merge
13h 55m
Merged PRs (30d)
7

Description

### Jenkins and plugins versions report

Environment


```text
Jenkins: 2.479.3.1
OS: Mac OS X - 15.3
Java: 17.0.9 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
asm-api:9.7.1-97.v4cc844130d97
aws-credentials:231.v08a_59f17d742
aws-java-sdk-ec2:1.12.772-474.v7f79a_2046a_fb_
aws-java-sdk-minimal:1.12.772-474.v7f79a_2046a_fb_
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-248.ve27176eb_46cb_
branch-api:2.1200.v4b_a_3da_2eb_db_4
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.1
cloudbees-administrative-monitors:162
cloudbees-analytics:1.813
cloudbees-assurance:2.1187
cloudbees-folder:6.973.vc9b_85a_61e4fc
cloudbees-folders-plus:3.448
cloudbees-github-reporting:1.809
cloudbees-groovy-view:1.15
cloudbees-hashicorp-vault:1.522
cloudbees-jenkins-advisor:358.v58972d19b_1f0
cloudbees-license:1275
cloudbees-monitoring:2.283
cloudbees-nodes-plus:231
cloudbees-pipeline-explorer:1.25
cloudbees-platform-common:1.412
cloudbees-platform-data:763
cloudbees-plugin-usage:2.530
cloudbees-ssh-slaves:361
cloudbees-support:3.36
cloudbees-template:4.1521
cloudbees-uc-data-api:4.691
cloudbees-unified-ui:1.1019
cloudbees-view-creation-filter:86
cloudbees-workflow-template:3.704
command-launcher:116.vd85919c54a_d6
commons-compress-api:1.26.1-2
commons-lang3-api:3.17.0-84.vb_b_938040b_078
commons-text-api:1.12.0-129.v99a_50df237f7
config-file-provider:980.v88956a_a_5d6a_d
credentials:1393.v6017143c1763
credentials-binding:687.v619cb_15e923f
display-url-api:2.209.v582ed814ff2f
durable-task:581.v299a_5609d767
echarts-api:5.5.1-4
email-ext:1861.vdb_d991590994
font-awesome-api:6.6.0-2
git:5.6.0
git-client:6.1.0
github:1.40.0
github-api:1.321-478.vc9ce627ce001
github-branch-source:1807.v50351eb_7dd13
github-checks:999999-SNAPSHOT (private-234a190b-pere)
gradle:2.13.1
gson-api:2.11.0-85.v1f4e87273c33
handy-uri-templates-2-api:2.1.8-30.v7e777411b_148
infradna-backup:1077
instance-identity:201.vd2a_b_5a_468a_a_6
ionicons-api:74.v93d5eb_813d5f
jackson2-api:2.17.0-379.v02de8ec9f64c
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javax-activation-api:1.2.0-7
javax-mail-api:1.6.2-10
jaxb:2.3.9-1
jdk-tool:80.v8a_dee33ed6f0
jjwt-api:0.11.5-112.ve82dfb_224b_a_d
joda-time-api:2.13.0-93.v9934da_29b_a_e9
jquery3-api:3.7.1-2
json-api:20240303-101.v7a_8666713110
json-path-api:2.9.0-118.v7f23ed82a_8b_8
junit:1311.v39e1716e4eb_e
ldap:770.vb_455e934581a_
mailer:489.vd4b_25144138f
mapdb-api:1.0.9-40.v58107308b_7a_7
matrix-project:840.v812f627cb_578
metrics:4.2.21-458.vcf496cb_839e4
mina-sshd-api-common:2.14.0-136.v4d2b_0853615e
mina-sshd-api-core:2.14.0-136.v4d2b_0853615e
mina-sshd-api-scp:2.14.0-136.v4d2b_0853615e
mina-sshd-api-sftp:2.14.0-136.v4d2b_0853615e
nectar-license:662
nectar-rbac:1638
node-iterator-api:55.v3b_77d4032326
okhttp-api:4.11.0-181.v1de5b_83857df
operations-center-agent:3.27341
operations-center-client:3.27341
operations-center-cloud:3.27341
operations-center-context:3.27341
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-groovy-lib:744.v5b_556ee7c253
pipeline-input-step:495.ve9c153f6067b_
pipeline-maven:1469.ve15ca_a_b_90b_44
pipeline-maven-api:1469.ve15ca_a_b_90b_44
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2218.v56d0cda_37c72
pipeline-model-definition:2.2218.v56d0cda_37c72
pipeline-model-extensions:2.2218.v56d0cda_37c72
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2218.v56d0cda_37c72
plain-credentials:183.va_de8f1dd5a_2b_
plugin-util-api:5.1.0
scm-api:698.v8e3b_c788f0a_6
script-security:1369.v9b_98a_4e95b_2d
snakeyaml-api:2.3-123.v13484c65210a_
ssh-credentials:349.vb_8b_6b_9709f5b_
structs:338.v848422169819
support-core:1523.v5486c8d6da_f3
token-macro:400.v35420b_922dcb_
user-activity-monitoring:2.430
variant:60.v7290fc0eb_b_cd
workflow-aggregator:600.vb_57cdd26fdd7
workflow-api:1336.vee415d95c521
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:4000.v5198556e9cea_
workflow-cps-checkpoint:2.320
workflow-durable-task-step:1398.vf6c9e89e5988
workflow-job:1472.ve4d5eca_143c4
workflow-multibranch:795.ve0cb_1f45ca_9a_
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:678.v3ee58b_469476
workflow-support:936.v9fa_77211ca_e1
```

### What Operating System are you using (both controller, and any agents involved in the problem)?

Tested locally in MacOS and also in RHEL8 in a kubernetes environment

### Reproduction steps

1. Create a class extending `GitHubAppCredentials`
2. Define your GHApp credentials using that type instead of the base one
3. Use those credentials in a pipeline job run in a repo with the app installed

### Expected Results

Checks are published
Logs show "Published check for repo...."

### Actual Results

Checks aren't published, no info appears in the logs

### Anything else?

Root cause seems to be in the check for unsupported credential types performed [here](https://github.com/jenkinsci/github-checks-plugin/blob/master/src/main/java/io/jenkins/plugins/checks/github/GitHubChecksPublisher.java#L68-L74).
Seems it's using class names instead of checking the instance to avoid having to include `hashicorp-vault-plugin` as a dependency, but `GitHubAppCredentials` is already available in the classpath (from `github_branch_source` plugin), so a check using `instanceof` would allow classes extending `GitHubAppCredentials` to also publish checks.

### Are you interested in contributing a fix?

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.