17
17
18
18
if [ -z " $GITHUB_TOKEN " ]; then
19
19
echo " No GITHUB_TOKEN in the workspace environment!"
20
+ echo " The user must be authenticated with Github before this script can be run."
20
21
exit 1
21
22
fi
22
23
23
- PUBLIC_KEY_NAME=" $CODER_ACCESS_URL Workspaces"
24
-
25
24
echo " Fetching Coder public SSH key..."
26
- PUBLIC_KEY=$( curl " $CODER_ACCESS_URL /api/v2/users/me/gitsshkey" \
25
+ PUBLIC_KEY_RESPONSE=$( curl -L -s \
26
+ -w " %{http_code}" \
27
27
-H ' accept: application/json' \
28
28
-H " cookie: coder_session_token=$CODER_OWNER_SESSION_TOKEN " \
29
- --fail \
30
- -s \
31
- | jq -r ' .public_key'
29
+ " $CODER_ACCESS_URL /api/v2/users/me/gitsshkey"
32
30
)
31
+ PUBLIC_KEY_RESPONSE_STATUS=$( tail -n1 <<< " $PUBLIC_KEY_RESPONSE" )
32
+ PUBLIC_KEY_BODY=$( sed \$ d <<< " $PUBLIC_KEY_RESPONSE" )
33
+
34
+ if [ " $PUBLIC_KEY_RESPONSE_STATUS " -ne 200 ]; then
35
+ echo " Failed to fetch Coder public SSH key with status code $PUBLIC_KEY_RESPONSE_STATUS !"
36
+ echo " $PUBLIC_KEY_BODY "
37
+ exit 1
38
+ fi
39
+
40
+ PUBLIC_KEY=$( jq -r ' .public_key' <<< " $PUBLIC_KEY_BODY" )
41
+ echo " Coder public SSH key found!"
33
42
34
43
if [ -z " $PUBLIC_KEY " ]; then
35
44
echo " No Coder public SSH key found!"
36
45
exit 1
37
46
fi
38
47
39
48
echo " Fetching GitHub public SSH keys..."
40
- GITHUB_MATCH=$( curl \
49
+ GITHUB_KEYS_RESPONSE=$( curl -L -s \
50
+ -w " %{http_code}" \
41
51
-H " Accept: application/vnd.github+json" \
42
52
-H " Authorization: Bearer $GITHUB_TOKEN " \
43
53
-H " X-GitHub-Api-Version: 2022-11-28" \
44
- --fail \
45
- -s \
46
- https://api.github.com/user/keys \
47
- | jq -r --arg PUBLIC_KEY " $PUBLIC_KEY " ' .[] | select(.key == $PUBLIC_KEY) | .key'
54
+ https://api.github.com/user/keys
48
55
)
56
+ GITHUB_KEYS_RESPONSE_STATUS=$( tail -n1 <<< " $GITHUB_KEYS_RESPONSE" )
57
+ GITHUB_KEYS_RESPONSE_BODY=$( sed \$ d <<< " $GITHUB_KEYS_RESPONSE" )
58
+
59
+ if [ " $GITHUB_KEYS_RESPONSE_STATUS " -ne 200 ]; then
60
+ echo " Failed to fetch Coder public SSH key with status code $GITHUB_KEYS_RESPONSE_STATUS !"
61
+ echo " $GITHUB_KEYS_RESPONSE_BODY "
62
+ exit 1
63
+ fi
64
+
65
+ GITHUB_MATCH=$( jq -r --arg PUBLIC_KEY " $PUBLIC_KEY " ' .[] | select(.key == $PUBLIC_KEY) | .key' <<< " $GITHUB_KEYS_RESPONSE_BODY" )
49
66
50
67
if [ " $PUBLIC_KEY " = " $GITHUB_MATCH " ]; then
51
68
echo " Coder public SSH key is already uploaded to GitHub!"
52
69
exit 0
53
70
fi
71
+
54
72
echo " Coder public SSH key not found in GitHub keys!"
55
73
echo " Uploading Coder public SSH key to GitHub..."
56
- curl -L \
74
+ CODER_PUBLIC_KEY_NAME=" $CODER_ACCESS_URL Workspaces"
75
+ UPLOAD_RESPONSE=$( curl -L -s \
57
76
-X POST \
77
+ -w " %{http_code}" \
58
78
-H " Accept: application/vnd.github+json" \
59
79
-H " Authorization: Bearer $GITHUB_TOKEN " \
60
80
-H " X-GitHub-Api-Version: 2022-11-28" \
61
81
https://api.github.com/user/keys \
62
- -d " {\" title\" :\" $PUBLIC_KEY_NAME \" ,\" key\" :\" $PUBLIC_KEY \" }"
82
+ -d " {\" title\" :\" $CODER_PUBLIC_KEY_NAME \" ,\" key\" :\" nah\" }"
83
+ )
84
+ UPLOAD_RESPONSE_STATUS=$( tail -n1 <<< " $UPLOAD_RESPONSE" )
85
+ UPLOAD_RESPONSE_BODY=$( sed \$ d <<< " $UPLOAD_RESPONSE" )
86
+
87
+ if [ " $UPLOAD_RESPONSE_STATUS " -ne 201 ]; then
88
+ echo " Failed to upload Coder public SSH key with status code $UPLOAD_RESPONSE_STATUS !"
89
+ echo " $UPLOAD_RESPONSE_BODY "
90
+ exit 1
91
+ fi
63
92
64
93
echo " Coder public SSH key uploaded to GitHub!"
0 commit comments