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 4916c97
Show file tree
Hide file tree
Showing 4 changed files with 172 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/scripts/comment.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Creates or updates a single comment which is looked up by the workflow
// reference. Workflow reference is unique for each workflow, but is persistent
// across runs.

module.exports = async (github, context, commentBody) => {
const assert = require('assert');
assert(commentBody);

const uniqueCommentTag = `<!-- ${context.workflow} -->`;
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,
});
}
};
99 changes: 99 additions & 0 deletions .github/workflows/upload-test-seed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
name: Upload Test Seed

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

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4

- name: Set upload in progress status
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
with:
script: |
const commentBody =
`## 🔄 Test Seed Upload In Progress
A new seed file is currently being uploaded for this pull request.
### What's Next?
- The upload process typically takes a few minutes.
- Once the upload is complete, a follow-up comment will provide the seed details and testing instructions.
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, commentBody)
- name: Install dependencies and run tests
run: |
npm install
npm run typecheck:scripts
npm run build:proto
npm run typecheck
npm run test
- 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 }}
REMOTE_SEED_PATH: 'pull/${{github.event.pull_request.number}}/seed'
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: Set uploaded status
uses: actions/github-script@v7
with:
script: |
console.log(context)
console.log(process.env)
const fs = require('fs');
const variationsServerURL = `https://griffin.brave.com/pull/${{github.event.pull_request.number}}/seed`;
const serialNumberContent = fs.readFileSync('serialnumber', 'utf8');
const commentBody =
`## 🚀 Test Seed Upload Successful
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}\`
- Upload Date: \`${new Date().toISOString()}\`
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, commentBody)
- name: Set failed status
if: failure()
uses: actions/github-script@v7
with:
script: |
const failureCommentBody =
`## ❌ Test Seed Upload Failed
Unfortunately, the seed upload failed.
### What's Next?
- Please review Pull Request checks statuses for more information.
- Push a new commit to trigger a new upload attempt.
`
const comment = require('.github/workflows/scripts/comment.js')
await comment(github, context, 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 4916c97

Please sign in to comment.