Skip to content

Commit ef0d13c

Browse files
committed
Initial commit.
0 parents  commit ef0d13c

File tree

4,657 files changed

+587322
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,657 files changed

+587322
-0
lines changed

.github/workflows/autocomment.yaml

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
name: Auto Comment on PR
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'content/**'
7+
types:
8+
- opened
9+
- synchronize
10+
permissions:
11+
pull-requests: write
12+
contents: read
13+
14+
jobs:
15+
auto-comment:
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: 'Checkout'
19+
uses: 'actions/checkout@v3'
20+
21+
- name: 'Install jq'
22+
run: sudo apt-get install jq
23+
24+
- name: Create Comment
25+
run: |
26+
set -e
27+
28+
PR_NUMBER=${{ github.event.pull_request.number }}
29+
BRANCH_NAME=${{ github.head_ref }}
30+
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
31+
CREATE_COMMENT_URL="https://api.github.com/repos/${{ github.repository }}/issues/${PR_NUMBER}/comments"
32+
UPDATE_COMMENT_URL="https://api.github.com/repos/${{ github.repository }}/issues/comments"
33+
FILES_URL="https://api.github.com/repos/${{ github.repository }}/pulls/${PR_NUMBER}/files"
34+
35+
# Check if comment already exists
36+
EXISTING_COMMENT_JSON=$(curl -Ls \
37+
-H "Accept: application/vnd.github+json" \
38+
-H "X-GitHub-Api-Version: 2022-11-28" \
39+
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
40+
$CREATE_COMMENT_URL \
41+
| jq -r '.[] | select(.user.login == "github-actions[bot]")'
42+
)
43+
EXISTING_COMMENT_ID=$(jq -r '.id' <<<"$EXISTING_COMMENT_JSON")
44+
EXISTING_COMMENT=$(jq -r '.body' <<<"$EXISTING_COMMENT_JSON")
45+
46+
# Get all changed md files
47+
CHANGED_MD_FILES=$(curl -Ls \
48+
-H "Accept: application/vnd.github+json" \
49+
-H "X-GitHub-Api-Version: 2022-11-28" \
50+
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
51+
$FILES_URL \
52+
| jq -r --arg prefix $BRANCH_NAME/ '.[] | select(((.filename | test("content/(?!.*embed).*\\.md")) and .status != "removed")) | ($prefix + .filename)' \
53+
| sed -E -e 's|(^[^/]+/)([^/]+/)|\1|' -e 's|^|https://redis.io/docs/staging/|' -e 's|(_?index)?\.md||' \
54+
| sort \
55+
| uniq)
56+
57+
# Get all changed image files
58+
CHANGED_IMAGE_FILES=$(curl -Ls \
59+
-H "Accept: application/vnd.github+json" \
60+
-H "X-GitHub-Api-Version: 2022-11-28" \
61+
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
62+
$FILES_URL \
63+
| jq -r '.[] | select(.filename | test("^static/images\/.+(.png|.svg|.gif|.)")) | .filename | sub("^static/";"")')
64+
65+
# Get all changed embeds files
66+
CHANGED_EMBED_FILES=$(curl -Ls \
67+
-H "Accept: application/vnd.github+json" \
68+
-H "X-GitHub-Api-Version: 2022-11-28" \
69+
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
70+
$FILES_URL \
71+
| jq -r '.[] | select(.filename | test("^content/embeds\/.+.md")) | .filename | split("/")[-1]')
72+
73+
if [[ -n "$CHANGED_IMAGE_FILES" ]]
74+
then
75+
# For each image, work out in which README it is present
76+
MD_FILES_WITH_IMAGE=()
77+
for CHANGED_IMAGE_FILE in "${CHANGED_IMAGE_FILES[@]}"; do
78+
MD_FILE_WITH_IMAGE=$(grep -ro "$CHANGED_IMAGE_FILE" content \
79+
| sed -E -e 's|:.+||' -e "s|^content/|https://redis.io/docs/staging/$BRANCH_NAME/|" -e 's|(_?index)?\.md||' \
80+
| grep -v "https://redis.io/docs/staging/$BRANCH_NAME/embeds/" \
81+
| sort \
82+
| uniq)
83+
MD_FILES_WITH_IMAGE+=($MD_FILE_WITH_IMAGE)
84+
done
85+
CHANGED_MD_FILES=$(printf "%s\n" "${CHANGED_MD_FILES}" "${MD_FILES_WITH_IMAGE[@]}" \
86+
| sort \
87+
| uniq)
88+
fi
89+
90+
if [[ -n "$CHANGED_EMBED_FILES" ]]
91+
then
92+
# For each embed, work out in which README it is present
93+
MD_FILES_WITH_EMBED=()
94+
for CHANGED_EMBED_FILE in "${CHANGED_EMBED_FILES[@]}"; do
95+
MD_FILE_WITH_EMBED=$(grep -ro "< embed-md \"${CHANGED_EMBED_FILE}\" >" content \
96+
| sed -E -e 's|:.+||' -e "s|^content/|https://redis.io/docs/staging/$BRANCH_NAME/|" -e 's|(_?index)?\.md||' \
97+
| sort \
98+
| uniq)
99+
MD_FILES_WITH_EMBED+=($MD_FILE_WITH_EMBED)
100+
done
101+
CHANGED_MD_FILES=$(printf "%s\n" "${CHANGED_MD_FILES}" "${MD_FILES_WITH_EMBED[@]}" \
102+
| sort \
103+
| uniq)
104+
fi
105+
106+
CHANGED_MD_FILES=$(printf "%s\n" "${CHANGED_MD_FILES}" \
107+
| xargs \
108+
| sed 's/ /<br>/g')
109+
110+
if [[ -z "$CHANGED_MD_FILES" ]]
111+
then
112+
if [[ -z "$EXISTING_COMMENT_ID" ]]
113+
then
114+
printf '%s\n' 'Nothing to do!'
115+
exit 0
116+
else
117+
# If a comment already exists but there are no changed files in the PR anymore, delete the comment
118+
curl -Ls \
119+
-X DELETE \
120+
-H "Accept: application/vnd.github+json" \
121+
-H "X-GitHub-Api-Version: 2022-11-28" \
122+
-H "Authorization: token ${GITHUB_TOKEN}" \
123+
"${UPDATE_COMMENT_URL}/${EXISTING_COMMENT_ID}"
124+
printf '%s\n' 'Comment deleted!'
125+
exit 0
126+
fi
127+
fi
128+
129+
COMMENT="Staging links:<br> $CHANGED_MD_FILES"
130+
131+
printf '%s %s\n' 'Writing comment: ' "$COMMENT"
132+
133+
generate_post_data()
134+
{
135+
cat <<EOF
136+
{
137+
"body": "$COMMENT"
138+
EOF
139+
}
140+
141+
if [[ -n "$EXISTING_COMMENT_ID" ]]
142+
then
143+
# Update comment on pull request if comment is actually different
144+
if [[ "$COMMENT" != "$EXISTING_COMMENT" ]]
145+
then
146+
curl -Ls \
147+
-X PATCH \
148+
-H "Accept: application/vnd.github+json" \
149+
-H "X-GitHub-Api-Version: 2022-11-28" \
150+
-H "Authorization: token ${GITHUB_TOKEN}" \
151+
"${UPDATE_COMMENT_URL}/${EXISTING_COMMENT_ID}" \
152+
--data "$(generate_post_data)" 1>/dev/null
153+
154+
printf '%s\n' 'Comment updated!'
155+
else
156+
printf '%s\n' 'Nothing changed!'
157+
fi
158+
else
159+
# Write comment on pull request
160+
curl -Ls \
161+
-X POST \
162+
-H "Accept: application/vnd.github+json" \
163+
-H "X-GitHub-Api-Version: 2022-11-28" \
164+
-H "Authorization: token ${GITHUB_TOKEN}" \
165+
$CREATE_COMMENT_URL \
166+
--data "$(generate_post_data)" 1>/dev/null
167+
168+
printf '%s\n' 'Comment written!'
169+
fi
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: cleanup_pr_folders
2+
3+
on:
4+
pull_request:
5+
types:
6+
- closed
7+
8+
jobs:
9+
staging:
10+
if: github.event.pull_request.merged == true
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: 'read'
14+
id-token: 'write'
15+
env:
16+
STAGING_BUCKET: docs-staging-learn-redis-com
17+
STAGING_PROJECT_ID: ${{ secrets.GCP_PROJECT_STAGING }}
18+
STAGING_SERVICE_ACCOUNT: ${{ secrets.STAGING_SERVICE_ACCOUNT }}
19+
STAGING_WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.STAGING_WORKLOAD_IDENTITY_PROVIDER }}
20+
21+
steps:
22+
- name: 'Google auth'
23+
uses: 'google-github-actions/auth@v2'
24+
with:
25+
project_id: '${{ env.STAGING_PROJECT_ID }}'
26+
service_account: '${{ env.STAGING_SERVICE_ACCOUNT }}'
27+
workload_identity_provider: '${{ env.STAGING_WORKLOAD_IDENTITY_PROVIDER }}'
28+
29+
- name: 'Set up Cloud SDK'
30+
uses: 'google-github-actions/setup-gcloud@v2'
31+
with:
32+
project_id: '${{ env.STAGING_PROJECT_ID }}'
33+
version: '>= 363.0.0'
34+
35+
- name: Remove pull request staging folder
36+
run: |
37+
BRANCH_TO_CLEANUP="${{ github.event.pull_request.head.ref }}"
38+
STAGING_BUCKET="${{ env.STAGING_BUCKET }}"
39+
40+
if gsutil -q stat gs://${STAGING_BUCKET}/staging/${BRANCH_TO_CLEANUP}/*; then
41+
gsutil -q -m rm -r gs://${STAGING_BUCKET}/staging/${BRANCH_TO_CLEANUP}/*
42+
echo "Removed gs://${STAGING_BUCKET}/staging/${BRANCH_TO_CLEANUP}"
43+
fi
44+
45+
prod:
46+
if: github.event.pull_request.merged == true
47+
runs-on: ubuntu-latest
48+
permissions:
49+
contents: 'read'
50+
id-token: 'write'
51+
env:
52+
PROD_BUCKET: docs-prod-learn-redis-com
53+
PROD_PROJECT_ID: ${{ secrets.GCP_PROJECT_PROD }}
54+
PROD_SERVICE_ACCOUNT: ${{ secrets.PROD_SERVICE_ACCOUNT }}
55+
PROD_WORKLOAD_IDENTITY_PROVIDER: ${{ secrets.PROD_WORKLOAD_IDENTITY_PROVIDER }}
56+
57+
steps:
58+
- name: 'Google auth'
59+
uses: 'google-github-actions/auth@v2'
60+
with:
61+
project_id: '${{ env.PROD_PROJECT_ID }}'
62+
service_account: '${{ env.PROD_SERVICE_ACCOUNT }}'
63+
workload_identity_provider: '${{ env.PROD_WORKLOAD_IDENTITY_PROVIDER }}'
64+
65+
- name: 'Set up Cloud SDK'
66+
uses: 'google-github-actions/setup-gcloud@v2'
67+
with:
68+
project_id: '${{ env.PROD_PROJECT_ID }}'
69+
version: '>= 363.0.0'
70+
71+
- name: Remove pull request staging folder
72+
run: |
73+
BRANCH_TO_CLEANUP="${{ github.event.pull_request.head.ref }}"
74+
PROD_BUCKET="${{ env.PROD_BUCKET }}"
75+
76+
if gsutil -q stat gs://${PROD_BUCKET}/staging/${BRANCH_TO_CLEANUP}/*; then
77+
gsutil -q -m rm -r gs://${PROD_BUCKET}/staging/${BRANCH_TO_CLEANUP}/*
78+
echo "Removed gs://${PROD_BUCKET}/staging/${BRANCH_TO_CLEANUP}"
79+
fi

0 commit comments

Comments
 (0)