{"id":4299,"date":"2026-04-15T07:00:00","date_gmt":"2026-04-14T22:00:00","guid":{"rendered":"https:\/\/litcoder.com\/?p=4299"},"modified":"2026-04-14T12:01:46","modified_gmt":"2026-04-14T03:01:46","slug":"openproject%ec%99%80-github-%ec%97%b0%eb%8f%99","status":"publish","type":"post","link":"https:\/\/litcoder.com\/?p=4299","title":{"rendered":"OpenProject\uc640 GitHub \uc5f0\ub3d9"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\uc5f0\ub3d9\uc744 \uc704\ud55c \uc124\uc815<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">#1 \uba3c\uc800 OpenProject\uc5d0\uc11c \uc5f0\ub3d9\uae30\ub2a5\uc744 \uc804\ub2f4\ud560 \uacc4\uc815\uc744 \ud558\ub098 \uc0dd\uc131(GitHub Bot)\ud574\uc900\ub2e4. \uadf8\ub9ac\uace0 \uc0c8\ub85c\uc6b4 role(Github integration)\uc744 \ud558\ub098 \ub9cc\ub4e4\uace0 <code>View work packages<\/code>\uc640 <code>Add comments <\/code>\uad8c\ud55c\uc744 \uc900\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">#2 GitHub\uc640 \uc5f0\ub3d9\ud558\uace0\uc790 \ud558\ub294 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc0dd\uc131\ud55c \uc804\ub2f4\uacc4\uc815(GitHub Bot)\uc744 \ucd94\uac00\ud558\uace0 \uc5ed\ud560\ub85c GitHub integration\uc744 \ubd80\uc5ec\ud55c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"599\" height=\"379\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/add_githubbot_member.png\" alt=\"\" class=\"wp-image-4303\" style=\"width:500px\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/add_githubbot_member.png 599w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/add_githubbot_member-300x190.png 300w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">#3 OpenProject\uc5d0 GitHub \uc804\ub2f4 \uacc4\uc815(GitHub Bot)\uc73c\ub85c \ub85c\uadf8\uc778\ud574\uc11c <code>Account settings<\/code> -&gt; <code>Access tokens<\/code> -&gt; <code>Provider tokens <\/code>-&gt; <code>API<\/code> \ud56d\ubaa9\uc73c\ub85c \uc774\ub3d9\ud574\uc11c access token\uc744 \ud558\ub098 \uc0dd\uc131\ud55c\ub2e4. \uc774 token\uc744 \ubcf5\uc0ac\ud574\uc11c GitHub\uc758 \ud574\ub2f9 \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c Webhooks \ud56d\ubaa9\uc5d0 \ub4f1\ub85d\ud558\uace0, &#8220;Send me everything&#8221; \uad8c\ud55c\uc744 \uc124\uc815\ud55c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"716\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook-1024x716.png\" alt=\"\" class=\"wp-image-4359\" style=\"width:500px\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook-1024x716.png 1024w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook-300x210.png 300w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook-768x537.png 768w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook-624x436.png 624w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/github-openproject-webhook.png 1402w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">#4 OpenProject\uc758 \ud504\ub85c\uc81d\ud2b8 \uc124\uc815\uc5d0\uc11c GitHub Module\uc744 \ud65c\uc131\ud654 \ud55c\ub2e4.<br> <code>Project settings -&gt; Modules -&gt; GitHub<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc5f0\ub3d9 \ud558\ub294 \ubc29\ubc95<\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"543\" height=\"448\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/opp_github_snippets.png\" alt=\"\" class=\"wp-image-4302\" style=\"width:500px\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/opp_github_snippets.png 543w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/opp_github_snippets-300x248.png 300w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">GitHub module\uc774 \ud65c\uc131\ud654 \ub418\uc5c8\ub2e4\uba74 \uac01 \ud2f0\ucf13\uc758 \ud56d\ubaa9\uc5d0 \uc704\uc640 \uac19\uc774 GITHUB \ud56d\ubaa9\uc774 \ub098\ud0c0\ub098\uace0 &#8220;Git snippets&#8221;\ub97c \ub20c\ub800\uc744 \ub54c \uc0ac\uc6a9 \ud560 \uc218 \uc788\ub294 Git \uba85\ub839\uc5b4 \ub4e4\uc758 preset \ub4e4\uc774 \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8220;<code>Create branch with empty commit<\/code>&#8220;\uc744 \ub20c\ub7ec\uc11c \ubcf5\uc0ac\ud55c \ud6c4 git repository\uc5d0\uc11c \ubd99\uc5ec \ub123\uc73c\uba74 \uc0c8\ub85c\uc6b4 branch\uac00 \uc0dd\uc131\ub418\uba74\uc11c \ube44\uc5b4 \uc788\ub294 commit\uc774 \ud558\ub098 \uc0dd\uae30\ub294\ub370, \uc774 commit\uc5d0 \uc218\uc815\uc0ac\ud56d\uc744 \uae30\ub85d\ud574\uc11c PR\uc744 \uc0dd\uc131\ud558\uba74 PR\uc758 Open\/CI(pass\/fail)\/Merged \ub4f1\uc758 \uc0c1\ud0dc\uac00 OpenProject ticket\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc790\ub3d9\uc73c\ub85c \ucd94\uc801\ub41c\ub2e4.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync-1024x569.png\" alt=\"\" class=\"wp-image-4307\" style=\"width:500px\" srcset=\"https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync-1024x569.png 1024w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync-300x167.png 300w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync-768x427.png 768w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync-624x347.png 624w, https:\/\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_github_sync.png 1102w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">\ucc38\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">OpenProject &#8211; <a href=\"https:\/\/www.openproject.org\/docs\/system-admin-guide\/integrations\/github-integration\/\">GitHub integration \ubb38\uc11c<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc5f0\ub3d9\uc744 \uc704\ud55c \uc124\uc815 #1 \uba3c\uc800 OpenProject\uc5d0\uc11c \uc5f0\ub3d9\uae30\ub2a5\uc744 \uc804\ub2f4\ud560 \uacc4\uc815\uc744 \ud558\ub098 \uc0dd\uc131(GitHub Bot)\ud574\uc900\ub2e4. \uadf8\ub9ac\uace0 \uc0c8\ub85c\uc6b4 role(Github integration)\uc744 \ud558\ub098 \ub9cc\ub4e4\uace0 View work packages\uc640 Add comments \uad8c\ud55c\uc744 \uc900\ub2e4. #2 GitHub\uc640 \uc5f0\ub3d9\ud558\uace0\uc790 \ud558\ub294 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc0dd\uc131\ud55c \uc804\ub2f4\uacc4\uc815(GitHub Bot)\uc744 \ucd94\uac00\ud558\uace0 \uc5ed\ud560\ub85c GitHub integration\uc744 \ubd80\uc5ec\ud55c\ub2e4. #3 OpenProject\uc5d0 GitHub \uc804\ub2f4 \uacc4\uc815(GitHub Bot)\uc73c\ub85c \ub85c\uadf8\uc778\ud574\uc11c Account settings -&gt; Access tokens -&gt; Provider tokens -&gt; API [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[6],"tags":[54,426,428,427],"class_list":["post-4299","post","type-post","status-publish","format-standard","hentry","category-tools","tag-github","tag-openproject","tag-token","tag-webhook"],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":4332,"url":"https:\/\/litcoder.com\/?p=4332","url_meta":{"origin":4299,"position":0},"title":"Release Please &#8211; Change log \uc0dd\uc131 \uc790\ub3d9\ud654","author":"litcoder","date":"2026\ub144 5\uc6d4 6\uc77c","format":false,"excerpt":"\ud300\uc5d0\uc11c Conventional commit\uc744 \ub530\ub974\uace0 \uc788\ub2e4\uba74, \uc774\uac83\uc744 \ud65c\uc6a9\ud574\uc11c change log\ub97c \ub9cc\ub4dc\ub294 \uac83\uacfc \uac19\uc740 \uadc0\ucc2e\uc740 \uc77c\ub4e4\uc744 \uc790\ub3d9\uc73c\ub85c \uc218\ud589\ud574 \uc8fc\ub294 \ub3c4\uad6c\ub4e4\uc774 \ub9ce\uc774 \uc788\ub2e4. \uc774 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uadf8 \uc911\uc5d0\uc11c\ub3c4 GitHub\uc5d0\uc11c \uc0ac\uc6a9\ud558\uae30\uc5d0 \ud3b8\ud558\ub2e4\ub294 release-please\ub97c Rust project\uc5d0 \uc801\uc6a9\ud574 \ubcf8 \ub0b4\uc6a9\uc744 \ub2e4\ub8ec\ub2e4. \uc0ac\uc804 \uc900\ube44 GitHub PAT(Personal Access Token) GitHub -> Settings -> Developer settings -> Personal access tokens\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/release-please-pr-created.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":4324,"url":"https:\/\/litcoder.com\/?p=4324","url_meta":{"origin":4299,"position":1},"title":"OpenProject\uc640 GitHub \uc5f0\ub3d9\ud558\ub294 \ubcf4\ub2e4 \uac04\ub2e8\ud55c \ubc29\ubc95","author":"litcoder","date":"2026\ub144 4\uc6d4 22\uc77c","format":false,"excerpt":"OpenProject\uc640 GitHub\uc758 \uc5f0\ub3d9\uc744 \uc704\ud574 \uc774\uc804\uc758 \ud3ec\uc2a4\ud305\uc5d0\uc11c \ub2e4\ub8ec \ubc29\ubc95\uc740 OpenProject\uc758 task ticket\uc5d0\uc788\ub294 Git snippets\uc758 \ub0b4\uc6a9\uc744 \ubcf5\uc0ac\ud574\uc11c \ud130\ubbf8\ub110\uc5d0 \ubd99\uc5ec\ub123\ub294 \uac83\uc774\uc5c8\ub294\ub370, \uc774 \ub54c \ub9cc\ub4e4\uc5b4\uc9c0\ub294 branch\uc758 \uc774\ub984\uc740 OpenProject ticket\uc758 \uc81c\ubaa9\uc5d0 \uae30\ubc18\ud55c \uac83\uc774\uc5b4\uc11c \uc790\uce6b\ud558\uba74 branch\uc758 \uc774\ub984\uc774 \uc9c0\ub098\uce58\uac8c \uae38\uc5b4\uc9c0\ub294 \ub370\ub2e4\uac00, \uc0ac\uc804\uc5d0 \uc815\ud574\ub454 \ud300\ub0b4\uc758 branch naming rule\uacfc \ucda9\ub3cc\ud558\uae30 \uc27d\ub2e4. \ub2e4\ud589\ud788\ub3c4 OpenProject\uc758 GitHub \uc790\ub3d9 \uc5f0\ub3d9\uae30\ub2a5\uc740 branch naming\uba85\uc774 \uc544\ub2cc\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/04\/op_commit_example.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":3322,"url":"https:\/\/litcoder.com\/?p=3322","url_meta":{"origin":4299,"position":2},"title":"GitHub release\uc5d0 \ubc14\uc774\ub108\ub9ac \ucca8\ubd80 \uc790\ub3d9\ud654","author":"litcoder","date":"2024\ub144 1\uc6d4 1\uc77c","format":false,"excerpt":"GitHub\uc5d0\uc11c release\ub97c \uc0dd\uc131\ud558\uba74 source code\uc758 snapshot\uc774 zip\uacfc tar.gz\ub85c \uc800\uc7a5\ub41c\ub2e4. \uc5ec\uae30\uc5d0 \ucd94\uac00\ud574\uc11c \ucef4\ud30c\uc77c\ub41c \uacb0\uacfc\uac00 \uc790\ub3d9\uc73c\ub85c \ucd94\uac00\ud558\ub3c4\ub85d \ud55c\ub2e4\uba74, \uac04\ub2e8\ud788 source code\uc640 \uc5f0\uacc4\ub41c \ubc14\uc774\ub108\ub9ac\ub3c4 \ud568\uaed8 \ubc30\ud3ec\ud560 \uc218 \uc788\uc744 \uac83\uc774\ub2e4. \uc774 \uae00\uc5d0\uc11c\ub294 \uc548\ub4dc\ub85c\uc774\ub4dc \ud504\ub85c\uc81d\ud2b8\ub97c \uac00\uc815\ud574\uc11c release\ub97c \uc0dd\uc131\ud560 \ub54c \uc548\ub4dc\ub85c\uc774\ub4dc APK\ub97c \ube4c\ub4dc\ud558\uace0 source code\uc640 \ud568\uaed8 \ubc30\ud3ec\ud558\ub294 \uac04\ub2e8\ud55c workflow\ub97c \uc124\uba85\ud55c\ub2e4. \uc804\uccb4 \ucf54\ub4dc Event trigger on: release:\u2026","rel":"","context":"&quot;Android&quot;\uc5d0\uc11c","block_context":{"text":"Android","link":"https:\/\/litcoder.com\/?cat=2"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2024\/01\/github_workflow_release_attached-e1704114929383.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2024\/01\/github_workflow_release_attached-e1704114929383.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2024\/01\/github_workflow_release_attached-e1704114929383.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2024\/01\/github_workflow_release_attached-e1704114929383.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":4318,"url":"https:\/\/litcoder.com\/?p=4318","url_meta":{"origin":4299,"position":3},"title":"Gmail\uc758 Sub-addressing \uae30\ub2a5\uacfc \ud65c\uc6a9","author":"litcoder","date":"2026\ub144 7\uc6d4 22\uc77c","format":false,"excerpt":"\uac70\uc758 \ubaa8\ub4e0 \uc778\ud130\ub137 \uc11c\ube44\uc2a4\ub4e4\uc774 \uc5f0\ub77d\ucc98\ub85c email \uc8fc\uc18c\ub97c \uae30\uc785\ud558\ub77c\uace0 \uc694\uad6c\ud55c\ub2e4. \ub54c\ub85c\ub294 \uac00\uc785\ud558\ub294 \uc11c\ube44\uc2a4\uc5d0 \ub530\ub77c \uc11c\ub85c \ub2e4\ub978 \uc774\uba54\uc77c\uc744 \uc0dd\uc131\ud558\uace0 \uac00\uc785\ud558\uae30\ub3c4 \ud558\ub294\ub370, \uc774\ub7ec\ub2e4 \ubcf4\uba74 \uc5b4\ub290\uc0c8 \uc218 \ub9ce\uc740 \uc774\uba54\uc77c \uacc4\uc815\ub4e4\uc744 \uc0c8\ub85c \ub9cc\ub4e4\uc5b4\uc57c \ud558\uace0 \uad00\ub9ac\uac00 \ubd88\uac00\ub2a5\ud55c \uc9c0\uacbd\uc5d0 \uc774\ub974\uac8c \ub420 \uc218\ub3c4 \uc788\ub2e4. \uc774 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \ubcc4\ub3c4\uc758 \uc124\uc815 \uc5c6\uc774 Gmail \uc8fc\uc18c\ub97c \uc5ec\ub7ec\uac1c\ub85c \ud655\uc7a5\ud558\uc5ec \uc218\uc2e0 \uba54\uc77c\uc744 \ub77c\ubca8\ub9c1\ud558\uace0, \ud544\ud130\ub9c1\ud560 \uc218\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/05\/plus_addressing_filter.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/05\/plus_addressing_filter.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/05\/plus_addressing_filter.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/05\/plus_addressing_filter.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1767,"url":"https:\/\/litcoder.com\/?p=1767","url_meta":{"origin":4299,"position":4},"title":"Firewall \ubc14\uae65\uc758 git\uc744 clone\ud558\uae30","author":"litcoder","date":"2019\ub144 1\uc6d4 18\uc77c","format":false,"excerpt":"Firewall\ub4f1\uc774 \ub9c9\uace0 \uc788\uc5b4\uc11c \uc678\ubd80\uc758 git repository\ub97c HTTPS\ub85c\ub294 clone\ud560 \uc218 \uc788\uc9c0\ub9cc SSH\ub85c\ub294 \ub9c9\ud788\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4. \ud2b9\ud788\ub098 GitHub\uc758 two-factor authentication\uc744 \uc124\uc815\ud55c \uacbd\uc6b0\ub77c\uba74 \ub9e4\ubc88 token\uac12\uc744 \uc785\ub825\ud558\ub294 \uac83 \ub54c\ubb38\uc5d0 commit\uc744 push\ud558\ub294\uac8c \ub9e4\uc6b0 \uadc0\ucc2e\uc544\uc9c4\ub2e4. \uc774 \ubb38\uc81c\ub294 ssh config file\uc5d0 Proxy command\ub97c \uc124\uc815\ud574\uc11c \ud574\uacb0\ud560 \uc218 \uc788\ub294\ub370${HOME}\/.ssh\/config\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \ucd94\uac00\ud574 \uc8fc\uace0, credential caching\uc744 \uc124\uc815\ud574 \uc900\ub2e4. (-S option\uc5d0\ub294\u2026","rel":"","context":"&quot;Tools &amp; Tips&quot;\uc5d0\uc11c","block_context":{"text":"Tools &amp; Tips","link":"https:\/\/litcoder.com\/?cat=6"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4707,"url":"https:\/\/litcoder.com\/?p=4707","url_meta":{"origin":4299,"position":5},"title":"Smoke test\ub97c \uc704\ud55c GitHub Self-hosted Runner \uc124\uc815","author":"litcoder","date":"2026\ub144 9\uc6d4 16\uc77c","format":false,"excerpt":"Unittest\uac00 \uac1c\ubc1c \uacfc\uc815\uc5d0\uc11c \ub17c\ub9ac\ub97c \uc810\uac80\ud558\ub294\ub370 \uc720\uc6a9\ud558\uae30\ub294 \ud558\uc9c0\ub9cc \uc774\uc138\uc0c1\uc5d0\ub294 integration test\uac00 \ub2f4\ub2f9\ud574\uc57c \ud558\ub294 \ubd80\ubd84\ub3c4 \uc5c4\uc5f0\ud788 \uc874\uc7ac\ud55c\ub2e4. \uac01\uac01\uc758 \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc774 \uc798 \uc791\uc131\ub418\uc5c8\ub2e4 \ud560\uc9c0\ub77c\ub3c4 \uc774\uac83\uc744 \ud1b5\ud569\ud588\uc744 \ub54c\uc758 \ub3d9\uc791\uc744 \ubcf4\uc7a5\ud558\ub294 \uac83\uc740 \ub610 \ub2e4\ub978 \uc774\uc57c\uae30 \uc774\uae30 \ub54c\ubb38\uc774\ub2e4. \uc774 \ubd80\ubd84\uc744 \ucee4\ubc84\ud558\uae30 \uc704\ud55c \ubaa9\uc801\uc73c\ub85c \uac00\uc0c1\uc758 \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud558\uace0 \ud504\ub85c\uadf8\ub7a8\uc758 \ucc98\uc74c \uc2dc\uc791 \ubd80\ubd84\ubd80\ud130 \ub9c8\uc9c0\ub9c9 \ucd9c\ub825 \ubd80\ubd84\uae4c\uc9c0(E2E) \uc810\uac80\ud558\ub294 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ub9cc\ub4e4\uc5b4 \ub450\uc5c8\ub2e4.\u2026","rel":"","context":"&quot;Linux&quot;\uc5d0\uc11c","block_context":{"text":"Linux","link":"https:\/\/litcoder.com\/?cat=4"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/litcoder.com\/wp-content\/uploads\/2026\/08\/github_vm_no_space_error.png?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4299"}],"version-history":[{"count":10,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4299\/revisions"}],"predecessor-version":[{"id":4364,"href":"https:\/\/litcoder.com\/index.php?rest_route=\/wp\/v2\/posts\/4299\/revisions\/4364"}],"wp:attachment":[{"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/litcoder.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}