Skip to content

Commit 5f281a1

Browse files
committed
Add Smart Previews PR mechanism
1 parent 026f91a commit 5f281a1

File tree

4 files changed

+206
-12
lines changed

4 files changed

+206
-12
lines changed

.github/workflows/automated-publish-docs.yaml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ on:
44
push:
55
branches:
66
- v*.*
7+
paths-ignore:
8+
- 'github/**'
79

810
jobs:
911
env:
@@ -37,8 +39,8 @@ jobs:
3739
echo "Deploying $CURRENT_BRANCH which is not the latest version ( => $NEWEST_VERSION )..."
3840
fi
3941
40-
install-dependencies:
41-
name: install dependencies
42+
install-dependencies-and-deploy:
43+
name: Install Dependencies and Deploy
4244
needs: [env]
4345
runs-on: ubuntu-latest
4446
steps:
@@ -63,12 +65,7 @@ jobs:
6365
git config user.name "circleci-runai"
6466
git config user.email "circleci-runai@run.ai"
6567
66-
deploy:
67-
name: deploy mkdocs
68-
needs: [env, install-dependencies]
69-
runs-on: ubuntu-latest
70-
steps:
71-
- name: deploy mkdocs latest
68+
- name: deploy mkdocs
7269
run: |
7370
if [[ "${{ needs.env.outputs.CURRENT_BRANCH }}" == "${{ needs.env.outputs.NEWEST_VERSION }}" ]]; then
7471
echo "Deploying ${{ needs.env.outputs.NEWEST_VERSION }} as latest..."
@@ -87,7 +84,7 @@ jobs:
8784
8885
slack-notification:
8986
name: Slack Notification
90-
needs: [env, install-dependencies, deploy]
87+
needs: [env, install-dependencies-and-deploy]
9188
if: always()
9289
runs-on: ubuntu-latest
9390
steps:
@@ -96,8 +93,8 @@ jobs:
9693
env:
9794
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
9895
SLACK_COLOR: ${{ contains(needs.*.result, 'failure') && 'failure' || 'success' }}
99-
SLACK_TITLE: "Airgapped package for ${{ inputs.env }} environment ${{ contains(needs.*.result, 'failure') && 'failed' || 'finished successfully' }}"
96+
SLACK_TITLE: "RunAI-Docs: Version ${{ needs.env.outputs.CURRENT_BRANCH }} Deployment ${{ contains(needs.*.result, 'failure') && 'failed' || 'completed successfully' }}"
10097
SLACK_MESSAGE_ON_SUCCESS: "Docs were updated successfully for version ${{ needs.env.outputs.TITLE }}"
10198
SLACK_MESSAGE_ON_FAILURE: "Docs update FAILED for version ${{ needs.env.outputs.TITLE }}"
10299
MSG_MINIMAL: true
103-
SLACK_FOOTER: ""
100+
SLACK_FOOTER: ""
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# name: Create Preview Env using S3 and CloudFront
2+
3+
# on:
4+
# pull_request:
5+
# types:
6+
# - opened
7+
# - reopened
8+
# - synchronize
9+
# - closed
10+
# branches:
11+
# - master
12+
# - v*.*
13+
# env:
14+
# PR_NUMBER: ${{ github.event.number }}
15+
16+
# jobs:
17+
# deploy:
18+
# runs-on: ubuntu-latest
19+
# steps:
20+
# - name: Checkout code
21+
# uses: actions/checkout@v4
22+
23+
# - name: Install AWS CLI
24+
# run: |
25+
# sudo apt-get update
26+
# sudo apt-get install awscli -y
27+
28+
# - name: Sync S3 bucket
29+
# env:
30+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
31+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
32+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
33+
# run: |
34+
# aws s3 sync ./docs s3://your-bucket-name
35+
36+
# - name: Invalidate CloudFront cache
37+
# env:
38+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
39+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
40+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
41+
# run: |
42+
# aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/*"
43+
44+
# preview:
45+
# runs-on: ubuntu-latest
46+
# if: github.event_name == 'pull_request'
47+
# steps:
48+
# - name: Checkout code
49+
# uses: actions/checkout@v2
50+
51+
# - name: Install AWS CLI
52+
# run: |
53+
# sudo apt-get update
54+
# sudo apt-get install awscli -y
55+
56+
# - name: Sync S3 bucket for preview
57+
# env:
58+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
59+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
60+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
61+
# run: |
62+
# aws s3 sync ./docs s3://your-bucket-name/${{ env.PR_NUMBER }}
63+
64+
# - name: Invalidate CloudFront cache
65+
# env:
66+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
67+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
68+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
69+
# run: |
70+
# aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/${{ env.PR_NUMBER }}/*"
71+
72+
# - name: Output preview URL
73+
# run: |
74+
# echo "Preview environment URL: https://your-cloudfront-domain/${{ env.PR_NUMBER }}/"
75+
76+
# - name: Comment on PR with preview URL
77+
# uses: actions/github-script@v6
78+
# with:
79+
# script: |
80+
# github.rest.issues.createComment({
81+
# issue_number: context.issue.number,
82+
# owner: context.repo.owner,
83+
# repo: context.repo.repo,
84+
# body: `Preview environment URL: https://your-cloudfront-domain/${{ env.PR_NUMBER }}/`
85+
# })
86+
87+
# cleanup:
88+
# runs-on: ubuntu-latest
89+
# if: github.event_name == 'pull_request' && github.event.action == 'closed'
90+
# steps:
91+
# - name: Install AWS CLI
92+
# run: |
93+
# sudo apt-get update
94+
# sudo apt-get install awscli -y
95+
96+
# - name: Remove PR directory from S3 bucket
97+
# env:
98+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
99+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
100+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
101+
# run: |
102+
# aws s3 rm s3://your-bucket-name/pr-${{ env.PR_NUMBER }} --recursive
103+
104+
# - name: Invalidate CloudFront cache
105+
# env:
106+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
107+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
108+
# AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
109+
# run: |
110+
# aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} --paths "/pr-${{ env.PR_NUMBER }}/*"
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Create Preview Environment
2+
3+
on:
4+
pull_request:
5+
types: [opened, reopened, synchronize, closed]
6+
branches:
7+
- master
8+
- v*.*
9+
10+
jobs:
11+
build-and-deploy:
12+
if: github.event.action != 'closed'
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: setup python
19+
uses: actions/setup-python@v5
20+
with:
21+
python-version: '3.9'
22+
cache: 'pip' # caching pip dependencies
23+
24+
- name: install dependencies
25+
run: |
26+
pip3 install -r requirements.txt
27+
28+
- name: mkdocs-build-action
29+
run: |
30+
mkdocs build
31+
32+
- name: Install AWS CLI
33+
run: |
34+
sudo apt-get update
35+
sudo apt-get install awscli -y
36+
37+
- name: Sync S3 bucket for preview
38+
env:
39+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
40+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
41+
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
42+
run: |
43+
aws s3 sync ./site/ s3://${{ secrets.AWS_S3_BUCKET_NAME }}/PR-${{ github.event.number }} --delete
44+
45+
- name: Invalidate CloudFront cache
46+
env:
47+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
48+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
49+
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
50+
run: |
51+
aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/PR-${{ github.event.number }}/*"
52+
53+
- name: Comment on PR with preview URL
54+
uses: actions/github-script@v6
55+
with:
56+
script: |
57+
github.rest.issues.createComment({
58+
issue_number: context.issue.number,
59+
owner: context.repo.owner,
60+
repo: context.repo.repo,
61+
body: `Preview environment URL: https://your-cloudfront-domain/PR-${{ github.event.number }}/`
62+
})
63+
64+
cleanup:
65+
if: github.event.action == 'closed'
66+
runs-on: ubuntu-latest
67+
steps:
68+
- name: Install AWS CLI
69+
run: |
70+
sudo apt-get update
71+
sudo apt-get install awscli -y
72+
73+
- name: Remove PR directory from S3 bucket
74+
env:
75+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
76+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
77+
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
78+
run: |
79+
aws s3 rm s3://${{ secrets.AWS_S3_BUCKET_NAME }}/PR-${{ github.event.number }} --recursive
80+
81+
- name: Invalidate CloudFront cache
82+
env:
83+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
84+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
85+
AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }}
86+
run: |
87+
aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION_ID }} --paths "/PR-${{ github.event.number }}/*"

.github/workflows/deploy-staging.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
with:
4242
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
4343
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
44-
aws-region: us-east-1
44+
aws-region: ${{ secrets.AWS_DEFAULT_REGION}}
4545

4646
- name: Sync output to S3
4747
run: |

0 commit comments

Comments
 (0)