{"id":3351,"date":"2025-11-12T16:56:25","date_gmt":"2025-11-12T09:56:25","guid":{"rendered":"https:\/\/portal-atlasx.cdg.co.th\/home\/?post_type=docs&#038;p=3351"},"modified":"2025-11-12T16:56:44","modified_gmt":"2025-11-12T09:56:44","slug":"overview","status":"publish","type":"docs","link":"https:\/\/portal-atlasx.cdg.co.th\/home\/docs\/ci-cd-for-mobile\/ios\/overview\/","title":{"rendered":"Overview"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" id=\"overview\">Overview<\/h1>\n\n\n\n<p>\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07 Build pipeline \u0e17\u0e35\u0e48\u0e17\u0e32\u0e07\u0e17\u0e35\u0e21 AtlasX \u0e44\u0e14\u0e49 setup \u0e44\u0e27\u0e49 \u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e23\u0e39\u0e1b\u0e19\u0e35\u0e49<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/portal-atlasx.cdg.co.th\/share\/Portal%20Docs\/Default\/CICD%20Mobile\/devsecops-pipeline-ios.png\" alt=\"AtlasX DevSecOps Pipeline for iOS\" title=\"null\"\/><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Developer \u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e41\u0e25\u0e49\u0e27 push \u0e44\u0e1b\u0e22\u0e31\u0e07 GitLab repository<\/li>\n\n\n\n<li>Jenkins \u0e23\u0e31\u0e1a\u0e23\u0e39\u0e49\u0e27\u0e48\u0e32\u0e21\u0e35 code \u0e43\u0e2b\u0e21\u0e48 push \u0e40\u0e02\u0e49\u0e32\u0e21\u0e32 \u0e41\u0e25\u0e30\u0e08\u0e30\u0e17\u0e33 Test \u0e15\u0e32\u0e21 script \u0e17\u0e35\u0e48\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49\u0e43\u0e2a\u0e48\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32<\/li>\n\n\n\n<li>\u0e43\u0e0a\u0e49 fastlane \u0e43\u0e19\u0e01\u0e32\u0e23 build, sign, screenshot(optional) \u0e41\u0e25\u0e30 upload \u0e44\u0e1b\u0e17\u0e35\u0e48 appstore<\/li>\n\n\n\n<li>\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e14 submit for review \u0e1a\u0e19 App Store Connect \u0e40\u0e1e\u0e37\u0e48\u0e2d release \u0e44\u0e14\u0e49<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisite\">Prerequisite<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 application \u0e1a\u0e19\u00a0<a href=\"https:\/\/appstoreconnect.apple.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">App Store Connect<\/a>\u00a0\u0e01\u0e48\u0e2d\u0e19 \u0e16\u0e36\u0e07\u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 pipeline \u0e44\u0e14\u0e49<\/li>\n\n\n\n<li>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a team \u0e41\u0e25\u0e30 provisioning profile \u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e01\u0e48\u0e2d\u0e19 push code<\/li>\n\n\n\n<li>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a required field \u0e43\u0e2b\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e2d\u0e32\u0e08\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14 error no data \u0e44\u0e14\u0e49 \u0e15\u0e2d\u0e19 upload \u0e14\u0e49\u0e27\u0e22 fastlane<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"scaffolding\">Scaffolding<\/h2>\n\n\n\n<p>\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 resource \u0e21\u0e32\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e17\u0e33\u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e15\u0e32\u0e21\u0e44\u0e14\u0e40\u0e23\u0e01\u0e17\u0e2d\u0e23\u0e35\u0e48\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-Fira-Code\" style=\"font-size:.875rem;font-family:Code-Pro-Fira-Code,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#000000;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>MyProject\/\n\u251c\u2500\u2500 fastlane\/\n\u2502   \u251c\u2500\u2500 screenshots\n\u2502   \u251c\u2500\u2500 Snapfile\n\u2502   \u251c\u2500\u2500 SnapshotHelper.swift\n\u251c\u2500\u2500 MyProject.xcodeproj\n\u251c\u2500\u2500 MyProject.xcworkspace\n\u251c\u2500\u2500 MyProject\/\n\u2514\u2500\u2500 Pod\/\nJenkinsfile<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12.75l6 6 9-13.5\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6\"><\/path><\/svg><\/span><pre class=\"shiki light-plus\" style=\"background-color: #FFFFFF\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #001080\">MyProject<\/span><span style=\"color: #000000\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u251c\u2500\u2500 <\/span><span style=\"color: #001080\">fastlane<\/span><span style=\"color: #000000\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u2502   \u251c\u2500\u2500 <\/span><span style=\"color: #001080\">screenshots<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u2502   \u251c\u2500\u2500 <\/span><span style=\"color: #001080\">Snapfile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u2502   \u251c\u2500\u2500 <\/span><span style=\"color: #001080\">SnapshotHelper<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">swift<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u251c\u2500\u2500 <\/span><span style=\"color: #001080\">MyProject<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">xcodeproj<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u251c\u2500\u2500 <\/span><span style=\"color: #001080\">MyProject<\/span><span style=\"color: #000000\">.<\/span><span style=\"color: #001080\">xcworkspace<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u251c\u2500\u2500 <\/span><span style=\"color: #001080\">MyProject<\/span><span style=\"color: #000000\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #000000\">\u2514\u2500\u2500 <\/span><span style=\"color: #001080\">Pod<\/span><span style=\"color: #000000\">\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #001080\">Jenkinsfile<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>\u0e43\u0e19\u0e44\u0e14\u0e40\u0e23\u0e01\u0e17\u0e2d\u0e23\u0e35\u0e48&nbsp;<code>fastlane<\/code>&nbsp;\u0e08\u0e30\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e44\u0e1b\u0e14\u0e49\u0e27\u0e22\u0e44\u0e1f\u0e25\u0e4c\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 fastlane \u0e44\u0e14\u0e49\u0e41\u0e01\u0e48 \u0e01\u0e32\u0e23 build, screenshots \u0e41\u0e25\u0e30 upload \u0e44\u0e1b\u0e22\u0e31\u0e07 appstore<\/p>\n\n\n\n<p>\u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e43\u0e2b\u0e49\u0e14\u0e39\u0e17\u0e35\u0e48\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e16\u0e31\u0e14\u0e44\u0e1b<\/p>\n","protected":false},"featured_media":0,"parent":3350,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-3351","docs","type-docs","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/comments?post=3351"}],"version-history":[{"count":2,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3351\/revisions"}],"predecessor-version":[{"id":3353,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3351\/revisions\/3353"}],"up":[{"embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs\/3350"}],"wp:attachment":[{"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/media?parent=3351"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/portal-atlasx.cdg.co.th\/home\/wp-json\/wp\/v2\/docs_category?post=3351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}