Skip to content

Commit

Permalink
Add PR seed upload workflow.
Browse files Browse the repository at this point in the history
  • Loading branch information
goodov committed Jul 10, 2024
1 parent f48f335 commit 9d4f41d
Show file tree
Hide file tree
Showing 5 changed files with 196 additions and 0 deletions.
25 changes: 25 additions & 0 deletions .github/workflows/delete-test-seed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Delete Test Seed

on:
pull_request:
types: [closed]
paths:
- 'studies/**'

jobs:
build:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true
env:
REMOTE_SEED_PATH: 'pull/${{ github.event.pull_request.number }}/seed'

steps:
- name: Delete seed
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_PRODUCTION_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PRODUCTION_SECRET_ACCESS_KEY }}
AWS_REGION: us-west-2
CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
run: |
aws s3 rm "s3://brave-production-griffin-origin/$REMOTE_SEED_PATH"
aws cloudfront create-invalidation --distribution-id "$CLOUDFRONT_DISTRIBUTION_ID" --paths "/$REMOTE_SEED_PATH"
103 changes: 103 additions & 0 deletions .github/workflows/generate-test-seed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: Generate Test Seed

on:
pull_request:
paths:
- 'studies/**'

jobs:
build:
runs-on: ubuntu-latest
env:
REMOTE_SEED_PATH: 'pull/${{ github.event.pull_request.number }}/seed'

steps:
- name: Comment "Generation In Progress"
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const commentBody =
`## 🔄 Generating Test Seed...
A new test seed file is currently being generated for this pull request.
### What's Next?
- The generation process typically takes a few minutes.
- Once the generation is complete, this comment will provide further instructions.
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, commentBody)
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
with:
fetch-depth: 0

- name: Install
run: |
npm ci
- name: Build & Test
run: |
npm run typecheck:scriptss
npm run build:proto
npm run typecheck
npm run test
- name: Lint
run: |
npm run lint -- --base origin/${{ github.event.pull_request.base.ref }}
- name: Generate seed
run: |
npm run seed_tools -- create_seed studies seed.bin
- name: Upload seed
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_PRODUCTION_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_PRODUCTION_SECRET_ACCESS_KEY }}
AWS_REGION: us-west-2
CLOUDFRONT_DISTRIBUTION_ID: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
run: |
gzip -c seed.bin | aws s3 cp - "s3://brave-production-griffin-origin/$REMOTE_SEED_PATH" \
--content-type application/octet-stream \
--content-encoding gzip
INVALIDATION_ID=$(aws cloudfront create-invalidation --distribution-id "$CLOUDFRONT_DISTRIBUTION_ID" --paths "/$REMOTE_SEED_PATH" --query 'Invalidation.Id' --output text)
aws cloudfront wait invalidation-completed --distribution-id "$CLOUDFRONT_DISTRIBUTION_ID" --id "$INVALIDATION_ID"
- name: Comment "Generation Successful"
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const fs = require('fs');
const variationsServerURL = `https://griffin.brave.com/${process.env.REMOTE_SEED_PATH}`;
const serialNumberContent = fs.readFileSync('serialnumber', 'utf8');
const commentBody =
`## 🚀 Test Seed Generated
To test the new seed, launch the browser with the following command line:
\`\`\`
--accept-empty-variations-seed-signature --variations-server-url=${variationsServerURL}
\`\`\`
#### Seed Details
- Serial Number: \`${serialNumberContent}\`
- Uploaded: \`${new Date().toISOString()}\`
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, commentBody)
- name: Comment "Generation Failed"
if: failure()
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const actionRunURL = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`;
const commentBody =
`## ❌ Test Seed Generation Failed
[Review the workflow logs for more information.](${actionRunURL})
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, commentBody)
32 changes: 32 additions & 0 deletions .github/workflows/scripts/comment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Creates or updates a single comment which is looked up by the workflow name.

module.exports = async (github, context, commentBody) => {
const uniqueCommentTag = `<!-- ${context.workflow} -->`;
commentBody = `${commentBody}\n${uniqueCommentTag}`;

const comments = await github.rest.issues.listComments({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
});

const existingComment = comments.data.find((comment) =>
comment.body.includes(uniqueCommentTag),
);

if (existingComment) {
await github.rest.issues.updateComment({
comment_id: existingComment.id,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody,
});
} else {
await github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody,
});
}
};
1 change: 1 addition & 0 deletions src/seed_tools/commands/create_seed.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export default new Command('create_seed')
.option(
'--serial_number_path <path>',
'file path to write the serial number to',
'./serialnumber',
)
.option('--mock_serial_number <value>', 'mock serial number')
.action(main);
Expand Down
35 changes: 35 additions & 0 deletions studies/AdBlockComponentUpdateIntervalStudy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[
{
"name": "AdBlockComponentUpdateIntervalStudy",
"experiment": [
{
"name": "Enabled",
"probability_weight": 100,
"feature_association": {
"enable_feature": [
"AdBlockDefaultResourceUpdateInterval"
]
},
"param": [
{
"name": "update_interval_mins",
"value": "1"
}
]
}
],
"filter": {
"channel": [
"NIGHTLY",
"BETA",
"RELEASE"
],
"platform": [
"PLATFORM_WINDOWS",
"PLATFORM_MAC",
"PLATFORM_LINUX",
"PLATFORM_ANDROID"
]
}
}
]

0 comments on commit 9d4f41d

Please sign in to comment.