issue-metrics icon indicating copy to clipboard operation
issue-metrics copied to clipboard

Auth is not working when GitHub App and GH EE URL configured together

Open oldboys92 opened this issue 1 year ago • 4 comments

Describe the bug

After setting GH_ENTERPRISE_URL and corresponding GitHub APP parameters the issue-metrics action still tries to use GitHub public to login.

After checking the implementation code it seems that the combination of GH EE and GitHub APP is not supported, but the documentation is not clear about this.

To Reproduce

  1. Setup GH_ENTERPRISE_URL
  2. Setup GH_APP_ID, GH_APP_INSTALLATION_ID and GH_APP_PRIVATE_KEY
  3. Start your workflow
  4. see the error:
2024-09-11T19:03:22.0564009Z ##[group]Run github/issue-metrics@v3
2024-09-11T19:03:22.0564483Z env:
2024-09-11T19:03:22.0564839Z   last_month: 2024-08-01..2024-08-31
2024-09-11T19:03:22.0565410Z   GH_ENTERPRISE_URL: https://git.example.com/api/v3/
2024-09-11T19:03:22.0566025Z   GH_APP_ID: ***
2024-09-11T19:03:22.0566520Z   GH_APP_INSTALLATION_ID: ***
2024-09-11T19:03:22.0577928Z   GH_APP_PRIVATE_KEY: ***
2024-09-11T19:03:22.0578647Z   SEARCH_QUERY: repo:owner/repo-name is:issue created:2024-08-01..2024-08-31 -reason:"not planned"
2024-09-11T19:03:22.0579394Z ##[endgroup]
2024-09-11T19:03:22.0776388Z ##[command]/usr/local/bin/docker run --name ghcriogithubissue_metricsv3_a7f194 --label 465bd8 --workdir /github/workspace --rm -e "last_month" -e "GH_ENTERPRISE_URL" -e "GH_APP_ID" -e "GH_APP_INSTALLATION_ID" -e "GH_APP_PRIVATE_KEY" -e "SEARCH_QUERY" -e "HOME" -e "GITHUB_JOB" -e "GITHUB_REF" -e "GITHUB_SHA" -e "GITHUB_REPOSITORY" -e "GITHUB_REPOSITORY_OWNER" -e "GITHUB_REPOSITORY_OWNER_ID" -e "GITHUB_RUN_ID" -e "GITHUB_RUN_NUMBER" -e "GITHUB_RETENTION_DAYS" -e "GITHUB_RUN_ATTEMPT" -e "GITHUB_REPOSITORY_ID" -e "GITHUB_ACTOR_ID" -e "GITHUB_ACTOR" -e "GITHUB_TRIGGERING_ACTOR" -e "GITHUB_WORKFLOW" -e "GITHUB_HEAD_REF" -e "GITHUB_BASE_REF" -e "GITHUB_EVENT_NAME" -e "GITHUB_SERVER_URL" -e "GITHUB_API_URL" -e "GITHUB_GRAPHQL_URL" -e "GITHUB_REF_NAME" -e "GITHUB_REF_PROTECTED" -e "GITHUB_REF_TYPE" -e "GITHUB_WORKFLOW_REF" -e "GITHUB_WORKFLOW_SHA" -e "GITHUB_WORKSPACE" -e "GITHUB_EVENT_PATH" -e "GITHUB_PATH" -e "GITHUB_ENV" -e "GITHUB_STEP_SUMMARY" -e "GITHUB_STATE" -e "GITHUB_OUTPUT" -e "GITHUB_ACTION" -e "GITHUB_ACTION_REPOSITORY" -e "GITHUB_ACTION_REF" -e "RUNNER_OS" -e "RUNNER_ARCH" -e "RUNNER_NAME" -e "RUNNER_ENVIRONMENT" -e "RUNNER_TOOL_CACHE" -e "RUNNER_TEMP" -e "RUNNER_WORKSPACE" -e "ACTIONS_RUNTIME_URL" -e "ACTIONS_RUNTIME_TOKEN" -e "ACTIONS_CACHE_URL" -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/runner/_work/_temp/_github_home":"/github/home" -v "/runner/_work/_temp/_github_workflow":"/github/workflow" -v "/runner/_work/_temp/_runner_file_commands":"/github/file_commands" -v "/runner/_work/test_issue_bot/test_issue_bot":"/github/workspace" ghcr.io/github/issue_metrics:v3
2024-09-11T19:03:28.9219554Z Starting issue-metrics search...
2024-09-11T19:03:29.1252999Z Request failed: 401 Client Error: Unauthorized for url: https://api.github.com/app/installations/***/access_tokens
2024-09-11T19:03:29.3067052Z Traceback (most recent call last):
2024-09-11T19:03:29.3069824Z   File "/action/workspace/issue_metrics.py", line 433, in <module>
2024-09-11T19:03:29.3071230Z     main()
2024-09-11T19:03:29.3072261Z   File "/action/workspace/issue_metrics.py", line 320, in main
2024-09-11T19:03:29.3073579Z     github_connection = auth_to_github(
2024-09-11T19:03:29.3074930Z                         ^^^^^^^^^^^^^^^
2024-09-11T19:03:29.3076020Z   File "/action/workspace/auth.py", line 26, in auth_to_github
2024-09-11T19:03:29.3077183Z     gh.login_as_app_installation(
2024-09-11T19:03:29.3079084Z   File "/usr/local/lib/python3.12/site-packages/github3/github.py", line 1527, in login_as_app_installation
2024-09-11T19:03:29.3080844Z     json = self._json(response, 201)
2024-09-11T19:03:29.3082275Z            ^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-11T19:03:29.3084336Z   File "/usr/local/lib/python3.12/site-packages/github3/models.py", line 161, in _json
2024-09-11T19:03:29.3086359Z     raise exceptions.error_for(response)
2024-09-11T19:03:29.3088287Z github3.exceptions.AuthenticationFailed: 401 A JSON web token could not be decoded
2024-09-11T19:03:30.0039306Z Post job cleanup.

Expected behavior

Setting GH_ENTERPRISE_URL should trigger the correct usage of the GitHub EE authentication endpoint.

Screenshots

No response

Additional context

No response

oldboys92 avatar Sep 11 '24 19:09 oldboys92

Yes, that is correct that the code doesn't currently accommodate that option but I don't think there is anything preventing us from a technical implementation for that. So we would be open to a pull request on this or once a maintainer found the time we could add this configuration.

zkoppert avatar Sep 20 '24 23:09 zkoppert

I will prepare a PR then, but it will take sometime (longer vacation next month).

oldboys92 avatar Sep 21 '24 08:09 oldboys92

Thank you!

zkoppert avatar Sep 21 '24 16:09 zkoppert

@oldboys92 you still want to get a PR out for this? Or I can take a look at it. I don't want to block you. Thank you for filing the issue.

jmeridth avatar Sep 28 '24 05:09 jmeridth

many thx for fixing it and sorry for the late reply, I had a long vacation.

oldboys92 avatar Nov 10 '24 19:11 oldboys92