ความลับในการปลดปล่อยความสามารถของ PowerShell GitHub
คุณเบื่อกับการทำงาน GitHub เดิมๆ ซ้ำๆ ผ่านทางเว็บอินเตอร์เฟสหรือไม่? หรือกำลังมองหาที่จะยกระดับเวิร์กโฟลว์ของคุณด้วยระบบอัตโนมัติ? โชคดีสำหรับคุณ โมดูล PowerShellForGitHub ใกล้จะปลดล็อกความสามารถของ PowerShell GitHub แล้ว!
ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีใช้ PowerShell โมดูล PowerShellForGitHub สำหรับการดำเนินการ GitHub ทั่วไป และอื่นๆ อีกมากมาย
ยกระดับขั้นตอนการทำงานของคุณอย่างมีประสิทธิภาพด้วยระบบอัตโนมัติวันนี้!
ข้อกำหนดเบื้องต้น
บทช่วยสอนนี้จะเป็นการสาธิตแบบลงมือปฏิบัติจริง หากคุณต้องการติดตาม โปรดแน่ใจว่าคุณมีสิ่งต่อไปนี้:
- บัญชี GitHub พร้อมพื้นที่เก็บข้อมูลสาธารณะ
- โทเค็นการเข้าถึงส่วนบุคคล GitHub (PAT)
- คอมพิวเตอร์ที่ติดตั้ง Windows PowerShell 5.1 หรือ PowerShell 7.x เป็นอย่างน้อย - บทช่วยสอนนี้ใช้ PowerShell เวอร์ชัน 7.2.3
การติดตั้งโมดูล PowerShellForGitHub
โมดูล PowerShellForGitHub รวบรวมคุณประโยชน์ของ PowerShell เพื่อมอบการโต้ตอบบรรทัดคำสั่งและระบบอัตโนมัติสำหรับ GitHub API วิธีที่รวดเร็วที่สุดในการติดตั้งโมดูล PowerShellForGitHub คือการใช้ PowerShell Gallery ภายในคอนโซล PowerShell
1. เปิด PowerShell ในฐานะผู้ดูแลระบบ และเรียกใช้คำสั่ง Install-Module ด้านล่างเพื่อติดตั้งโมดูล PowerShellForGitHub จาก PowerShell Gallery
Install-Module -Name PowerShellForGitHubพิมพ์ y แล้วกด Enter เพื่อดำเนินการติดตั้งต่อ ดังที่แสดงด้านล่าง
2. ตอนนี้รัน Get-Command ต่อไปนี้เพื่อตรวจสอบว่าโมดูล (-Module) ได้รับการติดตั้งสำเร็จหรือไม่ คำสั่งนี้แสดงรายการ cmdlets ทั้งหมดที่พร้อมใช้งานสำหรับโมดูล PowerShellForGitHub
Get-Command -Module PowerShellForGitHubคุณเรียกใช้ Get-Command เนื่องจาก Get-Module ไม่มีเอาต์พุตสำหรับโมดูล PowerShellForGitHub
หากคุณติดตั้งโมดูล PowerShellForGitHub สำเร็จ คุณจะได้รับรายการ cmdlets ที่พร้อมใช้งานสำหรับโมดูลดังที่แสดงด้านล่าง
3. สุดท้าย เรียกใช้คำสั่ง Set-GitHubAuthentication ต่อไปนี้เพื่อเชื่อมต่อกับบัญชี GitHub ของคุณ
Set-GitHubAuthenticationคุณสามารถป้อนอะไรก็ได้ที่เป็นชื่อผู้ใช้ ซึ่งจำเป็น แต่จะถูกละเว้นต่อไป แต่อย่าลืมป้อนโทเค็นการเข้าถึงส่วนตัวของคุณเป็นรหัสผ่าน
หลังจากเชื่อมต่อกับ GitHub สำเร็จแล้ว คุณสามารถเริ่มใช้ cmdlets ของโมดูล PowerShell GitHub ได้
หากคุณไม่แน่ใจว่า cmdlet ของโมดูล PowerShellForGitHub ทำงานอย่างไร ให้เรียกใช้คำสั่ง Get-Help ตามด้วย cmdlet ที่ต้องการ ดังที่แสดงด้านล่าง: Get-Help Set-GitHubRepository
การสร้างที่เก็บ GitHub ด้วยฟังก์ชัน PowerShell
เมื่อติดตั้งโมดูล PowerShellForGitHub แล้ว ให้เริ่มบทช่วยสอนนี้ด้วยหนึ่งในสิ่งที่ดีที่สุดที่ PowerShell GitHub สามารถนำเสนอได้ นั่นคือการสร้างเครื่องมือของคุณเอง! ยังไง? โดยการสร้างฟังก์ชัน PowerShell
ฟังก์ชัน PowerShell ช่วยให้คุณสามารถจัดระเบียบสคริปต์และส่งเสริมการใช้โค้ดซ้ำ ซึ่งเพิ่มการใช้งานและความสามารถในการอ่านโค้ดของคุณได้อย่างมาก
1. สร้างไฟล์สคริปต์ PowerShell เพิ่มโค้ดด้านล่างลงในไฟล์ เปลี่ยนค่าตามนั้น และบันทึกไฟล์เป็น myscript.ps1
รหัสด้านล่างเป็นฟังก์ชัน PowerShell ที่ดำเนินการต่อไปนี้:
- สร้างพื้นที่เก็บข้อมูล (
New-GitHubRepository)
- เพิ่มไฟล์ (ช่วยเหลือ) (
Set-GitHubContent) และสร้างคอมมิต (-CommitMessage)
- และเลือกสร้างสาขา (New-GitHubRepositoryBranch)
Function CreateRepo {
param ($Owner,$RepoName,$Branch,$HelpFilePath,$HelpFileContent,$FirstCommitMessage)
# Creating a new repository
New-GitHubRepository -RepositoryName $RepoName
# Add a file and perform first commit
Set-GitHubContent -OwnerName $Owner -RepositoryName $RepoName -Path $HelpFilePath -CommitMessage $FirstCommitMessage -Content $HelpFileContent -BranchName main
# Add a branch if the 'Branch' parameter is specified
If ($Branches) {
New-GitHubRepositoryBranch -OwnerName $Owner -RepositoryName $RepoName -TargetBranchName $Branch
}
}
# Call the CreateRepo function - Be sure to replace the values below accordingly
CreateRepo -Owner BTA1981 -RepoName Repo0007 -Branch develop -HelpFilePath README.md -HelpFileContent '# README' -FirstCommitMessage 'Adding README.md'2. ตอนนี้ เรียกใช้สคริปต์ (myscript.ps1) และดูว่าฟังก์ชันทำงานอย่างไร
.\myscript.ps1หลังจากรันสคริปต์ คุณจะได้รับเอาต์พุตของชื่อและการเปิดเผยพื้นที่เก็บข้อมูลที่สร้างโดยสคริปต์
3. สุดท้าย เปิดเว็บเบราว์เซอร์ที่คุณชื่นชอบ ไปที่ GitHub และดูพื้นที่เก็บข้อมูลที่สร้างขึ้นใหม่ ดังที่แสดงด้านล่าง
การดำเนินการค้นหาและสร้างการรายงานแบบกำหนดเอง
การสร้างพื้นที่เก็บข้อมูล GitHub โดยการรันสคริปต์นั้นยอดเยี่ยมมาก แต่กรณีการใช้งานที่ยอดเยี่ยมอีกประการหนึ่งสำหรับการรวม PowerShell กับ GitHub คือการดำเนินการค้นหาและสร้างการรายงานแบบกำหนดเอง ยังไง? โดยใช้ไปป์ไลน์ PowerShell GitHub
ด้วยไปป์ไลน์ PowerShell คุณสามารถสร้างการสืบค้นที่มีประสิทธิภาพโดยใช้โค้ดเพียงเล็กน้อยและคำสั่งการเชื่อมโยงร่วมกับตัวดำเนินการไปป์ไลน์ '|'
การดูแลทำความสะอาดภายในที่เก็บ GitHub เป็นสิ่งสำคัญ และบางทีคุณอาจต้องการข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับพื้นที่เก็บข้อมูลที่ไม่ได้รับการอัปเดตภายในระยะเวลาหนึ่ง
1. เรียกใช้คำสั่งต่อไปนี้เพื่อดูภาพรวมของที่เก็บ GitHub จากทีม PowerShell ที่ไม่ได้รับการอัปเดตภายในปีที่แล้ว
# - < WHAT DOES THIS COMMAND DO? >
# Get-GitHubRepository - Get all repositories from the owner PowerShell team.
# Where-Object - Where the repository isn't updated in the last year (Get-Date).
# Sort-Object - Sort results based on the last updated date/time.
# Select-Object - Show the full name and date/time when each repository was last updated
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_atสังเกตว่ามีการใช้ตัวดำเนินการไปป์ไลน์มากน้อยเพียงใด หากไม่มีโอเปอเรเตอร์ไปป์ไลน์ คุณจะต้องสร้างตัวแปรหลายตัวเพื่อจัดเก็บข้อมูลก่อนจึงจะสามารถใช้ข้อมูลนั้นกับ cmdlet อื่นได้
ด้านล่างนี้ คุณสามารถดูรายการพื้นที่เก็บข้อมูลแต่ละรายการที่ไม่ได้รับการอัปเดตภายในปีที่ผ่านมา
ผลลัพธ์ของคุณไม่ได้จำกัดอยู่เพียงคอนโซล PowerShell เท่านั้น คุณยังสามารถสร้างรายงานเอาต์พุตเป็นข้อความหรือไฟล์ CSV ได้ด้วย
2. ตอนนี้ให้รันคำสั่งใดคำสั่งหนึ่งด้านล่างเพื่อดึงรายการที่เก็บ GitHub แต่คราวนี้ จะไม่มีการแสดงเอาต์พุตบนคอนโซล เนื่องจากเอาต์พุตจะถูกส่งออกไปยังไฟล์ข้อความ (Out-File) หรือไฟล์ CSV (ส่งออก-CSV)
โปรดทราบว่าคุณสามารถแทนที่เส้นทางและชื่อของไฟล์ (C:\Outdated.txt และ C:\Outdated.csv) ได้ตามที่คุณต้องการ
# Export the output to the C:\Outdated.txt file
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_at |
Out-File -FilePath C:\Outdated.txt
# Export the output to the C:\Outdated.csv file
Get-GitHubRepository -OwnerName PowerShell |
Where-Object {$_.updated_at -lt (Get-Date).AddMonths(-12)} |
Sort-Object updated_at | Select-Object full_name,updated_at |
Export-Csv -Path C:\Outdated.csv3. สุดท้าย ให้เรียกใช้คำสั่ง Get-Content ด้านล่างเพื่อดูเนื้อหาของไฟล์รายงานของคุณ ขึ้นอยู่กับประเภทไฟล์ที่คุณใช้ในการสร้างรายงาน
Get-Content C:\Outdated.txt
Get-Content C:\Outdated.csvดำเนินการเปลี่ยนแปลงการกำหนดค่าเป็นกลุ่ม
โดยทั่วไป คุณต้องดำเนินการเปลี่ยนแปลงการกำหนดค่าเป็นกลุ่ม เช่น การเปลี่ยนแปลงการมองเห็นที่เก็บหลายรายการ โชคดีที่โมดูล PowerShellForGithub รองรับการเปลี่ยนแปลงประเภทนี้
ลองนึกภาพคุณมีที่เก็บ GitHub จำนวนมากที่ต้องจัดการ และคุณต้องเปลี่ยนที่เก็บทั้งหมดที่ขึ้นต้นด้วยชื่อ “REPO00 ” จากการเปิดเผยแบบสาธารณะเป็นแบบส่วนตัว
รันคำสั่งด้านล่างเพื่อดำเนินการต่อไปนี้:
- ค้นหาที่เก็บของผู้ใช้ (
BTA1981) ด้วยชื่อที่ขึ้นต้นด้วยREPO00 - เปลี่ยนการเปิดเผยที่เก็บที่ตรงกันแต่ละรายการเป็น
-Private
Get-GitHubRepository -OwnerName BTA1981 | Where-Object { $_.name -like "REPO00*" } |
Set-GitHubRepository -Private:$True -Verbose
ดังที่คุณเห็นด้านล่าง การเพิ่มพารามิเตอร์ -Verbose จะแสดงข้อมูลโดยละเอียดเกี่ยวกับการดำเนินการที่ทำโดยคำสั่ง
การจัดการกับปัญหาพื้นที่เก็บข้อมูลโดยอัตโนมัติ
ใครบ้างที่ไม่มีงานที่ซ้ำซากและน่าเบื่อที่ต้องทำเมื่อคุณพบปัญหาใหม่หรือดึงคำขอ ทำไมต้องดิ้นรน? ให้โมดูล PowerShellForGitHub ประหยัดเวลา
1. เปิด ไฟล์ myscript.ps1 ของคุณ และแทนที่โค้ดด้วยโค้ดด้านล่างนี้ แต่อย่าลืมเปลี่ยนค่าด้วยค่าของคุณเอง
โค้ดด้านล่างแสดงความคิดเห็นเกี่ยวกับปัญหาล่าสุดภายในพื้นที่เก็บข้อมูลที่ยังไม่ได้รับการอัปเดตเมื่อเร็วๆ นี้
# - < WHAT DOES THIS CODE DO? >
# Get-GitHubRepository - Get all the GitHub issues
# labeled (Get-GitHubIssue) as a bug from the specified repository.
# Where-Object - Where there hasn't been an update for a day (Get-Date).
# New-GitHubIssueComment - Add a custom GitHub issue comment
Get-GitHubRepository -OwnerName BTA1981 -RepositoryName Repo0001 | Get-GitHubIssue -label 'bug' |
Where-Object { $_.updated_at -lt (Get-Date).AddDays(-1)} |
New-GitHubIssueComment -Body "It's been a day since this issue is updated. Is there any update?"2. หลังจากแทนที่โค้ดแล้ว ให้บันทึกไฟล์และรันสคริปต์
.\myscript.ps1ผลลัพธ์ของสคริปต์จะแสดงรายละเอียดเกี่ยวกับแต่ละความคิดเห็นที่ได้รับการอัปเดตด้วยความคิดเห็นใหม่ด้วยสคริปต์ของเรา
3. ไปที่ GitHub บนเบราว์เซอร์ของคุณ และคลิกที่พื้นที่เก็บข้อมูลที่คุณระบุ (Repo0001) ภายในโค้ด
4. ตอนนี้ คลิกบนแท็บปัญหา (ซ้ายบน) แล้วคุณจะเห็นภาพรวมของปัญหาสำหรับพื้นที่เก็บข้อมูล ดังที่แสดงด้านล่าง
คลิกเมนูแบบเลื่อนลง "เรียงลำดับ" เลือกตัวเลือกอัปเดตล่าสุด แล้วคลิกจุดบกพร่องที่ไม่ได้รับการอัปเดตภายในหนึ่งวัน
ด้านล่างนี้ คุณจะเห็นความคิดเห็นใหม่แจ้งว่าปัญหายังไม่ได้รับการอัปเดต
5. แทนที่เนื้อหาของไฟล์ myscript.ps1 ด้วยโค้ดด้านล่างนี้ ซึ่งเป็นอีกตัวอย่างหนึ่งของการกำจัดงานที่ซ้ำกัน
โค้ดด้านล่างจะกำหนดปัญหา GitHub ใหม่ให้กับผู้ใช้โดยอัตโนมัติทุกครั้งที่มีปัญหาใหม่สำหรับพื้นที่เก็บข้อมูลที่ระบุ
# The GitHub username you want to assign the issue to.
$Assignee = 'bta1981'
# The account owner of the repository you want to assign an issue for.
$Owner = "BTA1981"
# The name of the repository that has the issue you want to assign.
$Repository = "Repo0001"
# - < WHAT DOES THIS COMMAND DO? >
# Get-GitHubRepository - Get the most recent GitHub issue (Get-GitHubIssue)
# for the specified repository ($Repository)
# Add-GitHubAssignee - Assign a user to the most recent issue
$MostRecentIssue = Get-GitHubRepository -OwnerName $Owner -RepositoryName $Repository |
Get-GitHubIssue | Sort-Object -Descending -Property created_at | Select-Object -First 1 |
Add-GitHubAssignee -OwnerName $Owner -RepositoryName $Repository -Assignee $Assignee -Issue $MostRecentIssue.IssueNumber -Verbose6. หลังจากแทนที่โค้ดในไฟล์ myscript.ps1 แล้ว ให้เรียกใช้สคริปต์
สคริปต์จะเปลี่ยนการมอบหมายปัญหา GitHub ให้กับผู้รับมอบหมายทันที (BTA1981) ที่คุณระบุไว้
.\myscript.ps1เนื่องจากพารามิเตอร์ -Verbose ในสคริปต์ มีการป้อนข้อมูลโดยละเอียดเกี่ยวกับปัญหา GitHub ที่สคริปต์กำหนด
7. สุดท้าย นำทางไปยังปัญหาล่าสุดภายในพื้นที่เก็บข้อมูล GitHub ที่คุณระบุ (Repo0001) เพื่อตรวจสอบว่าสคริปต์กำหนดปัญหา
การสร้างคำขอดึงสำหรับที่เก็บข้อมูลหลายแห่ง
การจัดการคำขอดึงข้อมูล โดยเฉพาะอย่างยิ่งหากคุณมีที่เก็บข้อมูลจำนวนมาก อาจเป็นเรื่องที่ยุ่งยากได้ แต่ข่าวดีก็คือ การจัดการคำขอดึงข้อมูลเป็นอีกคุณลักษณะหนึ่งของโมดูล PowerShellForGitHub
โปรดทราบว่าคุณจะใช้ PowerShell splatting บนโค้ดของคุณเพื่อให้อ่านง่ายขึ้น รวมกลุ่มพารามิเตอร์ที่คุณต้องการจัดหาให้กับคำสั่ง และส่งพารามิเตอร์เหล่านั้นไปยังตาราง . การแบ่งส่วน PowerShell ดีกว่าการเขียนโค้ดยาวๆ บรรทัดเดียวมาก
เปิดไฟล์ myscript.ps1 ของคุณและแทนที่โค้ดด้วยโค้ดด้านล่างนี้ อย่าลืมเปลี่ยนค่าด้วยตนเอง และบันทึกการเปลี่ยนแปลง
รหัสด้านล่างส่งคำขอดึงในที่เก็บ (repo0001 และ repo0002) และผสานการเปลี่ยนแปลงจากสาขา feature01 ไปยัง main สาขา
# Create a hashtable with some variables
$prParams = @{
OwnerName = 'bta1981'
RepositoryName = "$repo"
Title = 'Add simple file to root'
# Head branch (containing the changes to be merged)
Head = 'feature01'
# Target branch of the pull request where the head changes will be merged.
Base = 'main'
Body = "Adds a simple text file to the repository root.`n`nThis is an automated PR!"
}
# Create a variable with an array that contains the repositories we want to target
$Repos = @('repo0001', 'repo0002')
# Go through all repositories and create the new pull requests
ForEach ($Repo in $Repos) {
New-GitHubPullRequest @prParams
}
หลังจากเปลี่ยนค่าในสคริปต์แล้ว ให้บันทึกการเปลี่ยนแปลงและรันสคริปต์
.\myscript.ps1
ตอนนี้ นำทางไปยังคำขอดึงบน GitHub คุณจะเห็นคำขอดึงใหม่สำหรับพื้นที่เก็บข้อมูลที่คุณระบุไว้ในสคริปต์ myscript.ps1
หรือเรียกใช้คำสั่งด้านล่างเพื่อรับข้อมูลเชิงลึกที่ดีขึ้น/ชัดเจนเกี่ยวกับคำขอดึงของคุณโดยจัดเรียงตามอายุตามลำดับ -จากมากไปน้อย โค้ดด้านล่างค้นหาคำขอดึงห้ารายการล่าสุด (-5 อันดับแรก) ภายในที่เก็บทั้งหมดของเจ้าของ PowerShell ที่ขึ้นต้นด้วยชื่อ Power
Get-GitHubRepository -OwnerName PowerShell | Where-Object { $_.name -like "Power*" } |
Get-GitHubPullRequest | Sort-Object created_at -Descending | Select-Object title,created_at -first 5
บทสรุป
บทช่วยสอนนี้มีจุดมุ่งหมายเพื่อให้คุณเริ่มต้นใช้งานโมดูล PowerShellForGitHub สำหรับการดำเนินการ PowerShell GitHub ทั่วไปโดยอัตโนมัติ เป็นไปด้วยดีหรือเปล่า?
คุณได้เรียนรู้เกี่ยวกับการติดตั้งและการเชื่อมต่อกับโมดูล PowerShellForGitHub และ ณ จุดนี้ คุณสามารถจัดการที่เก็บข้อมูล GitHub ของคุณทั้งภายในและระยะไกลได้อย่างมั่นใจ ตราบใดที่คุณมี PowerShell และโมดูล PowerShellForGitHub
ตอนนี้ ให้ดูที่เวิร์กโฟลว์ GitHub ในแต่ละวันของคุณ แล้วลองรวมและแก้ไขตัวอย่างที่คุณได้เรียนรู้ในบทช่วยสอนนี้ ถึงเวลายกระดับประสิทธิภาพการทำงาน PowerShell GitHub ของคุณไปอีกระดับ!

















