มีงานซ้ำๆ มากมายที่เราต้องทำทุกวัน และอาจดูน่าเบื่อ ยาก และซ้ำซากจำเจ
แต่แทนที่จะทำงานประจำวันเหล่านั้น คุณสามารถมอบหมายงานเหล่านั้นเพื่อให้ใครบางคนหรืออย่างอื่นทำแทนคุณ ด้วยวิธีนี้ คุณจะมีเวลาทำสิ่งที่คุณต้องการทำมากขึ้น จะได้มีเวลาพักผ่อน
หากคุณเคยพัฒนาแอปพลิเคชัน Android มาก่อน คุณจะรู้ว่างานบางอย่างจะน่าเบื่อเพียงใด:
- กำลังทดสอบ
- ตรวจสอบให้แน่ใจว่าแอปพลิเคชันคอมไพล์เมื่อรวมโค้ดใหม่
- การสร้างและเผยแพร่แอปพลิเคชัน
แล้วเราควรส่งต่องานเหล่านี้ให้ใคร? เพื่อนร่วมงานคนอื่น? พวกเขาสามารถส่งต่อให้คนอื่นได้และจะไม่ทำให้เวลาใครว่าง นอกจากนี้ เราไม่ต้องการให้เพื่อนร่วมงานของเราเสียเปรียบ วิธีแก้ปัญหา?
ทักทาย GitHub Actions 👐
การกระทำของ GitHub คืออะไร
GitHub Actions คือคำสั่งที่เราทริกเกอร์ได้เมื่อมีบางอย่างเกิดขึ้นในที่เก็บของเรา ที่แกนหลัก การดำเนินการคือไฟล์การกำหนดค่าที่มีรายการคำสั่งที่อธิบาย:
- สิ่งที่ต้องเกิดขึ้น
- เมื่อไรจะเกิดขึ้น
ไฟล์การกำหนดค่านี้อยู่ในรูปแบบ YAML (.yml) และตัวอย่างจะมีลักษณะดังนี้:
name: My GitHub Action
on: pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
มาแบ่งตัวอย่างด้านบนกัน:
- เราตั้งชื่อให้กับการกระทำของเรา (My GitHub Action) [ไม่บังคับ]
- เรามีความหมายว่าการดำเนินการนี้ควรทำงานเมื่อใด (เมื่อมีการเปิดคำขอดึง)
- เราเริ่มรายการงาน (งาน) ที่ควรจะเกิดขึ้นเมื่อมีการทริกเกอร์การดำเนินการนี้
- อันแรกคือ บิลด์ การกระทำ
- ตัว วิ่งต่อ คำสั่งบอก GitHub ว่านักวิ่งคนใดจะทำงานนี้ (นี่คือเซิร์ฟเวอร์เสมือนและคุณสามารถเลือกระหว่าง Windows/Mac/Linux)
- แต่ละงานสามารถมีหลายขั้นตอนซึ่งจัดกลุ่มเข้าด้วยกันโดย ขั้นตอน คีย์เวิร์ด
- การ ใช้ คีย์เวิร์ดบอกสคริปต์ว่าต้องดำเนินการใด
นี่เป็นตัวอย่างสั้นๆ ที่ไม่ได้แสดงคุณลักษณะทั้งหมดของ GitHub Actions แต่ให้การดูโครงสร้างของไฟล์การกำหนดค่า
ในส่วนถัดไป เราจะสร้างการดำเนินการที่จะช่วยให้วงจรการพัฒนาของเรามีประสิทธิภาพและประสิทธิผล
โปรดทราบว่าไฟล์ GitHub Actions ทั้งหมดต้องอยู่ภายใต้โฟลเดอร์หลักของโครงการของคุณในเส้นทาง .github/เวิร์กโฟลว์ :
วิธีสร้างการดำเนินการ GitHub สำหรับคำขอดึง
ไม่ว่าคุณจะทำงานในโครงการคนเดียวหรือเป็นส่วนหนึ่งของทีม การตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณมีเสถียรภาพเป็นสิ่งสำคัญ ดังนั้นจึงเหมาะสมอย่างยิ่งที่จะตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณรวบรวมอย่างถูกต้องและการทดสอบทั้งหมดจะผ่านเมื่อใดก็ตามที่คุณพิจารณารวมคำขอดึง
เราได้แสดงให้เห็นแล้วในตัวอย่างของเราว่าเราสามารถชำระเงินโค้ดในที่เก็บของเราได้อย่างไร ในการดำเนินการนี้ เราจะรวมขั้นตอนต่อไปนี้:
- การตั้งค่าเวอร์ชัน JDK
- การเปลี่ยนการอนุญาตสำหรับสภาพแวดล้อมเสมือน
- ทำการทดสอบ (ถ้ามี)
- การสร้างแอปพลิเคชัน
name: Android Build
on: pull_request
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set Up JDK // 1
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Change wrapper permissions // 2
run: chmod +x ./gradlew
- name: Run Tests // 3
run: ./gradlew test
- name: Build Project // 4
run: ./gradlew assemble
คุณจะเห็นได้ว่าข้างต้น แต่ละขั้นตอนมีคุณสมบัติและคุณลักษณะเฉพาะของตนเอง
ฉันจะไม่พูดถึงแต่ละรายการ เนื่องจากคุณสามารถทำได้ด้วยตัวเองผ่านเอกสารประกอบ สิ่งที่พบได้ทั่วไปสำหรับขั้นตอนส่วนใหญ่คือการ วิ่ง คำสำคัญ. คุณลักษณะนี้ระบุคำสั่งที่จะดำเนินการ
✋ เราต้องการขั้นตอนที่สองเพื่อให้สภาพแวดล้อมเสมือนสามารถเรียกใช้คำสั่ง gradle ได้ หากไม่มีสิ่งนี้ มันก็จะทำไม่ได้
วิธีสร้าง GitHub Action สำหรับการเผยแพร่แอปพลิเคชัน
เมื่อคุณเผยแพร่ใบสมัครของคุณเป็นครั้งแรกแล้ว การเผยแพร่ซ้ำจะกลายเป็นเรื่องน่าเบื่อ
คุณต้องตรวจสอบให้แน่ใจว่าได้อัปเกรดเวอร์ชันแล้ว สร้าง APK ส่งผ่าน Google Play Console และงานที่น่าเบื่ออื่นๆ
เราสามารถทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติด้วยการดำเนินการ GitHub อื่น การดำเนินการนี้ซับซ้อนกว่าครั้งก่อนเล็กน้อยเนื่องจากต้องใช้ GitHub Secrets
สรุป GitHub Secrets เป็นวิธีการจัดเก็บข้อมูลที่สำคัญเป็นตัวแปรสภาพแวดล้อมของที่เก็บของคุณ เราจำเป็นต้องใช้เพราะ:
- เราจะต้องลงนามในใบสมัครของเรา
- เราจะอนุญาตให้ดำเนินการนี้เพื่อส่งแอปพลิเคชันที่สร้างขึ้นของเราไปยัง Google Play Store
มาดูกันว่าเราจะสร้าง GitHub Secrets ได้อย่างไร
- ในหน้าหลักของที่เก็บของคุณ ให้คลิกที่ การตั้งค่า แท็บ
- ที่เมนูด้านซ้ายมือ จะมีตัวเลือก ความลับ
- ในการสร้างความลับ ให้กด ความลับที่เก็บใหม่ ปุ่ม
เมื่อเราจัดการได้แล้ว มาดูสคริปต์สำหรับเผยแพร่แอปพลิเคชันกัน:
name: Android Publish
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set Up JDK
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Change wrapper permissions
run: chmod +x ./gradlew
- name: Run Tests
run: ./gradlew test
- name: Build Project
run: ./gradlew build
- name: Build Release AAB // 1
run: ./gradlew bundleRelease
- name: Sign AAB // 2
uses: r0adkll/sign-android-release@v1
with:
releaseDirectory: app/build/outputs/bundle/release
signingKeyBase64: ${{ secrets.SIGN_KEY }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.STORE_KEY_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Deploy to Play Store // 3
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJsonPlainText: ${{secrets.SERVICE_ACCOUNT}}
packageName: com.tomerpacific.laundry
releaseFiles: app/build/outputs/bundle/release/app-release.aab
track: production
คุณอาจสังเกตเห็นว่าการดำเนินการนี้จะเรียกใช้ บน workflow_dispatch . นั่นหมายความว่าอย่างไร? โดยพื้นฐานแล้วจะอนุญาตให้ดำเนินการนี้ด้วยตนเองจาก GitHub เอง
คุณสามารถตัดสินใจได้ว่าคุณอยากจะเรียกใช้การดำเนินการนี้เมื่อเกิดการพุชที่สาขาหลัก (เช่น)
ขั้นตอนที่ทำเครื่องหมายด้วย 1 ในตัวอย่างด้านบนจะทริกเกอร์การสร้าง .aab ของแอปพลิเคชันของเรา เหมือนกับที่เราทำถ้าเรากำลังสร้างมันใน Android Studio เราต้องเซ็นชื่อไฟล์ .aab นี้
นี่เป็นครั้งแรกที่ GitHub Secrets เข้ามามีบทบาท เราจำเป็นต้องสร้างความลับสำหรับ:
- กุญแจลงนาม (ความลับ SIGN_KEY)
- นามแฝงหลัก (secrets.ALIAS)
- รหัสผ่านกุญแจร้านค้า (secrets.STORE_KEY_PASSWORD)
- รหัสผ่านที่สำคัญ (secrets.KEY_PASSWORD)
เมื่อเราลงนามในไฟล์ .aab แล้ว เราสามารถนำไปใช้กับ Google Play Store ได้ ในขั้นตอนนี้ ยังมีงานอีกเล็กน้อยที่ต้องทำ เนื่องจากเราต้องอนุญาตให้ GitHub Action นี้ได้รับอนุญาตให้ปรับใช้แอปพลิเคชันสำหรับเราบน Google Play แต่เดี๋ยวก่อนเราจะทำอย่างนั้นได้อย่างไร เราใช้บัญชีบริการ
วิธีสร้างบัญชีบริการ
บัญชีบริการคือเอนทิตีที่คุณสร้างขึ้นเพื่อแจ้งบริการหรือแอปพลิเคชันที่โต้ตอบกับบัญชีที่ทำงานในนามของคุณ
ในกรณีของเรา GitHub Action ของเรากำลังโต้ตอบกับ Google Play Store เพื่อให้สามารถอัปโหลดแอปพลิเคชันเวอร์ชันใหม่ของเราได้
หากต้องการสร้างบัญชีบริการ ให้ไปที่ Google Cloud Console หากคุณไม่มีบัญชีที่นั่น ให้สร้างบัญชีใหม่ จากนั้นในหน้าหลัก ในเมนูด้านซ้ายมือ จะมีรายการชื่อบัญชีบริการ
เมื่อคุณคลิกแล้ว ทางด้านขวามือของหน้าต่าง คุณจะเห็นบัญชีบริการที่คุณมีอยู่แล้ว
เราต้องการสร้างใหม่ และในส่วนบนของหน้าต่างจะมีปุ่มสำหรับดำเนินการนั้น
ในหน้าต่างที่เปิดขึ้น คุณจะต้องป้อนชื่อบริการและป้อนคำอธิบายได้ด้วย
ชื่อที่ระบุที่นี่จะเป็นตัวระบุเฉพาะของบัญชีบริการนี้
ในขั้นตอนที่สอง คุณจะถูกขอให้มอบบทบาทบัญชีบริการนี้ จาก เลือกบทบาท ดรอปดาวน์ เลือก Basic → Editor
สุดท้าย ในขั้นตอนที่ 3 ให้กรอกอีเมลของคุณทั้งสองที่ในส่วน "ให้สิทธิ์ผู้ใช้ในการเข้าถึงบัญชีบริการนี้":
หลังจากกดปุ่มเสร็จสิ้น คุณจะต้องสร้างรหัสสำหรับบัญชีบริการนี้ การดำเนินการจะใช้คีย์นี้เพื่อระบุโดย Google Play
หากต้องการสร้างคีย์ ให้คลิกจุดแนวนอนสามจุดใต้ป้ายกำกับการดำเนินการในหน้าจอบัญชีบริการหลัก ในเมนูที่ปรากฏขึ้น ให้เลือกจัดการคีย์ .
ในหน้าต่างนี้ เราจะสร้างคีย์โดยเลือก คีย์ใหม่ และเลือก "สร้างคีย์ใหม่" จากเมนูที่ปรากฏขึ้น
ตอนนี้เรามีตัวเลือกในการเลือกรูปแบบของคีย์ใหม่ของเรา ค่าเริ่มต้นคือ JSON และเราจะปล่อยให้มันเลือกไว้ คลิกสร้าง
เมื่อคุณทำเสร็จแล้ว ไฟล์จะถูกดาวน์โหลดไปยังคอมพิวเตอร์ของคุณ ตรวจสอบให้แน่ใจว่าได้เก็บไฟล์นี้ไว้ เนื่องจากมีข้อมูลทั้งหมดที่เกี่ยวข้องกับบัญชีบริการของคุณ และคุณจะไม่สามารถดาวน์โหลดได้อีก
เราจะนำเนื้อหาของไฟล์นี้แล้วสร้างความลับของ GitHub ด้วย (secrets.SERVICE_ACCOUNT )
สุดท้ายนี้ เราต้องแจ้งให้ Google Play ทราบเกี่ยวกับบัญชีบริการนี้ การทำเช่นนั้นกำหนดให้เราต้องลงชื่อเข้าใช้บัญชี Google Play Console และไปที่ ตั้งค่า →การเข้าถึง API .
หากคุณเลื่อนลงมาที่หน้า คุณจะเห็นส่วนชื่อบัญชีบริการ คุณควรจะเห็นบัญชีบริการที่คุณสร้างไว้ก่อนหน้านี้ คลิกลิงก์ให้สิทธิ์เข้าถึง
ในการตั้งค่าที่เปิดขึ้น ตรงไปที่การอนุญาตของแอพ ที่นี่ คุณจะเลือกแอปพลิเคชันที่บัญชีบริการนี้โต้ตอบด้วย
ภายใต้การอนุญาตบัญชี ทุกอย่างภายใต้ รุ่น ควรตรวจสอบส่วน ฉันขอแนะนำอย่างยิ่งให้คุณดูการตั้งค่าอื่นๆ ทั้งหมดและตัดสินใจด้วยตัวเองว่าคุณต้องการทำเครื่องหมายอะไรไว้หรือต้องการทำเครื่องหมายอะไร
เมื่อเสร็จแล้ว ให้คลิก เชิญผู้ใช้ ปุ่มอยู่ที่มุมล่างขวา
หลังจากส่งคำเชิญแล้ว เราสามารถดำเนินการเผยแพร่เพื่อจัดเก็บได้
วิธีตรวจสอบการดำเนินการของเราใน GitHub
หากต้องการดูการดำเนินการที่กำหนดไว้สำหรับที่เก็บของคุณ ให้คลิกที่แท็บ การดำเนินการ แท็บนี้แสดงเวิร์กโฟลว์ทั้งหมดที่กำหนดไว้และที่ทำงานแล้ว
ทางด้านซ้ายมือ คุณจะเห็นการดำเนินการทั้งหมดที่กำหนดไว้ และทางด้านขวามือ คุณจะเห็นการดำเนินการทั้งหมดที่มีการเรียกใช้ หากต้องการดูการดำเนินการใดโดยเฉพาะ ให้คลิกที่การกระทำนั้น
หากการดำเนินการถูกกำหนดให้ทำงานบน workflow_dispatch คุณจะเห็นปุ่มที่ให้คุณเรียกใช้ได้ (เช่นในภาพด้านบน)
หากคุณต้องการดูการรันเวิร์กโฟลว์เฉพาะ คุณสามารถทำได้จากหน้าเวิร์กโฟลว์หลักโดยคลิกที่การรันอันใดอันหนึ่ง หากการดำเนินการใดล้มเหลว ที่นี่จะเป็นที่สำหรับตรวจสอบและดูว่ามีอะไรผิดพลาด
การดำเนินการแรกของเราควรจะทริกเกอร์เมื่อมีการเปิดคำขอดึง หากทำงานอย่างถูกต้อง คุณควรเห็นสิ่งนี้:
แล้วคุณล่ะ!
สรุปผล
อ่านมาถึงตอนนี้เป็นเวลานาน แต่เราได้ผ่านทุกสิ่งที่คุณต้องการเพื่อเริ่มต้นสร้างไปป์ไลน์การผสานรวมอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่องสำหรับแอปพลิเคชันของคุณ
หากคุณสนใจที่จะดูวิธีการตั้งค่า GitHub Actions คุณสามารถตรวจสอบได้ในหนึ่งในที่เก็บของฉันที่นี่:
การดำเนินการ · TomerPacific/LaundrySymbolsแอปพลิเคชันที่เขียนด้วยภาษา Kotlin แสดงสัญลักษณ์การซักรีดต่างๆ พร้อมคำอธิบาย :cyclone:- Actions · TomerPacific/LaundrySymbols TomerPacificGitHubหากต้องการอ่านเพิ่มเติมเกี่ยวกับ GitHub Actions โปรดไปที่:
เอกสารประกอบการทำงานของ GitHub - GitHub Docs กำหนดอัตโนมัติ ปรับแต่ง และดำเนินการเวิร์กโฟลว์การพัฒนาซอฟต์แวร์ของคุณในที่เก็บของคุณด้วย GitHub Actions คุณสามารถค้นหา สร้าง และแบ่งปันการดำเนินการเพื่อทำงานใดๆ ที่คุณต้องการ รวมถึง CI/CD และรวมการดำเนินการต่างๆ ไว้ในเวิร์กโฟลว์ที่ปรับแต่งได้อย่างสมบูรณ์ เอกสาร GitHub