1
0
mirror of synced 2026-01-21 15:01:02 -05:00
Files
docs/tests/meta/repository-references.js
James M. Greene f388a3d550 Deploy to staging manually using a script (#19769)
* Add 'script/deploy' to enable manual deploys to Heroku

* Pass API tokens into 'deploy-to-staging' module usage

* Construct Octokit instance to pass in

* Get PR branch name and verify state

* Reorganize

* Rename option to 'octokit'

* Add missing option

* Actually use the convenience methods for convenience

* Simplify top-level script

* Top-level script revisions

* Add parse-pr-url module

* Add create-staging-app-name module

* Remove misplaced comment

* Pass in owner

* Use owner param

* More variables

* Pass owner along more

* Correct prNumber param reference

* Add WIP deploy-to-staging module

* Prevent 'scripts/' and '.github/actions-scripts/' files from being modified in open source repo

* Extract PR author earlier

* Add note about optionally supplying DOCUBOT_REPO_PAT env var

* Override Heroku env var during AppSetup creation instead of later to avoid triggering a second deploy

* Updates to deploy-to-staging module

* Lots of updates

* Add dyno start-up monitoring and warmup requests

* Ignore 'script/deploy' in the repository-references test

* Correct path to Octokit helper

* Temporarily add a 'gha-' prefix to environment names

* Log whole error if terminal. Good for Octokit errors!

* Correct Octokit preview configuration

* Add more logging around Heroku build and release

* Added more timings to log messages

* Monitor dyno states specifically from the dyno list view to avoid 404 oddities when Free dynos are dropped and non-Free dynos are added

* Don't wait for AppSetup status as it includes the Build time

* Updating logging since we don't see DeploymentStatus update messages in the UI =(

* Remove commented out code

* Refactor to extract more properties from the PR object

* Fix reference to pull request number

* Increase Heroku polling intervals from 2.5 seconds to 5 seconds

* Remove unhelpful createDeploymentStatus API calls

* Workaround Heroku's secondary release upon app creation
2021-06-14 22:32:07 +00:00

84 lines
2.3 KiB
JavaScript

const walkSync = require('walk-sync')
const readFileAsync = require('../../lib/readfile-async')
const REPO_REGEXP = /\/\/github\.com\/github\/(?!docs[/'"\n])([\w-.]+)/gi
// These are a list of known public repositories in the GitHub organization
const ALLOW_LIST = new Set([
'site-policy',
'roadmap',
'linguist',
'super-linter',
'backup-utils',
'codeql-action-sync-tool',
'codeql-action',
'platform-samples',
'github-services',
'explore',
'enterprise-releases',
'markup',
'hubot',
'VisualStudio',
'codeql',
'gitignore',
'feedback',
'semantic',
'git-lfs',
'git-sizer',
'dmca',
'gov-takedowns',
'janky',
'rest-api-description',
'smimesign',
'tweetsodium',
'choosealicense.com',
'renaming',
'localization-support',
'docs',
'securitylab'
])
describe('check if a GitHub-owned private repository is referenced', () => {
// This tests exists to make sure we don't reference private GitHub owned repositories
// in our open-source repository. If this is failing, and the repo is public,
// feel free to add it to the list above. Or if the feature requires referencing an
// internal repo, add the feature to the ignore list below.
const filenames = walkSync(process.cwd(), {
directories: false,
ignore: [
'.algolia-cache',
'.git',
'.github/actions-scripts/enterprise-server-issue-templates/*.md',
'.github/review-template.md',
'.next',
'dist',
'node_modules',
'translations',
'lib/rest/**/*.json',
'lib/webhooks/**/*.json',
'ownership.yaml',
'docs/index.yaml',
'lib/excluded-links.js',
'content/early-access',
'data/early-access',
'data/release-notes', // These include links to internal issues in Liquid comments.
'**/*.png', // Do not check images or font files.
'**/*.jpg', // We could just put all of assets/* here, but that would prevent any
'**/*.gif', // READMEs or other text-based files from being checked.
'**/*.pdf',
'**/*.ico',
'**/*.woff',
'script/deploy'
]
})
test.each(filenames)('in file %s', async (filename) => {
const file = await readFileAsync(filename, 'utf8')
const matches = Array.from(file.matchAll(REPO_REGEXP))
.map(([, repoName]) => repoName)
.filter(repoName => !ALLOW_LIST.has(repoName))
expect(matches).toHaveLength(0)
})
})