Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
23027da
add github action to automatically run dependency updater
JenabaBa Jul 8, 2025
27f2449
push
JenabaBa Jul 8, 2025
4fcea44
fix syntax
JenabaBa Jul 8, 2025
470dd88
comment out time
JenabaBa Jul 8, 2025
b4e06c2
test if push triggers action
JenabaBa Jul 8, 2025
aa8cd3f
change from on: push: to on: pull req:
JenabaBa Jul 8, 2025
cc9bd6d
change env action
JenabaBa Jul 8, 2025
a1707b5
change path
JenabaBa Jul 8, 2025
a71d79a
change path
JenabaBa Jul 8, 2025
e7a1851
change path to env
JenabaBa Jul 8, 2025
554cf50
change path
JenabaBa Jul 8, 2025
428ac59
un-ignore commit message
JenabaBa Jul 8, 2025
dcaded4
test env file location change
JenabaBa Jul 8, 2025
9fb29a0
fix dependency updater build command
JenabaBa Jul 8, 2025
6fbf8d3
fix dependency runner
JenabaBa Jul 8, 2025
8df3131
test if versions.json displays
JenabaBa Jul 8, 2025
89aa152
change dependency updater path
JenabaBa Jul 8, 2025
137ec77
check directory
JenabaBa Jul 8, 2025
2755e36
check path
JenabaBa Jul 8, 2025
41aa8fe
uncomment everything
JenabaBa Jul 8, 2025
322a853
test push to fork
JenabaBa Jul 8, 2025
c943d66
test base/branch
JenabaBa Jul 8, 2025
b67b030
remove pull request trigger
JenabaBa Jul 8, 2025
f9a0f92
add workflow dispatch
JenabaBa Jul 8, 2025
dc120db
test pr creation
JenabaBa Jul 8, 2025
359d2d4
revert dependencies yml back
JenabaBa Jul 8, 2025
d87230d
set delete-branch to true
JenabaBa Jul 8, 2025
d7dabd9
test if pr is created
JenabaBa Jul 8, 2025
595e2f0
fix on: pull_request
JenabaBa Jul 8, 2025
57e5b6a
rename commit message env
JenabaBa Jul 8, 2025
d683a0d
fix env file name
JenabaBa Jul 8, 2025
2ebfcaa
comment author and committer
JenabaBa Jul 8, 2025
f7905cb
try adding token
JenabaBa Jul 8, 2025
38b32fe
set permissions
JenabaBa Jul 8, 2025
79c3bd8
add read permissions
JenabaBa Jul 8, 2025
ee0dc5d
add more permissions
JenabaBa Jul 8, 2025
dc68d73
typo in pull request name
JenabaBa Jul 8, 2025
12917aa
fix typo in ym
JenabaBa Jul 8, 2025
18de284
change checkout to main
JenabaBa Jul 8, 2025
ae039ec
fix syntax
JenabaBa Jul 8, 2025
45cd81f
change ref to pr branch
JenabaBa Jul 8, 2025
d99126e
remove ref
JenabaBa Jul 8, 2025
cead39e
change base to main
JenabaBa Jul 8, 2025
13ad007
change base branch
JenabaBa Jul 8, 2025
3f8aa6a
remove base
JenabaBa Jul 8, 2025
4e13318
remove base and set ref to main create test PR
JenabaBa Jul 8, 2025
3456c03
add support for manually running updater, and change yml updater command
JenabaBa Jul 8, 2025
e57ba29
fix workflow typo
JenabaBa Jul 8, 2025
300efeb
remove author + committer and schedule to run every hour
JenabaBa Jul 9, 2025
fd67b2a
uncomment schedule
JenabaBa Jul 9, 2025
258f771
add versions next to commit hash
JenabaBa Jul 9, 2025
5b26043
remove env echo
JenabaBa Jul 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/update-dependencies.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Update Dockerfile Dependencies
on:
schedule:
- cron: '0 * * * *'
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
update:
name: update
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: main

- name: build dependency updater
run: cd dependency_updater && go build

- name: run dependency updater
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: cd dependency_updater && ./dependency_updater --repo ../ --github-action true

- name: load commit message/title .env file
uses: aarcangeli/load-dotenv@2afd907c7bb1c0324d22a6192693213867e77443 # v1.1.0
with:
filenames: 'commit_message.env'

