Skip to content

Commit bde6072

Browse files
committed
feat: admin - fetch updated apps since last release
1 parent 7cfea31 commit bde6072

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: 'GitHub: Fetch Updated Apps'
2+
3+
on:
4+
workflow_call:
5+
6+
# Special permissions required for OIDC authentication
7+
permissions:
8+
id-token: write
9+
contents: read
10+
actions: read
11+
12+
env:
13+
GH_TOKEN: ${{ secrets.GH_TOKEN }}
14+
15+
jobs:
16+
admin-fetch-updated-apps:
17+
name: 'GitHub: Fetch Updated Apps'
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v4
22+
with:
23+
repository: ${{ github.repository }}
24+
25+
- name: Fetch Updated Apps
26+
run: |
27+
source ./admin/fetch_updated_apps.sh
28+
29+
fetch_updated_apps ${{ github.repository_owner }}
30+
31+
echo "::notice::Updated Apps Fetched"

admin/fetch_updated_apps.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/bash
2+
3+
export THIRD_PARTY_SERVICES=(
4+
caddy
5+
postgres-migrate
6+
kratos-migrate
7+
kratos
8+
oathkeeper
9+
object-storage
10+
qdrant
11+
)
12+
13+
14+
function get_docker_compose_services() {
15+
for service in $(docker compose config --services); do
16+
is_third_party_service="false"
17+
for tps in ${THIRD_PARTY_SERVICES[@]}; do
18+
if [[ "${service}" == "${tps}" ]]; then
19+
is_third_party_service="true"
20+
fi
21+
done
22+
23+
if [[ "${is_third_party_service}" == "false" ]]; then
24+
echo "${service}"
25+
fi
26+
done
27+
}
28+
29+
function get_latest_app_tag() {
30+
owner=$1
31+
app=$2
32+
gh api \
33+
-H "Accept: application/vnd.github+json" \
34+
-H "X-GitHub-Api-Version: 2022-11-28" \
35+
/repos/${owner}/${app}/releases/latest | jq -r '.tag_name'
36+
}
37+
38+
function fetch_updated_apps() {
39+
owner=$1
40+
echo "" > diff.json
41+
42+
for app in $(get_docker_compose_services); do
43+
echo "Fetching ${app}..."
44+
latest_app_tag=$(get_latest_app_tag ${owner} ${app})
45+
latest_app_tag_dttm=$(gh api \
46+
-H "Accept: application/vnd.github+json" \
47+
-H "X-GitHub-Api-Version: 2022-11-28" \
48+
/repos/${owner}/${app}/releases/latest | jq -r '.published_at')
49+
total_commits=$(gh api \
50+
-H "Accept: application/vnd.github+json" \
51+
-H "X-GitHub-Api-Version: 2022-11-28" \
52+
/repos/${owner}/${app}/releases/latest | jq -r '.published_at')
53+
54+
JQ_QUERY='{
55+
app: "'${app}'",
56+
latest_tag: "'${latest_app_tag}'",
57+
latest_tag_dttm: "'${latest_app_tag_dttm}'",
58+
total_commits: .total_commits,
59+
commits: [
60+
.commits[].commit | {
61+
author: .author.name,
62+
date: .author.date,
63+
message: .message
64+
}
65+
]
66+
}'
67+
68+
gh api \
69+
-H "Accept: application/vnd.github+json" \
70+
-H "X-GitHub-Api-Version: 2022-11-28" \
71+
/repos/${owner}/${app}/compare/${latest_app_tag}...dev \
72+
| jq -r "${JQ_QUERY}" >> diff.json
73+
done
74+
75+
jq --slurp '.[] | sort_by(.app)' diff.json > __diff.json
76+
mv __diff.json diff.json
77+
}

0 commit comments

Comments
 (0)