Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(websites): Setup preview site workflows #18924

Merged
merged 17 commits into from
Nov 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions .github/actions/spelling/excludes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
(?:^|/)(?i)LICEN[CS]E
(?:^|/)3rdparty/
(?:^|/)amplify\.yml$
(?:^|/)build_preview_sites\.yml$
(?:^|/)create_preview_sites\.yml$
(?:^|/)preview_site_trigger\.yml$
(?:^|/)go\.sum$
(?:^|/)package(?:-lock|)\.json$
(?:^|/)Pipfile$
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/build_preview_sites.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Deploy Vector Preview Sites

on:
workflow_run:
workflows: ["Call Build Preview"]
types:
- completed

jobs:
deploy_vector_preview_site:
uses: ./.github/workflows/create_preview_sites.yml
with:
APP_ID: "d1a7j77663uxsc"
APP_NAME: "vector.dev"

deploy_rust_doc_preview_site:
uses: ./.github/workflows/create_preview_sites.yml
with:
APP_ID: "d1hoyoksbulg25"
APP_NAME: "Rust Doc"

deploy_vrl_playground_preview_site:
uses: ./.github/workflows/create_preview_sites.yml
with:
APP_ID: "d2lr4eds605rpz"
APP_NAME: "VRL Playground"
88 changes: 88 additions & 0 deletions .github/workflows/create_preview_sites.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: Create Preview Sites

on:
workflow_call:
inputs:
APP_ID:
description: "App ID for the associated website"
required: true
type: string
APP_NAME:
description: "Application name for the comment"
required: true
type: string

jobs:
create_preview_site:
runs-on: ubuntu-latest
steps:

# Get the artifacts with the PR number and branch name
- name: Download artifact
uses: actions/github-script@v3.1.0
with:
script: |
const fs = require('fs');
const artifacts = await github.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }},
});
const matchArtifact = artifacts.data.artifacts.filter(artifact => artifact.name == "pr")[0];
const download = await github.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
fs.writeFileSync('${{ github.workspace }}/pr.zip', Buffer.from(download.data));

# Extract the info from the artifact and set variables
- name: Extract PR info from artifact
run: |
unzip pr.zip -d pr
BRANCH_NAME=$(cat ./pr/PR_INFO | grep 'Branch Name' | cut -d ':' -f 2 | xargs)
SANITIZED_BRANCH_NAME=$(echo "$BRANCH_NAME" | sed 's/[\/\.]/-/g')
echo "SANITIZED_BRANCH_NAME=$SANITIZED_BRANCH_NAME" >> $GITHUB_ENV

# Kick off the job in amplify
- name: Deploy Site
env:
REQUEST_TOKEN: ${{ secrets.REQUEST_TOKEN }}
REQUEST_MESSAGE: ${{ secrets.REQUEST_MESSAGE }}
ENDPOINT: ${{ secrets.BUILDER_ENDPOINT }}
run: |
HMAC_KEY=$(echo -n $REQUEST_MESSAGE | openssl dgst -sha256 -hmac "$REQUEST_TOKEN" -binary | od -An -tx1 | tr -d ' \n'; echo)
SIGNATURE="sha256=$HMAC_KEY"
RESPONSE_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST \
-H "Content-Type: application/json" \
-H "X-Hub-Signature: $SIGNATURE" \
-d "{\"app_id\": \"$APP_ID\", \"branch_name\": \"$SANITIZED_BRANCH_NAME\"}" \
"$ENDPOINT")

# check the response code and fail if not 200
if [ "$RESPONSE_CODE" != "200" ]; then
echo "Request failed with response code $RESPONSE_CODE"
exit 1
fi

# Add preview link to comment if all 3 sites successfully start
- name: Comment Preview Link
if: success()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: actions/github-script@v3
with:
script: |
const prInfo = fs.readFileSync('./pr/PR_INFO', 'utf8');
const prInfoLines = prInfo.split('\n');
const issueNumber = parseInt(prInfoLines[0].split(': ')[1]);

await github.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue_number,
body: `Your preview site for the **${APP_NAME}** will be ready in a few minutes, please allow time for it to build. \n \n Heres your preview link: \n [${APP_NAME} preview](https://${SANITIZED_BRANCH_NAME}.${APP_ID}.amplifyapp.com)`
});


27 changes: 27 additions & 0 deletions .github/workflows/preview_site_trigger.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Call Build Preview

on:
pull_request:
types: [opened, reopened]

jobs:
approval_check:
runs-on: ubuntu-latest
steps:
- name: Echo approval
run: |
echo "Workflow has been allowed to run for PR ${{ github.event.number }}. Setting artifacts and then continuing workflow runs"

# Save the PR number and branch name to an artifact for use in subsequent jobs
- name: Save PR number and Branch name
run: |
mkdir -p ./pr
echo "PR Number: ${{ github.event.number }}" > ./pr/PR_INFO
echo "Branch Name: ${{ github.head_ref }}" >> ./pr/PR_INFO
Comment on lines +19 to +20
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small nit that I might have used different files for these like:

Suggested change
echo "PR Number: ${{ github.event.number }}" > ./pr/PR_INFO
echo "Branch Name: ${{ github.head_ref }}" >> ./pr/PR_INFO
echo "PR Number: ${{ github.event.number }}" > ./pr/number
echo "Branch Name: ${{ github.head_ref }}" > ./pr/branch

Just to make extracting the info easier (no grep/sed'ing required).


# Upload the artifact
- name: Upload PR information artifact
uses: actions/upload-artifact@v2
with:
name: pr
path: pr/
17 changes: 0 additions & 17 deletions lib/vector-vrl/web-playground/netlify.toml

This file was deleted.

109 changes: 0 additions & 109 deletions netlify.toml

This file was deleted.

9 changes: 0 additions & 9 deletions rust-doc/netlify.toml

This file was deleted.

2 changes: 0 additions & 2 deletions website/Brewfile.netlify

This file was deleted.

Loading