- name: create pull request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
title: ${{ env.TITLE }}
commit-message: ${{ env.TITLE }}
body: ${{ env.DESC }}
branch: run-dependency-updater
delete-branch: true
62 changes: 45 additions & 17 deletions dependency_updater/dependency_updater.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,14 @@ func main() {
Usage: "Stages updater changes and creates commit message",
Required: false,
},
&cli.BoolFlag{
Name: "github-action",
Usage: "Specifies whether tool is being used through github action workflow",
Required: false,
},
},
Action: func(ctx context.Context, cmd *cli.Command) error {
err := updater(string(cmd.String("token")), string(cmd.String("repo")), cmd.Bool("commit"))
err := updater(string(cmd.String("token")), string(cmd.String("repo")), cmd.Bool("commit"), cmd.Bool("github-action"))
if err != nil {
return fmt.Errorf("error running updater: %s", err)
}
Expand All @@ -72,7 +77,7 @@ func main() {
}
}

func updater(token string, repoPath string, commit bool) error {
func updater(token string, repoPath string, commit bool, githubAction bool) error {
var err error
var dependencies Dependencies
var updatedDependencies []VersionUpdateInfo
Expand Down Expand Up @@ -111,8 +116,8 @@ func updater(token string, repoPath string, commit bool) error {
}
}

if commit && updatedDependencies != nil {
err := createCommitMessage(updatedDependencies)
if (commit && updatedDependencies != nil) || (githubAction && updatedDependencies != nil) {
err := createCommitMessage(updatedDependencies, repoPath, githubAction)
if err != nil {
return fmt.Errorf("error creating commit message: %s", err)
}
Expand All @@ -126,7 +131,7 @@ func updater(token string, repoPath string, commit bool) error {
return nil
}

func createCommitMessage(updatedDependencies []VersionUpdateInfo) error {
func createCommitMessage(updatedDependencies []VersionUpdateInfo, repoPath string, githubAction bool) error {
var repos []string
commitTitle := "chore: updated "
commitDescription := "Updated dependencies for: \n"
Expand All @@ -136,12 +141,20 @@ func createCommitMessage(updatedDependencies []VersionUpdateInfo) error {
commitDescription += repo + " => " + tag + " (" + dependency.DiffUrl + ")" + "\n"
repos = append(repos, repo)
}
commitDescription = strings.TrimSuffix(commitDescription, "\n")

commitTitle += strings.Join(repos, ", ")
cmd := exec.Command("git", "commit", "-am", commitTitle, "-m", commitDescription)

if err := cmd.Run(); err != nil {
return fmt.Errorf("error running git commit -m: %s", err)
if githubAction {
commitTitle += strings.Join(repos, ", ")
commitDescription = "\"" + commitDescription + "\""
err := createGitMessageEnv(commitTitle, commitDescription, repoPath)
if err != nil {
return fmt.Errorf("error creating git commit message: %s", err)
}
} else if !githubAction {
cmd := exec.Command("git", "commit", "-am", commitTitle, "-m", commitDescription)
if err := cmd.Run(); err != nil {
return fmt.Errorf("error running git commit -m: %s", err)
}
}
return nil
}
Expand Down Expand Up @@ -220,11 +233,11 @@ func getVersionAndCommit(ctx context.Context, client *github.Client, dependencie

if dependencies[dependencyType].Tracking == "tag" {
versionCommit, _, err := client.Repositories.GetCommit(
ctx,
dependencies[dependencyType].Owner,
dependencies[dependencyType].Repo,
"refs/tags/"+*version.TagName,
&github.ListOptions{})
ctx,
dependencies[dependencyType].Owner,
dependencies[dependencyType].Repo,
"refs/tags/"+*version.TagName,
&github.ListOptions{})
if err != nil {
return "", "", VersionUpdateInfo{}, fmt.Errorf("error getting commit for "+dependencyType+": %s", err)
}
Expand Down Expand Up @@ -264,7 +277,7 @@ func updateVersionTagAndCommit(
if err != nil {
return fmt.Errorf("error writing to versions "+dependencyType+": %s", err)
}

return nil
}

Expand Down Expand Up @@ -318,6 +331,21 @@ func createVersionsEnv(repoPath string, dependencies Dependencies) error {
return nil
}

func createGitMessageEnv(title string, description string, repoPath string) error {
file, err := os.Create(repoPath + "/commit_message.env")
if err != nil {
return fmt.Errorf("error creating git_commit_message.env file: %s", err)
}
defer file.Close()

envString := "export TITLE=" + title + "\nexport DESC=" + description
_, err = file.WriteString(envString)
if err != nil {
return fmt.Errorf("error writing to git_commit_message.env file: %s", err)
}
return nil
}

func generateGithubRepoUrl(dependencies Dependencies, dependencyType string) string {
return "https://github.com/" + dependencies[dependencyType].Owner + "/" + dependencies[dependencyType].Repo
}
}