Skip to content

Commit e0845cf

Browse files
committed
Add GitHub integration service and tests
Introduces a GitHubService class for interacting with the GitHub API, including methods for app installation, issue creation, and Copilot assignment. Adds related environment variables to .env.sample and type definitions to env.d.ts. Updates dependencies to include @octokit/rest, @octokit/types, and jsonwebtoken v9.0.3. Provides comprehensive tests for the new integration.
1 parent c253875 commit e0845cf

File tree

6 files changed

+936
-23
lines changed

6 files changed

+936
-23
lines changed

.env.sample

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ GITHUB_CLIENT_ID=fakedata
5151
GITHUB_CLIENT_SECRET=fakedata
5252

5353
## Hawk API public url (used in OAuth to redirect to callback, should match OAuth app callback URL)
54-
API_URL=http://127.0.0.1:4000
54+
API_URL=http://localhost:4000
5555

5656
## Garage url
57-
GARAGE_URL=http://127.0.0.1:8080
57+
GARAGE_URL=http://localhost:8080
5858

5959
## Garage login url
60-
GARAGE_LOGIN_URL=http://127.0.0.1:8080/login
60+
GARAGE_LOGIN_URL=http://localhost:8080/login
6161

6262
## Hawk Catcher token from hawk.so
6363
HAWK_CATCHER_TOKEN=
@@ -93,3 +93,42 @@ SSO_SP_ENTITY_ID=urn:hawk:tracker:saml
9393

9494
## SAML state store type (memory or redis, default: redis)
9595
SAML_STORE_TYPE=redis
96+
97+
# String generated when we create GitHub App, see task-managers-integration-implementation-plan.md -> 2.1.1
98+
GITHUB_WEBHOOK_SECRET=623f6ed30b1f762803149893263a95cc2687fe3ce5a9f30648dcbf25712afc9e
99+
100+
# Id of GitHub app
101+
GITHUB_APP_ID=1234567
102+
103+
# GitHub App slug/name. Used to generate installation URLs
104+
GITHUB_APP_SLUG=hawk-tracker-app;
105+
106+
# Private key generated in GitHub app settings
107+
GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
108+
MIIEpAIBAAKCAQEA0r16047BqAxFgbltKcNOt9RGMZ2COI2ui7Ujmn9vtMV83HHu
109+
lN/ek4kLTz8nunUc0s21xWpW7mjoaO61qSzcEn7vDhgMOAnq+wq+iJsk5IM/MJNe
110+
sNatymMVO6Q6UuVx4Nshac3T7M8dVWx3Oc9ef9nc/dXdXTQn73EZC5pKqKoFE+yv
111+
NGHS0JAgUGa1zDt/TqXcypz06tyrFgZFFuBo01kS1xUU/J4bpwNnk9KNq7lakdAE
112+
JeJ/BzwTRZUzSIjtLSDjFbcjI2iXsTOasrygXDTYYcnvQf4HjRxBuCwIuGo4mOHz
113+
86l5Icq9dNWq1Nj+FJW9IMEOYW0927uws+dotwIDAQABAoIBAHfdRitmm0eWErEm
114+
YqzKZc+xcWtvB05bZ9gW43VQ3pyXZ3mLZARRgSuxWzlr1pD7Y7WTQ7xRy7g2+1oT
115+
zEe5OENc52PA0dJd8cVwSwcwFz/SVvKuH8G9mYPv73fI5VOZJbibatnfNJcRBsI7
116+
u2SqSjm2FThbmFkW/U/3qCMtUyGy6atoUZvoeQ5aUKmW7Z4gaPVN3z+265qJwR3o
117+
qnNUY2FNEA8tsJ05EzqBp8+SYghAiKY1QKqSb2pIfbBNmx5ItB2WeH3sTaE3Zdzy
118+
Kk/5fDY/rlOouRg7kHQd9sPnXzy7LVhUaQG0fZdjBOpJFXHFqi1Gsf3HAMRHkhyJ
119+
+EvgOuECgYEA/B85RCgVagwm9otXyj5JGIbj2iSAEwKnk2fxiZsGC3pirK85ZITp
120+
bZiIvwMzCKiHlL0vjiVsFBL8tr7p5bP1g4GNTOCg2Dj+B/Or9IgxHxpDCIPrV+L0
121+
GBgJEsNylJESQU/xf6qBs88FLFLyRtwxXkucsfk+OrF5IBUaEdEuo9UCgYEA1ftO
122+
wiD4O3LTs5dZiUHBrLWGejfbltHILF4oA61O7pLlMWkBvN1H8pJOI9FbTHWlv4Vc
123+
UFApUjm4wUGArCKu7AfcSZ2+xhySIC3ilReXbQp7WqdKp/T/RaKh38zEa6MVMqAJ
124+
cYYoWj4/NJMN1a4+G/zU5adMVb0jITyJB1EYfFsCgYEApUSSdWsRHoL4x4Rv99L8
125+
d2d01Po4Oj3zO11Xp6xHOh7vr+Ls7Edz/LOQcCXYvkQ7G/UnxzYgssf/gIuFJ13g
126+
AmRaC5rz1MkHPI8umQztp3XAy0QucV4ERAb9a59S7LBsFwQgel96xjNeYL++sVSF
127+
yBoojUGk2TSdAbrTa/qDaEECgYBCrqD5gBq7M+pjEew2CMbZEmyI07Vbh55QrTrd
128+
AnoRgLdpsWZ4O6D7J7qwEMLZzePMDjwZTxHBbPl1R/tYKSrHpR9x1XWo+ShUXNg6
129+
S/LFaTnNo0pxkrimM6ssOfyP6m9lqlenB/61OKartJPgHf9+60hRFNSF933mEp5F
130+
KHFv9wKBgQCXaVz5sgtcWgkQYSn4XTwSYKaeYww4hnIel30pASrLujQ9FubAvdjZ
131+
apxW9AHmx4aVRrmcIPq/BlMc6lGIgx2IwMBvJVpHVeUOUMAfNMRZV0XjY715xEyW
132+
U/uCfmCh8rfyQ75rthD4mGzNmHBpWrP/bD3c/vdj0wAxFXVyR5bG/Q==
133+
-----END RSA PRIVATE KEY-----"
134+

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"test:integration:down": "docker compose -f docker-compose.test.yml down --volumes"
2121
},
2222
"devDependencies": {
23+
"@octokit/types": "^16.0.0",
2324
"@shelf/jest-mongodb": "^6.0.2",
2425
"@swc/core": "^1.3.0",
2526
"@types/jest": "^26.0.8",
@@ -46,6 +47,7 @@
4647
"@hawk.so/types": "^0.4.2",
4748
"@n1ru4l/json-patch-plus": "^0.2.0",
4849
"@node-saml/node-saml": "^5.0.1",
50+
"@octokit/rest": "^22.0.1",
4951
"@types/amqp-connection-manager": "^2.0.4",
5052
"@types/debug": "^4.1.5",
5153
"@types/escape-html": "^1.0.0",
@@ -76,7 +78,7 @@
7678
"graphql-scalars": "^1.17.0",
7779
"graphql-type-json": "^0.3.0",
7880
"graphql-upload": "^13",
79-
"jsonwebtoken": "^8.5.1",
81+
"jsonwebtoken": "^9.0.3",
8082
"lodash": "^4.17.15",
8183
"lodash.clonedeep": "^4.5.0",
8284
"lodash.mergewith": "^4.6.2",

0 commit comments

Comments
 (0)