mirror of
https://github.com/danielmiessler/Fabric.git
synced 2026-01-10 06:48:04 -05:00
ci: add changelog generation step to release workflow and support fork releases
- Add changelog generation step to GitHub release workflow - Create updateReleaseForRepo helper method for release updates - Add fork detection logic in UpdateReleaseDescription method - Implement upstream repository release update for forks - Add fallback to current repository when upstream fails - Enhance error handling with detailed repository context - Remove duplicate success logging from main method
This commit is contained in:
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -51,3 +51,7 @@ jobs:
|
||||
args: release --clean
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Update Release Description
|
||||
run: go run ./cmd/generate_changelog --release ${{ github.ref_name }}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
7
cmd/generate_changelog/incoming/1740.txt
Normal file
7
cmd/generate_changelog/incoming/1740.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
### PR [#1740](https://github.com/danielmiessler/Fabric/pull/1740) by [ksylvan](https://github.com/ksylvan): Restore our custom Changelog Updates in GitHub Actions
|
||||
|
||||
- Add changelog generation step to GitHub release workflow
|
||||
- Create updateReleaseForRepo helper method for release updates
|
||||
- Add fork detection logic in UpdateReleaseDescription method
|
||||
- Implement upstream repository release update for forks
|
||||
- Enhance error handling with detailed repository context
|
||||
@@ -101,17 +101,49 @@ func (rm *ReleaseManager) UpdateReleaseDescription(version string) error {
|
||||
client = github.NewClient(nil)
|
||||
}
|
||||
|
||||
release, _, err := client.Repositories.GetReleaseByTag(ctx, rm.owner, rm.repo, version)
|
||||
// Check if current repository is a fork by getting repo details
|
||||
repo, _, err := client.Repositories.Get(ctx, rm.owner, rm.repo)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get repository info: %w", err)
|
||||
}
|
||||
|
||||
// If repository is a fork, try updating the upstream (parent) repository first
|
||||
if repo.Parent != nil {
|
||||
parentOwner := repo.Parent.Owner.GetLogin()
|
||||
parentRepo := repo.Parent.GetName()
|
||||
|
||||
fmt.Printf("Repository is a fork of %s/%s, attempting to update upstream release...\n", parentOwner, parentRepo)
|
||||
|
||||
err := rm.updateReleaseForRepo(ctx, client, parentOwner, parentRepo, version, releaseBody)
|
||||
if err == nil {
|
||||
fmt.Printf("Successfully updated release description for %s in upstream repository %s/%s\n", version, parentOwner, parentRepo)
|
||||
return nil
|
||||
}
|
||||
|
||||
fmt.Printf("Failed to update upstream repository: %v\nFalling back to current repository...\n", err)
|
||||
}
|
||||
|
||||
// Update current repository (either not a fork or upstream update failed)
|
||||
err = rm.updateReleaseForRepo(ctx, client, rm.owner, rm.repo, version, releaseBody)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to update release description for version %s in repository %s/%s: %w", version, rm.owner, rm.repo, err)
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully updated release description for %s in repository %s/%s\n", version, rm.owner, rm.repo)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (rm *ReleaseManager) updateReleaseForRepo(ctx context.Context, client *github.Client, owner, repo, version, releaseBody string) error {
|
||||
release, _, err := client.Repositories.GetReleaseByTag(ctx, owner, repo, version)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get release for version %s: %w", version, err)
|
||||
}
|
||||
|
||||
release.Body = &releaseBody
|
||||
_, _, err = client.Repositories.EditRelease(ctx, rm.owner, rm.repo, *release.ID, release)
|
||||
_, _, err = client.Repositories.EditRelease(ctx, owner, repo, *release.ID, release)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to update release description for version %s: %w", version, err)
|
||||
}
|
||||
|
||||
fmt.Printf("Successfully updated release description for %s\n", version)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user