[{"data":1,"prerenderedAt":1237},["ShallowReactive",2],{"docs-page-en-\u002Fdocs\u002Fintegrations\u002Fgithub":3,"docs-navigation-en":1138,"docs-surround-en-\u002Fdocs\u002Fintegrations\u002Fgithub":1232},{"id":4,"title":5,"body":6,"claimDependencies":1121,"description":12,"extension":1125,"locale":1126,"meta":1127,"missingMedia":1128,"navigation":325,"owner":1129,"path":1130,"reviewStatus":1131,"seo":1132,"staleLinks":1133,"stem":1134,"technicalRisk":1135,"translationKey":1136,"__hash__":1137},"docs_en\u002Fdocs\u002F4.integrations\u002F1.github.md","GitHub Integration",{"type":7,"value":8,"toc":1083},"minimark",[9,13,18,21,37,41,44,87,91,96,153,162,166,190,193,197,212,215,219,223,226,299,303,484,488,572,576,583,586,589,593,597,608,622,626,648,652,655,673,678,689,692,696,700,706,712,734,738,743,747,764,768,773,777,797,801,806,810,821,825,829,855,859,885,889,915,919,923,937,941,944,958,962,965,991,994,998,1006,1009,1041,1045,1048,1079],[10,11,12],"p",{},"Jetscale integrates with GitHub to automatically create pull requests containing production-ready Terraform code for your cost optimization recommendations.",[14,15,17],"h2",{"id":16},"overview","Overview",[10,19,20],{},"The GitHub integration allows Jetscale to:",[22,23,24,28,31,34],"ul",{},[25,26,27],"li",{},"Push generated Terraform code to your repositories",[25,29,30],{},"Create pull requests with detailed optimization recommendations",[25,32,33],{},"Integrate seamlessly with your existing code review workflow",[25,35,36],{},"Track recommendation implementation status",[14,38,40],{"id":39},"prerequisites","Prerequisites",[10,42,43],{},"Before connecting GitHub, you'll need:",[45,46,47,54,60],"ol",{},[25,48,49,53],{},[50,51,52],"strong",{},"GitHub Account"," with access to your infrastructure repository",[25,55,56,59],{},[50,57,58],{},"Repository Access"," with push permissions",[25,61,62,65,66],{},[50,63,64],{},"Personal Access Token"," (PAT) with the following scopes:\n",[22,67,68,75,81],{},[25,69,70,74],{},[71,72,73],"code",{},"repo"," - Full control of private repositories",[25,76,77,80],{},[71,78,79],{},"read:org"," - Read org and team membership",[25,82,83,86],{},[71,84,85],{},"user:email"," - Access user email addresses",[14,88,90],{"id":89},"setup-guide","Setup Guide",[92,93,95],"h3",{"id":94},"step-1-create-a-github-personal-access-token","Step 1: Create a GitHub Personal Access Token",[45,97,98,108,118,121,142,147],{},[25,99,100,101],{},"Navigate to ",[102,103,107],"a",{"href":104,"rel":105},"https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens",[106],"nofollow","GitHub Settings → Developer settings → Personal access tokens",[25,109,110,111,114,115],{},"Click ",[50,112,113],{},"Generate new token"," → ",[50,116,117],{},"Generate new token (classic)",[25,119,120],{},"Give your token a descriptive name (e.g., \"Jetscale Integration\")",[25,122,123,124],{},"Select the required scopes:\n",[22,125,126,132,137],{},[25,127,128,129,131],{},"✓ ",[71,130,73],{}," (Full control of private repositories)",[25,133,128,134,136],{},[71,135,79],{}," (Read org and team membership)",[25,138,128,139,141],{},[71,140,85],{}," (Access user email addresses)",[25,143,110,144],{},[50,145,146],{},"Generate token",[25,148,149,152],{},[50,150,151],{},"Important",": Copy your token immediately - you won't be able to see it again",[154,155,156],"blockquote",{},[10,157,158,161],{},[50,159,160],{},"Security Note",": Store your token securely. Jetscale encrypts tokens at rest and never logs or exposes them.",[92,163,165],{"id":164},"step-2-connect-github-in-jetscale","Step 2: Connect GitHub in Jetscale",[45,167,168,177,182,185],{},[25,169,100,170,114,173,176],{},[50,171,172],{},"Settings",[50,174,175],{},"Integrations"," in Jetscale",[25,178,110,179],{},[50,180,181],{},"Connect GitHub",[25,183,184],{},"Paste your Personal Access Token",[25,186,110,187],{},[50,188,189],{},"Verify and Connect",[10,191,192],{},"Jetscale will verify your token and display your GitHub account information.",[92,194,196],{"id":195},"step-3-select-your-repository","Step 3: Select Your Repository",[45,198,199,206,209],{},[25,200,201,202,205],{},"From the ",[50,203,204],{},"Repository"," dropdown, select your Terraform infrastructure repository",[25,207,208],{},"Jetscale will verify you have push access",[25,210,211],{},"The selected repository will be used for all future pull requests",[10,213,214],{},"You can change the selected repository at any time from the integrations settings.",[14,216,218],{"id":217},"how-it-works","How It Works",[92,220,222],{"id":221},"pull-request-creation","Pull Request Creation",[10,224,225],{},"When you approve a cost optimization recommendation in Jetscale:",[45,227,228,248,269],{},[25,229,230,233,234],{},[50,231,232],{},"Branch Creation",": Jetscale creates a new feature branch from your default branch",[22,235,236,242],{},[25,237,238,239],{},"Branch naming format: ",[71,240,241],{},"jetscale\u002Foptimization-{resource-type}-{date}",[25,243,244,245],{},"Example: ",[71,246,247],{},"jetscale\u002Foptimization-rds-2024-01-15",[25,249,250,253,254,257,258],{},[50,251,252],{},"File Push",": Generated Terraform files are pushed to the ",[71,255,256],{},"terraform\u002F"," directory",[22,259,260,263,266],{},[25,261,262],{},"Files include all necessary resource definitions",[25,264,265],{},"Comments explain the optimization rationale",[25,267,268],{},"Variables are extracted where appropriate",[25,270,271,274,275],{},[50,272,273],{},"Pull Request",": A PR is automatically created with:",[22,276,277,283,289],{},[25,278,279,282],{},[50,280,281],{},"Title",": Descriptive optimization summary",[25,284,285,288],{},[50,286,287],{},"Description",": Detailed cost impact analysis, performance considerations, and implementation notes",[25,290,291,294,295,298],{},[50,292,293],{},"Labels",": Automatically tagged with ",[71,296,297],{},"jetscale"," and resource type",[92,300,302],{"id":301},"pull-request-structure","Pull Request Structure",[304,305,310],"pre",{"className":306,"code":307,"language":308,"meta":309,"style":309},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Cost Optimization: RDS Instance Right-Sizing\n\n### Summary\nDowngrade RDS instance `production-db` from db.r5.2xlarge to db.r5.xlarge\n\n### Cost Impact\n- **Current Monthly Cost**: $730.00\n- **Projected Monthly Cost**: $365.00\n- **Monthly Savings**: $365.00 (50% reduction)\n- **Annual Savings**: $4,380.00\n\n### Performance Analysis\n- Current CPU utilization: 15-25% average\n- Current memory utilization: 30-40% average\n- Recommended instance provides 2x current peak usage\n- No performance degradation expected\n\n### Files Changed\n- `terraform\u002Frds_production_db.tf` - Updated instance class\n- `terraform\u002Fvariables.tf` - Added instance_class variable\n\n### Testing Recommendations\n1. Apply changes in staging environment first\n2. Monitor performance metrics for 48 hours\n3. Verify application response times remain consistent\n4. Check CloudWatch alarms are properly configured\n\n---\n🤖 Generated by [Jetscale](https:\u002F\u002Fjetscale.ai)\n","markdown","",[71,311,312,320,327,333,339,344,350,356,362,368,374,379,385,391,397,403,409,414,420,426,432,437,443,449,455,461,467,472,478],{"__ignoreMap":309},[313,314,317],"span",{"class":315,"line":316},"line",1,[313,318,319],{},"## Cost Optimization: RDS Instance Right-Sizing\n",[313,321,323],{"class":315,"line":322},2,[313,324,326],{"emptyLinePlaceholder":325},true,"\n",[313,328,330],{"class":315,"line":329},3,[313,331,332],{},"### Summary\n",[313,334,336],{"class":315,"line":335},4,[313,337,338],{},"Downgrade RDS instance `production-db` from db.r5.2xlarge to db.r5.xlarge\n",[313,340,342],{"class":315,"line":341},5,[313,343,326],{"emptyLinePlaceholder":325},[313,345,347],{"class":315,"line":346},6,[313,348,349],{},"### Cost Impact\n",[313,351,353],{"class":315,"line":352},7,[313,354,355],{},"- **Current Monthly Cost**: $730.00\n",[313,357,359],{"class":315,"line":358},8,[313,360,361],{},"- **Projected Monthly Cost**: $365.00\n",[313,363,365],{"class":315,"line":364},9,[313,366,367],{},"- **Monthly Savings**: $365.00 (50% reduction)\n",[313,369,371],{"class":315,"line":370},10,[313,372,373],{},"- **Annual Savings**: $4,380.00\n",[313,375,377],{"class":315,"line":376},11,[313,378,326],{"emptyLinePlaceholder":325},[313,380,382],{"class":315,"line":381},12,[313,383,384],{},"### Performance Analysis\n",[313,386,388],{"class":315,"line":387},13,[313,389,390],{},"- Current CPU utilization: 15-25% average\n",[313,392,394],{"class":315,"line":393},14,[313,395,396],{},"- Current memory utilization: 30-40% average\n",[313,398,400],{"class":315,"line":399},15,[313,401,402],{},"- Recommended instance provides 2x current peak usage\n",[313,404,406],{"class":315,"line":405},16,[313,407,408],{},"- No performance degradation expected\n",[313,410,412],{"class":315,"line":411},17,[313,413,326],{"emptyLinePlaceholder":325},[313,415,417],{"class":315,"line":416},18,[313,418,419],{},"### Files Changed\n",[313,421,423],{"class":315,"line":422},19,[313,424,425],{},"- `terraform\u002Frds_production_db.tf` - Updated instance class\n",[313,427,429],{"class":315,"line":428},20,[313,430,431],{},"- `terraform\u002Fvariables.tf` - Added instance_class variable\n",[313,433,435],{"class":315,"line":434},21,[313,436,326],{"emptyLinePlaceholder":325},[313,438,440],{"class":315,"line":439},22,[313,441,442],{},"### Testing Recommendations\n",[313,444,446],{"class":315,"line":445},23,[313,447,448],{},"1. Apply changes in staging environment first\n",[313,450,452],{"class":315,"line":451},24,[313,453,454],{},"2. Monitor performance metrics for 48 hours\n",[313,456,458],{"class":315,"line":457},25,[313,459,460],{},"3. Verify application response times remain consistent\n",[313,462,464],{"class":315,"line":463},26,[313,465,466],{},"4. Check CloudWatch alarms are properly configured\n",[313,468,470],{"class":315,"line":469},27,[313,471,326],{"emptyLinePlaceholder":325},[313,473,475],{"class":315,"line":474},28,[313,476,477],{},"---\n",[313,479,481],{"class":315,"line":480},29,[313,482,483],{},"🤖 Generated by [Jetscale](https:\u002F\u002Fjetscale.ai)\n",[92,485,487],{"id":486},"terraform-code-example","Terraform Code Example",[304,489,493],{"className":490,"code":491,"language":492,"meta":309,"style":309},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","resource \"aws_db_instance\" \"production_db\" {\n  identifier     = \"production-db\"\n  engine         = \"postgres\"\n  engine_version = \"14.7\"\n\n  # Optimized from db.r5.2xlarge to db.r5.xlarge\n  # Cost reduction: $365\u002Fmonth (50%)\n  # Based on 15-25% avg CPU, 30-40% avg memory utilization\n  instance_class = \"db.r5.xlarge\"\n\n  allocated_storage     = 100\n  storage_type          = \"gp3\"\n  storage_encrypted     = true\n\n  # ... other configuration remains unchanged\n}\n","hcl",[71,494,495,500,505,510,515,519,524,529,534,539,543,548,553,558,562,567],{"__ignoreMap":309},[313,496,497],{"class":315,"line":316},[313,498,499],{},"resource \"aws_db_instance\" \"production_db\" {\n",[313,501,502],{"class":315,"line":322},[313,503,504],{},"  identifier     = \"production-db\"\n",[313,506,507],{"class":315,"line":329},[313,508,509],{},"  engine         = \"postgres\"\n",[313,511,512],{"class":315,"line":335},[313,513,514],{},"  engine_version = \"14.7\"\n",[313,516,517],{"class":315,"line":341},[313,518,326],{"emptyLinePlaceholder":325},[313,520,521],{"class":315,"line":346},[313,522,523],{},"  # Optimized from db.r5.2xlarge to db.r5.xlarge\n",[313,525,526],{"class":315,"line":352},[313,527,528],{},"  # Cost reduction: $365\u002Fmonth (50%)\n",[313,530,531],{"class":315,"line":358},[313,532,533],{},"  # Based on 15-25% avg CPU, 30-40% avg memory utilization\n",[313,535,536],{"class":315,"line":364},[313,537,538],{},"  instance_class = \"db.r5.xlarge\"\n",[313,540,541],{"class":315,"line":370},[313,542,326],{"emptyLinePlaceholder":325},[313,544,545],{"class":315,"line":376},[313,546,547],{},"  allocated_storage     = 100\n",[313,549,550],{"class":315,"line":381},[313,551,552],{},"  storage_type          = \"gp3\"\n",[313,554,555],{"class":315,"line":387},[313,556,557],{},"  storage_encrypted     = true\n",[313,559,560],{"class":315,"line":393},[313,561,326],{"emptyLinePlaceholder":325},[313,563,564],{"class":315,"line":399},[313,565,566],{},"  # ... other configuration remains unchanged\n",[313,568,569],{"class":315,"line":405},[313,570,571],{},"}\n",[14,573,575],{"id":574},"repository-permissions","Repository Permissions",[10,577,578,579,582],{},"Jetscale requires ",[50,580,581],{},"push"," access to your repository to create branches and pull requests. The integration will:",[10,584,585],{},"✓ Create feature branches\n✓ Push Terraform files\n✓ Create pull requests\n✓ Read repository metadata",[10,587,588],{},"✗ Cannot merge pull requests\n✗ Cannot delete branches\n✗ Cannot modify existing files outside of created PRs\n✗ Cannot access repository secrets",[14,590,592],{"id":591},"managing-the-integration","Managing the Integration",[92,594,596],{"id":595},"view-integration-status","View Integration Status",[10,598,599,600,114,602,114,604,607],{},"From ",[50,601,172],{},[50,603,175],{},[50,605,606],{},"GitHub",", you can view:",[22,609,610,613,616,619],{},[25,611,612],{},"Connected GitHub account",[25,614,615],{},"Selected repository",[25,617,618],{},"Last verification time",[25,620,621],{},"Recent pull requests created by Jetscale",[92,623,625],{"id":624},"change-repository","Change Repository",[45,627,628,636,640,643],{},[25,629,100,630,114,632,114,634],{},[50,631,172],{},[50,633,175],{},[50,635,606],{},[25,637,110,638],{},[50,639,625],{},[25,641,642],{},"Select a different repository from the dropdown",[25,644,110,645],{},[50,646,647],{},"Update",[92,649,651],{"id":650},"disconnect-github","Disconnect GitHub",[10,653,654],{},"To remove the GitHub integration:",[45,656,657,665,670],{},[25,658,100,659,114,661,114,663],{},[50,660,172],{},[50,662,175],{},[50,664,606],{},[25,666,110,667],{},[50,668,669],{},"Disconnect",[25,671,672],{},"Confirm disconnection",[10,674,675,677],{},[50,676,151],{},": Disconnecting will:",[22,679,680,683,686],{},[25,681,682],{},"Remove your stored access token from Jetscale",[25,684,685],{},"Stop automatic PR creation for new recommendations",[25,687,688],{},"Preserve existing pull requests (they remain open in GitHub)",[10,690,691],{},"You can reconnect at any time using a new or existing Personal Access Token.",[14,693,695],{"id":694},"troubleshooting","Troubleshooting",[92,697,699],{"id":698},"token-verification-failed","Token Verification Failed",[10,701,702,705],{},[50,703,704],{},"Problem",": \"Invalid GitHub Token\" error when connecting",[10,707,708,711],{},[50,709,710],{},"Solutions",":",[22,713,714,725,728,731],{},[25,715,716,717,719,720,719,722,724],{},"Verify all required scopes are selected (",[71,718,73],{},", ",[71,721,79],{},[71,723,85],{},")",[25,726,727],{},"Check the token hasn't expired",[25,729,730],{},"Ensure you copied the complete token without extra spaces",[25,732,733],{},"Try generating a new token with the correct scopes",[92,735,737],{"id":736},"repository-not-listed","Repository Not Listed",[10,739,740,742],{},[50,741,704],{},": Can't find your repository in the selection dropdown",[10,744,745,711],{},[50,746,710],{},[22,748,749,752,758,761],{},[25,750,751],{},"Verify you have push access to the repository",[25,753,754,755,757],{},"Check if the repository belongs to an organization - ensure your token has ",[71,756,79],{}," scope",[25,759,760],{},"Try reconnecting with a new token",[25,762,763],{},"Confirm the repository exists and isn't archived",[92,765,767],{"id":766},"pull-request-creation-failed","Pull Request Creation Failed",[10,769,770,772],{},[50,771,704],{},": Recommendation approved but PR wasn't created",[10,774,775,711],{},[50,776,710],{},[22,778,779,782,785,788],{},[25,780,781],{},"Verify branch doesn't already exist with the same name",[25,783,784],{},"Check you still have push access to the repository",[25,786,787],{},"Ensure the default branch hasn't been deleted or renamed",[25,789,790,791,796],{},"Review GitHub's ",[102,792,795],{"href":793,"rel":794},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Frest\u002Foverview\u002Fresources-in-the-rest-api#rate-limiting",[106],"rate limits"," - you may need to wait briefly",[92,798,800],{"id":799},"branch-already-exists","Branch Already Exists",[10,802,803,805],{},[50,804,704],{},": \"Branch already exists\" error when creating PR",[10,807,808,711],{},[50,809,710],{},[22,811,812,815,818],{},[25,813,814],{},"Delete or rename the existing branch in GitHub",[25,816,817],{},"Retry the optimization recommendation - Jetscale will generate a new branch name with timestamp",[25,819,820],{},"Merge or close the existing PR if it's from a previous recommendation",[14,822,824],{"id":823},"best-practices","Best Practices",[92,826,828],{"id":827},"token-management","Token Management",[22,830,831,837,843,849],{},[25,832,833,836],{},[50,834,835],{},"Create a dedicated token"," for Jetscale instead of reusing tokens",[25,838,839,842],{},[50,840,841],{},"Set an expiration date"," and renew before expiry",[25,844,845,848],{},[50,846,847],{},"Use fine-grained permissions"," when they become available for your org",[25,850,851,854],{},[50,852,853],{},"Rotate tokens regularly"," (every 90 days recommended)",[92,856,858],{"id":857},"repository-configuration","Repository Configuration",[22,860,861,867,873,879],{},[25,862,863,866],{},[50,864,865],{},"Use a dedicated repository"," for Terraform infrastructure",[25,868,869,872],{},[50,870,871],{},"Enable branch protection"," on your default branch to require reviews",[25,874,875,878],{},[50,876,877],{},"Configure CODEOWNERS"," to automatically request reviews from your team",[25,880,881,884],{},[50,882,883],{},"Set up CI\u002FCD checks"," to validate Terraform changes before merging",[92,886,888],{"id":887},"pull-request-workflow","Pull Request Workflow",[45,890,891,897,903,909],{},[25,892,893,896],{},[50,894,895],{},"Review the PR description"," for cost impact and performance analysis",[25,898,899,902],{},[50,900,901],{},"Test in staging"," before applying to production",[25,904,905,908],{},[50,906,907],{},"Monitor metrics"," after applying changes",[25,910,911,914],{},[50,912,913],{},"Close PRs you won't implement"," rather than leaving them open indefinitely",[14,916,918],{"id":917},"security-considerations","Security Considerations",[92,920,922],{"id":921},"token-security","Token Security",[22,924,925,928,931,934],{},[25,926,927],{},"Jetscale encrypts Personal Access Tokens at rest using AES-256",[25,929,930],{},"Tokens are never logged or exposed in API responses",[25,932,933],{},"All API calls to GitHub use HTTPS with TLS 1.2+",[25,935,936],{},"Tokens are stored separately from user data with restricted access",[92,938,940],{"id":939},"audit-trail","Audit Trail",[10,942,943],{},"Every action taken by Jetscale is recorded:",[22,945,946,949,952,955],{},[25,947,948],{},"All GitHub API calls are logged",[25,950,951],{},"Pull request creation is tracked per recommendation",[25,953,954],{},"Failed attempts are captured with error details",[25,956,957],{},"Audit logs are available in your Jetscale dashboard",[92,959,961],{"id":960},"revoking-access","Revoking Access",[10,963,964],{},"To immediately revoke Jetscale's access:",[45,966,967,977,983],{},[25,968,969,972,973],{},[50,970,971],{},"In GitHub",": Navigate to ",[102,974,976],{"href":104,"rel":975},[106],"Settings → Applications → Personal access tokens",[25,978,110,979,982],{},[50,980,981],{},"Delete"," next to the Jetscale token",[25,984,985,988,989],{},[50,986,987],{},"In Jetscale",": Navigate to Settings → Integrations → GitHub and click ",[50,990,669],{},[10,992,993],{},"Once revoked, Jetscale immediately loses all access to your repositories.",[14,995,997],{"id":996},"api-reference","API Reference",[10,999,1000,1001,1005],{},"For programmatic access to the GitHub integration, see our ",[102,1002,1004],{"href":1003},"\u002Fdocs\u002Fapi-reference#github-integration","API Documentation",".",[10,1007,1008],{},"Key endpoints:",[22,1010,1011,1017,1023,1029,1035],{},[25,1012,1013,1016],{},[71,1014,1015],{},"POST \u002Fapi\u002Fv1\u002Fgithub\u002Faction\u002Fconnect"," - Connect GitHub account",[25,1018,1019,1022],{},[71,1020,1021],{},"POST \u002Fapi\u002Fv1\u002Fgithub\u002Faction\u002Fselect-repo"," - Select repository",[25,1024,1025,1028],{},[71,1026,1027],{},"GET \u002Fapi\u002Fv1\u002Fgithub\u002Frepos"," - List accessible repositories",[25,1030,1031,1034],{},[71,1032,1033],{},"POST \u002Fapi\u002Fv1\u002Fgithub\u002Faction\u002Fpr\u002Fcreate"," - Create pull request",[25,1036,1037,1040],{},[71,1038,1039],{},"POST \u002Fapi\u002Fv1\u002Fgithub\u002Faction\u002Fdisconnect"," - Disconnect GitHub",[14,1042,1044],{"id":1043},"support","Support",[10,1046,1047],{},"Need help with GitHub integration?",[22,1049,1050,1060,1069],{},[25,1051,1052,1055,1056],{},[50,1053,1054],{},"Email",": ",[102,1057,1059],{"href":1058},"mailto:support@jetscale.ai","support@jetscale.ai",[25,1061,1062,1055,1065],{},[50,1063,1064],{},"Documentation",[102,1066,1068],{"href":1067},"\u002Fdocs\u002Ffaq","FAQ",[25,1070,1071,1055,1074],{},[50,1072,1073],{},"GitHub Issues",[102,1075,1078],{"href":1076,"rel":1077},"https:\u002F\u002Fgithub.com\u002FJetscale-ai\u002Fjetscale-docs\u002Fissues",[106],"Report a problem",[1080,1081,1082],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":309,"searchDepth":322,"depth":322,"links":1084},[1085,1086,1087,1092,1097,1098,1103,1109,1114,1119,1120],{"id":16,"depth":322,"text":17},{"id":39,"depth":322,"text":40},{"id":89,"depth":322,"text":90,"children":1088},[1089,1090,1091],{"id":94,"depth":329,"text":95},{"id":164,"depth":329,"text":165},{"id":195,"depth":329,"text":196},{"id":217,"depth":322,"text":218,"children":1093},[1094,1095,1096],{"id":221,"depth":329,"text":222},{"id":301,"depth":329,"text":302},{"id":486,"depth":329,"text":487},{"id":574,"depth":322,"text":575},{"id":591,"depth":322,"text":592,"children":1099},[1100,1101,1102],{"id":595,"depth":329,"text":596},{"id":624,"depth":329,"text":625},{"id":650,"depth":329,"text":651},{"id":694,"depth":322,"text":695,"children":1104},[1105,1106,1107,1108],{"id":698,"depth":329,"text":699},{"id":736,"depth":329,"text":737},{"id":766,"depth":329,"text":767},{"id":799,"depth":329,"text":800},{"id":823,"depth":322,"text":824,"children":1110},[1111,1112,1113],{"id":827,"depth":329,"text":828},{"id":857,"depth":329,"text":858},{"id":887,"depth":329,"text":888},{"id":917,"depth":322,"text":918,"children":1115},[1116,1117,1118],{"id":921,"depth":329,"text":922},{"id":939,"depth":329,"text":940},{"id":960,"depth":329,"text":961},{"id":996,"depth":322,"text":997},{"id":1043,"depth":322,"text":1044},[1122,1123,1124],"integration-authentication","integration-availability","terraform-generation","md","en",{},[],"Product Integrations","\u002Fdocs\u002Fintegrations\u002Fgithub","legacy-import",{"title":5,"description":12},[],"docs\u002F4.integrations\u002F1.github","high","integrations\u002Fgithub","9FYjy5VPTOhlh78C_-jMirxhDdqX9QYW2XA0C5Vxkc0",[1139],{"title":1140,"path":1141,"stem":1142,"children":1143},"Docs","\u002Fdocs","docs",[1144,1147,1151,1155,1159,1163,1181,1185,1223,1227,1230],{"title":1145,"path":1141,"stem":1146},"Jetscale Documentation","docs\u002Findex",{"title":1148,"path":1149,"stem":1150},"Getting Started with Jetscale","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":1152,"path":1153,"stem":1154},"AWS Setup Guide","\u002Fdocs\u002Faws-setup","docs\u002F2.aws-setup",{"title":1156,"path":1157,"stem":1158},"Azure Setup Guide","\u002Fdocs\u002Fazure-setup","docs\u002F3.azure-setup",{"title":1160,"path":1161,"stem":1162},"How Jetscale Works","\u002Fdocs\u002Fhow-it-works","docs\u002F4.how-it-works",{"title":175,"path":1164,"stem":1165,"children":1166},"\u002Fdocs\u002Fintegrations","docs\u002F4.integrations\u002Findex",[1167,1168,1169,1173,1177],{"title":175,"path":1164,"stem":1165},{"title":5,"path":1130,"stem":1134},{"title":1170,"path":1171,"stem":1172},"Jira Integration","\u002Fdocs\u002Fintegrations\u002Fjira","docs\u002F4.integrations\u002F2.jira",{"title":1174,"path":1175,"stem":1176},"Slack Integration","\u002Fdocs\u002Fintegrations\u002Fslack","docs\u002F4.integrations\u002F3.slack",{"title":1178,"path":1179,"stem":1180},"Bitbucket Integration","\u002Fdocs\u002Fintegrations\u002Fbitbucket","docs\u002F4.integrations\u002F4.bitbucket",{"title":1182,"path":1183,"stem":1184},"AI-Powered Analysis","\u002Fdocs\u002Fai-analysis","docs\u002F5.ai-analysis",{"title":1186,"path":1187,"stem":1188,"children":1189},"Supported Services","\u002Fdocs\u002Fservices","docs\u002F5.services\u002Findex",[1190,1191,1195,1199,1203,1207,1211,1215,1219],{"title":1186,"path":1187,"stem":1188},{"title":1192,"path":1193,"stem":1194},"EBS Optimization","\u002Fdocs\u002Fservices\u002Febs","docs\u002F5.services\u002F1.ebs",{"title":1196,"path":1197,"stem":1198},"EC2 Optimization","\u002Fdocs\u002Fservices\u002Fec2","docs\u002F5.services\u002F2.ec2",{"title":1200,"path":1201,"stem":1202},"EKS Optimization","\u002Fdocs\u002Fservices\u002Feks","docs\u002F5.services\u002F3.eks",{"title":1204,"path":1205,"stem":1206},"ElastiCache Optimization","\u002Fdocs\u002Fservices\u002Felasticache","docs\u002F5.services\u002F4.elasticache",{"title":1208,"path":1209,"stem":1210},"RDS Optimization","\u002Fdocs\u002Fservices\u002Frds","docs\u002F5.services\u002F5.rds",{"title":1212,"path":1213,"stem":1214},"S3 Optimization","\u002Fdocs\u002Fservices\u002Fs3","docs\u002F5.services\u002F6.s3",{"title":1216,"path":1217,"stem":1218},"Azure SQL Optimization","\u002Fdocs\u002Fservices\u002Fazure-sql","docs\u002F5.services\u002F7.azure-sql",{"title":1220,"path":1221,"stem":1222},"Azure VM Optimization","\u002Fdocs\u002Fservices\u002Fazure-vm","docs\u002F5.services\u002F8.azure-vm",{"title":1224,"path":1225,"stem":1226},"Recommendation Workflow","\u002Fdocs\u002Frecommendation-workflow","docs\u002F6.recommendation-workflow",{"title":997,"path":1228,"stem":1229},"\u002Fdocs\u002Fapi-reference","docs\u002F7.api-reference",{"title":1068,"path":1067,"stem":1231},"docs\u002F8.faq",[1233,1235],{"title":175,"path":1164,"stem":1165,"description":1234,"children":-1},"Connect Jetscale with your existing development workflow to automate cost optimization implementation.",{"title":1170,"path":1171,"stem":1172,"description":1236,"children":-1},"Jetscale integrates with Jira to automatically create issues for cost optimization recommendations, enabling seamless tracking through your existing project management workflow.",1788204003811]