Skip to content

Commit c3771a4

Browse files
author
Caleb Lloyd
committed
auto release dependency updates
Signed-off-by: Caleb Lloyd <[email protected]>
1 parent 8244807 commit c3771a4

File tree

5 files changed

+129
-2
lines changed

5 files changed

+129
-2
lines changed

.github/dependabot.yml

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ updates:
66
directory: "/"
77
schedule:
88
interval: "weekly"
9+
- package-ecosystem: docker
10+
directory: /cicd
11+
schedule:
12+
interval: daily
913

1014
# version updates: disabled
1115
# security updates: enabled
+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: Deps Release
2+
3+
on: 'pull_request'
4+
5+
permissions:
6+
contents: write
7+
8+
jobs:
9+
detect:
10+
name: Detect
11+
runs-on: ubuntu-latest
12+
if: ${{ github.actor == 'dependabot[bot]' }}
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
with:
17+
fetch-depth: 0
18+
19+
- name: Configure Git
20+
run: |
21+
git config user.name "$GITHUB_ACTOR"
22+
git config user.email "[email protected]"
23+
git checkout -b "$GITHUB_HEAD_REF"
24+
25+
- name: Dependabot metadata
26+
id: dependabot-metadata
27+
uses: dependabot/fetch-metadata@v2
28+
29+
- name: Install node
30+
uses: actions/setup-node@v4
31+
with:
32+
node-version: 18
33+
34+
- name: Install semver
35+
run: |-
36+
npm install -g semver
37+
38+
- name: Bump
39+
run: |-
40+
set -e
41+
push=0
42+
config='[
43+
{
44+
"directory": "cicd",
45+
"dependencyName": "alpine"
46+
}
47+
]'
48+
49+
deps='${{ steps.dependabot-metadata.outputs.updated-dependencies-json }}'
50+
51+
for i in $(seq 0 "$(("$(echo "$config" | jq length) - 1"))"); do
52+
directory="$(echo "$config" | jq -r ".[$i].directory")"
53+
dependencyName="$(echo "$config" | jq -r ".[$i].dependencyName")"
54+
match="$(echo "$deps" | jq ".[] | select(.directory == \"/$directory\" and .dependencyName == \"$dependencyName\")")"
55+
if [ -z "$match" ]; then
56+
continue
57+
fi
58+
59+
updateType="$(echo "$match" | jq -r ".updateType")"
60+
prevVersion="$(echo "$match" | jq -r ".prevVersion")"
61+
newVersion="$(echo "$match" | jq -r ".newVersion")"
62+
63+
echo "directory : $directory"
64+
echo "dependencyName : $dependencyName"
65+
echo "updateType : $updateType"
66+
echo "prevVersion : $prevVersion"
67+
echo "newVersion : $newVersion"
68+
69+
tag_deps_version="$(git ls-remote 2>/dev/null \
70+
| grep -oE 'refs/tags/v[0-9]+\.[0-9]+\.[0-9]+' \
71+
| cut -d'/' -f3 \
72+
| xargs semver \
73+
| tail -n 1 \
74+
| xargs semver -i patch)"
75+
76+
echo "$tag_deps_version" > ./cicd/tag-base-version.txt
77+
git add ./cicd/tag-base-version.txt
78+
if git commit -m "bump dependency release to $tag_deps_version"; then
79+
push=1
80+
fi
81+
done
82+
83+
if [ "$push" = "1" ]; then
84+
git push -u origin "$GITHUB_HEAD_REF"
85+
fi
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Deps Release
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
tag:
13+
name: Tag
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Checkout
17+
uses: actions/checkout@v3
18+
19+
- id: tag
20+
name: Determine tag
21+
run: |
22+
version="$(head -n 1 ./cicd/tag_deps_version.txt)"
23+
ref_name="v$version"
24+
create=true
25+
if [ "$(git ls-remote origin "refs/tags/$ref_name" | wc -l)" = "1" ]; then
26+
create=false
27+
fi
28+
29+
echo "version=$version" | tee -a "$GITHUB_OUTPUT"
30+
echo "ref-name=$ref_name" | tee -a "$GITHUB_OUTPUT"
31+
echo "create=$create" | tee -a "$GITHUB_OUTPUT"
32+
33+
- if: ${{ fromJSON(steps.tag.outputs.create) }}
34+
name: Tag
35+
run: |
36+
git tag "${{ steps.tag.outputs.ref-name }}"
37+
git push origin "${{ steps.tag.outputs.ref-name }}"

cicd/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#syntax=docker/dockerfile-upstream:1.5
22
ARG GO_APP
33

4-
FROM alpine:3.19 as deps
4+
FROM alpine:3.19.0 as deps
55

66
ARG GO_APP
77
ARG GORELEASER_DIST_DIR=/go/src/dist
@@ -28,7 +28,7 @@ RUN <<EOT
2828
cp ${BIN_PATH} /go/bin
2929
EOT
3030

31-
FROM alpine:3.19
31+
FROM alpine:3.19.0
3232

3333
ARG GO_APP
3434
ENV GO_APP ${GO_APP}

cicd/tag_deps_version.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0.14.1

0 commit comments

Comments
 (0)