Merge branch 'main' into update-python-build-docs
This commit is contained in:
@@ -61,7 +61,7 @@ jobs:
|
||||
owner: 'github',
|
||||
repo: 'docs-internal',
|
||||
title: `@${context.payload.sender.login} confirm that \#${issueNo} should be in the public github/docs repo`,
|
||||
body: `@${context.payload.sender.login} opened https://github.com/github/docs/issues/${issueNo} publicly in the github/docs repo, instead of the private github/docs-internal repo.\n\n@${context.payload.sender.login}, please confirm that this belongs in the public repo and that no sensitive information was disclosed by commenting below and closing the issue.\n\nIf this was not intentional and sensitive information was shared, please delete https://github.com/github/docs/issues/${issueNo} and notify us in the \#docs-open-source channel.\n\nThanks! \n\n/cc @github/docs @github/docs-engineering`,
|
||||
body: `@${context.payload.sender.login} opened https://github.com/github/docs/issues/${issueNo} publicly in the github/docs repo, instead of the private github/docs-internal repo.\n\n@${context.payload.sender.login}, please confirm that this belongs in the public repo and that no sensitive information was disclosed by commenting below and closing the issue.\n\nIf this was not intentional and sensitive information was shared, please delete https://github.com/github/docs/issues/${issueNo} and notify us in the \#docs-open-source channel.\n\nThanks!`,
|
||||
labels: ['OS confirmation'],
|
||||
});
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@ jobs:
|
||||
const repo = context.payload.repository.name
|
||||
|
||||
const allStatusLabels = [
|
||||
'Status: GREEN',
|
||||
'Status: GREY',
|
||||
'Status: YELLOW',
|
||||
'Status: BLACK',
|
||||
'Status: RED'
|
||||
'green',
|
||||
'grey',
|
||||
'yellow',
|
||||
'black',
|
||||
'red'
|
||||
];
|
||||
|
||||
const currentLabels = await github.issues.listLabelsOnIssue({
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
const newLabels = currentLabels.data.filter( label => allStatusLabels.includes(label.name) === false)
|
||||
|
||||
allStatusLabels.forEach( label => {
|
||||
if(context.payload.comment.body.includes(label)) {
|
||||
if(context.payload.comment.body.toLowerCase().includes(`status: ${label}`)) {
|
||||
newLabels.push(label)
|
||||
}
|
||||
});
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
BIN
assets/images/help/repository/code-scanning-search-alerts.png
Normal file
BIN
assets/images/help/repository/code-scanning-search-alerts.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
@@ -12,7 +12,7 @@ export type BreadcrumbT = {
|
||||
type Props = {}
|
||||
export const Breadcrumbs = (props: Props) => {
|
||||
const router = useRouter()
|
||||
const pathWithLocale = `/${router.locale}${router.asPath}`
|
||||
const pathWithLocale = `/${router.locale}${router.asPath.split('?')[0]}` // remove query string
|
||||
const { breadcrumbs } = useMainContext()
|
||||
|
||||
return (
|
||||
|
||||
@@ -70,7 +70,7 @@ export const HeaderNotifications = () => {
|
||||
return (
|
||||
<>
|
||||
{allNotifications.map(({ type, content }, i) => {
|
||||
const isLast = i !== allNotifications.length - 1
|
||||
const isLast = i === allNotifications.length - 1
|
||||
return (
|
||||
<div
|
||||
className={cx(
|
||||
|
||||
@@ -12,7 +12,13 @@ export const LanguagePicker = () => {
|
||||
|
||||
return (
|
||||
<div className="ml-4 d-flex flex-justify-center flex-items-center">
|
||||
<Dropdown css>
|
||||
<Dropdown
|
||||
css={`
|
||||
ul {
|
||||
width: unset;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<summary>
|
||||
{selectedLang.nativeName || selectedLang.name}
|
||||
<Dropdown.Caret />
|
||||
|
||||
@@ -45,17 +45,6 @@ export const ScrollButton = () => {
|
||||
>
|
||||
<ChevronUpIcon />
|
||||
</button>
|
||||
<style jsx>{`
|
||||
.opacity-0 {
|
||||
opacity: 0;
|
||||
}
|
||||
.opacity-100 {
|
||||
opacity: 1;
|
||||
}
|
||||
.transition-200 {
|
||||
transition: 200ms;
|
||||
}
|
||||
`}</style>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -8,14 +8,15 @@ type Props = {
|
||||
className?: string
|
||||
}
|
||||
export const TruncateLines = (props: Props) => {
|
||||
const Component = props.as || 'div'
|
||||
const { as, maxLines, className, children } = props
|
||||
const Component = as || 'div'
|
||||
return (
|
||||
<Component className={cx('root', props.className)}>
|
||||
{props.children}
|
||||
<Component className={cx('root', className)}>
|
||||
{children}
|
||||
<style jsx>{`
|
||||
.root {
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: ${props.maxLines};
|
||||
-webkit-line-clamp: ${maxLines};
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
31
components/article/ArticleTitle.tsx
Normal file
31
components/article/ArticleTitle.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
import { Tooltip, Link } from '@primer/components'
|
||||
import { PrinterIcon } from './PrinterIcon'
|
||||
|
||||
type Props = {
|
||||
children: React.ReactNode
|
||||
}
|
||||
export const ArticleTitle = ({ children }: Props) => {
|
||||
return (
|
||||
<div className="d-flex flex-items-baseline flex-justify-between">
|
||||
<h1 className="my-4">{children}</h1>
|
||||
<div className="d-none d-lg-block ml-2">
|
||||
<Tooltip aria-label="Print this article" noDelay direction="n">
|
||||
<Link
|
||||
as="button"
|
||||
underline={false}
|
||||
muted
|
||||
onClick={() => {
|
||||
try {
|
||||
document.execCommand('print', false)
|
||||
} catch (e) {
|
||||
window.print()
|
||||
}
|
||||
}}
|
||||
>
|
||||
<PrinterIcon />
|
||||
</Link>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -17,42 +17,40 @@ export const ArticleVersionPicker = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="d-none d-lg-flex flex-justify-end">
|
||||
<Dropdown
|
||||
css={`
|
||||
ul {
|
||||
width: unset;
|
||||
<Dropdown
|
||||
css={`
|
||||
ul {
|
||||
width: unset;
|
||||
}
|
||||
`}
|
||||
>
|
||||
<summary className="f4 h5-mktg btn-outline-mktg btn-mktg p-2">
|
||||
<span className="d-md-none d-xl-inline-block">{t('article_version')}</span>{' '}
|
||||
{allVersions[currentVersion].versionTitle}
|
||||
<Dropdown.Caret />
|
||||
</summary>
|
||||
<Dropdown.Menu direction="sw">
|
||||
{(page.permalinks || []).map((permalink) => {
|
||||
if (permalink.pageVersion === 'homepage') {
|
||||
return null
|
||||
}
|
||||
`}
|
||||
>
|
||||
<summary className="f4 h5-mktg btn-outline-mktg btn-mktg p-2">
|
||||
<span className="d-md-none d-xl-inline-block">{t('article_version')}</span>{' '}
|
||||
{allVersions[currentVersion].versionTitle}
|
||||
<Dropdown.Caret />
|
||||
</summary>
|
||||
<Dropdown.Menu direction="sw">
|
||||
{(page.permalinks || []).map((permalink) => {
|
||||
if (permalink.pageVersion === 'homepage') {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<Dropdown.Item key={permalink.href}>
|
||||
<Link href={permalink.href}>
|
||||
<a>{permalink.pageVersionTitle}</a>
|
||||
</Link>
|
||||
</Dropdown.Item>
|
||||
)
|
||||
})}
|
||||
<div className="pb-1">
|
||||
<Link href={`/${router.locale}/${enterpriseServerVersions[0]}/admin/all-releases`}>
|
||||
<a className="f6 no-underline color-text-tertiary pl-3 pr-2 no-wrap">
|
||||
See all Enterprise releases
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
</div>
|
||||
return (
|
||||
<Dropdown.Item key={permalink.href}>
|
||||
<Link href={permalink.href}>
|
||||
<a>{permalink.pageVersionTitle}</a>
|
||||
</Link>
|
||||
</Dropdown.Item>
|
||||
)
|
||||
})}
|
||||
<div className="pb-1">
|
||||
<Link href={`/${router.locale}/${enterpriseServerVersions[0]}/admin/all-releases`}>
|
||||
<a className="f6 no-underline color-text-tertiary pl-3 pr-2 no-wrap">
|
||||
See all Enterprise releases
|
||||
</a>
|
||||
</Link>
|
||||
</div>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
)
|
||||
}
|
||||
|
||||
20
components/article/PrinterIcon.tsx
Normal file
20
components/article/PrinterIcon.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
// From https://heroicons.com
|
||||
export const PrinterIcon = () => {
|
||||
return (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height={18}
|
||||
width={18}
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
>
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -84,6 +84,7 @@ export type MainContextT = {
|
||||
currentProductTree?: CurrentProductTree
|
||||
featureFlags: FeatureFlags
|
||||
page: {
|
||||
documentType: string
|
||||
languageVariants: Array<{ name: string; code: string; hreflang: string; href: string }>
|
||||
topics: Array<string>
|
||||
fullTitle?: string
|
||||
@@ -126,6 +127,7 @@ export const getMainContextFromRequest = (req: any): MainContextT => {
|
||||
relativePath: req.context.page?.relativePath,
|
||||
page: {
|
||||
languageVariants: req.context.page.languageVariants,
|
||||
documentType: req.context.page.documentType,
|
||||
fullTitle: req.context.page.fullTitle,
|
||||
topics: req.context.page.topics || [],
|
||||
introPlainText: req.context.page?.introPlainText,
|
||||
|
||||
@@ -70,8 +70,9 @@ export const useProductLandingContext = (): ProductLandingContextT => {
|
||||
|
||||
export const getProductLandingContextFromRequest = (req: any): ProductLandingContextT => {
|
||||
const productTree = req.context.currentProductTree
|
||||
const page = req.context.page
|
||||
return {
|
||||
...pick(req.context.page, [
|
||||
...pick(page, [
|
||||
'title',
|
||||
'shortTitle',
|
||||
'introPlainText',
|
||||
@@ -96,11 +97,11 @@ export const getProductLandingContextFromRequest = (req: any): ProductLandingCon
|
||||
})
|
||||
),
|
||||
|
||||
introLinks: productTree.page.introLinks
|
||||
introLinks: page.introLinks
|
||||
? {
|
||||
quickstart: productTree.page.introLinks.quickstart,
|
||||
reference: productTree.page.introLinks.reference,
|
||||
overview: productTree.page.introLinks.overview,
|
||||
quickstart: page.introLinks.quickstart,
|
||||
reference: page.introLinks.reference,
|
||||
overview: page.introLinks.overview,
|
||||
}
|
||||
: null,
|
||||
|
||||
|
||||
33
components/context/TocLandingContext.tsx
Normal file
33
components/context/TocLandingContext.tsx
Normal file
@@ -0,0 +1,33 @@
|
||||
import { createContext, useContext } from 'react'
|
||||
|
||||
export type TocItem = {
|
||||
fullPath: string
|
||||
title: string
|
||||
intro?: string
|
||||
}
|
||||
|
||||
export type TocLandingContextT = {
|
||||
title: string
|
||||
introPlainText: string
|
||||
tocItems: Array<TocItem>
|
||||
}
|
||||
|
||||
export const TocLandingContext = createContext<TocLandingContextT | null>(null)
|
||||
|
||||
export const useTocLandingContext = (): TocLandingContextT => {
|
||||
const context = useContext(TocLandingContext)
|
||||
|
||||
if (!context) {
|
||||
throw new Error('"useTocLandingContext" may only be used inside "TocLandingContext.Provider"')
|
||||
}
|
||||
|
||||
return context
|
||||
}
|
||||
|
||||
export const getTocLandingContextFromRequest = (req: any): TocLandingContextT => {
|
||||
return {
|
||||
title: req.context.page.title,
|
||||
introPlainText: req.context.page.introPlainText,
|
||||
tocItems: req.context.tocItems || [],
|
||||
}
|
||||
}
|
||||
@@ -78,7 +78,7 @@ const ArticleList = ({ title, viewAllHref, articles }: ArticleListProps) => {
|
||||
<Link href={link.href}>
|
||||
<a className="link-with-intro Bump-link--hover no-underline d-block py-3">
|
||||
<h4 className="link-with-intro-title">
|
||||
{link.title}
|
||||
<span dangerouslySetInnerHTML={{ __html: link.title }} />
|
||||
<span className="Bump-link-symbol">→</span>
|
||||
</h4>
|
||||
{!link.hideIntro && link.intro && (
|
||||
@@ -87,7 +87,7 @@ const ArticleList = ({ title, viewAllHref, articles }: ArticleListProps) => {
|
||||
maxLines={2}
|
||||
className="link-with-intro-intro color-text-secondary mb-0 mt-1"
|
||||
>
|
||||
{link.intro}
|
||||
<span dangerouslySetInnerHTML={{ __html: link.intro }} />
|
||||
</TruncateLines>
|
||||
)}
|
||||
{link.date && (
|
||||
|
||||
@@ -11,6 +11,7 @@ export const GuideCards = () => {
|
||||
const router = useRouter()
|
||||
const { currentCategory } = useMainContext()
|
||||
const { guideCards } = useProductLandingContext()
|
||||
const routePath = `/${router.asPath.split('?')[0]}` // remove query string
|
||||
|
||||
if (!guideCards) {
|
||||
return null
|
||||
@@ -25,7 +26,7 @@ export const GuideCards = () => {
|
||||
</div>
|
||||
|
||||
{!currentCategory && (
|
||||
<Link href={`${router.asPath}/guides`}>
|
||||
<Link href={`${routePath}/guides`}>
|
||||
<a className="btn btn-outline float-right">
|
||||
Explore guides <ArrowRightIcon />
|
||||
</a>
|
||||
|
||||
@@ -47,7 +47,7 @@ const ArticleList = ({ page }: { page: CurrentProductTree }) => {
|
||||
return (
|
||||
<li
|
||||
key={grandchildPage.href + index}
|
||||
className={cx('mb-3', index >= maxArticles ? 'd-none' : null)}
|
||||
className={cx('mb-3', (!isShowingMore && index >= maxArticles) ? 'd-none' : null)}
|
||||
>
|
||||
<Link href={grandchildPage.href}>
|
||||
<a>{grandchildPage.page.title}</a>
|
||||
|
||||
64
components/landing/ProductLanding.tsx
Normal file
64
components/landing/ProductLanding.tsx
Normal file
@@ -0,0 +1,64 @@
|
||||
import { DefaultLayout } from 'components/DefaultLayout'
|
||||
import { useProductLandingContext } from 'components/context/ProductLandingContext'
|
||||
|
||||
import { LandingHero } from 'components/landing/LandingHero'
|
||||
import { FeaturedArticles } from 'components/landing/FeaturedArticles'
|
||||
import { GuideCards } from 'components/landing/GuideCards'
|
||||
import { SponsorsExamples } from 'components/landing/SponsorsExamples'
|
||||
import { CommunityExamples } from 'components/landing/CommunityExamples'
|
||||
import { CodeExamples } from 'components/landing/CodeExamples'
|
||||
import { LandingSection } from 'components/landing/LandingSection'
|
||||
import { useTranslation } from 'components/hooks/useTranslation'
|
||||
import { ProductArticlesList } from 'components/landing/ProductArticlesList'
|
||||
|
||||
export const ProductLanding = () => {
|
||||
const { shortTitle, guideCards, productUserExamples, productCommunityExamples, productCodeExamples } =
|
||||
useProductLandingContext()
|
||||
const { t } = useTranslation('product_landing')
|
||||
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<LandingSection className="pt-3">
|
||||
<LandingHero />
|
||||
</LandingSection>
|
||||
|
||||
<LandingSection>
|
||||
<FeaturedArticles />
|
||||
</LandingSection>
|
||||
|
||||
{productCodeExamples.length > 0 && (
|
||||
<LandingSection title={t('code_examples')} className="my-6">
|
||||
<CodeExamples />
|
||||
</LandingSection>
|
||||
)}
|
||||
|
||||
{productCommunityExamples.length > 0 && (
|
||||
<LandingSection title={t('communities_using_discussions')} className="my-6">
|
||||
<CommunityExamples />
|
||||
</LandingSection>
|
||||
)}
|
||||
|
||||
{productUserExamples.length > 0 && (
|
||||
<LandingSection title={t('sponsor_community')} className="my-6">
|
||||
<SponsorsExamples />
|
||||
</LandingSection>
|
||||
)}
|
||||
|
||||
{/* {% if currentVersion contains 'enterprise-server' and currentProduct == 'admin' %}
|
||||
{% include product-releases %}
|
||||
{% endif %} */}
|
||||
|
||||
{guideCards.length > 0 && (
|
||||
<div className="color-bg-tertiary py-6 my-8">
|
||||
<LandingSection title={t('guides')} className="my-6">
|
||||
<GuideCards />
|
||||
</LandingSection>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<LandingSection sectionLink="all-docs" title={`All ${shortTitle} Docs`}>
|
||||
<ProductArticlesList />
|
||||
</LandingSection>
|
||||
</DefaultLayout>
|
||||
)
|
||||
}
|
||||
@@ -4,19 +4,29 @@ import cx from 'classnames'
|
||||
|
||||
import type { TocItem } from '../context/ProductLandingContext'
|
||||
|
||||
export const TableOfContents = (props: { items?: Array<TocItem> }) => {
|
||||
type Props = {
|
||||
items: Array<TocItem>
|
||||
variant?: 'compact' | 'expanded'
|
||||
}
|
||||
export const TableOfContents = (props: Props) => {
|
||||
const { items, variant = 'expanded' } = props
|
||||
const router = useRouter()
|
||||
|
||||
return (
|
||||
<div>
|
||||
{(props.items || []).map((obj) => {
|
||||
if (!obj) {
|
||||
<ul className={cx(variant === 'compact' ? 'list-style-inside pl-2' : 'list-style-none')}>
|
||||
{(items || []).map((item) => {
|
||||
if (!item) {
|
||||
return null
|
||||
}
|
||||
const { fullPath: href, title, intro } = obj
|
||||
|
||||
const { fullPath: href, title, intro } = item
|
||||
const isActive = router.pathname === href
|
||||
return (
|
||||
<div key={href} className={cx('mb-5', isActive && 'color-auto-gray-4')}>
|
||||
return variant === 'compact' ? (
|
||||
<li key={href} className="f4 my-1">
|
||||
<Link href={href}>{title}</Link>
|
||||
</li>
|
||||
) : (
|
||||
<li key={href} className={cx('mb-5', isActive && 'color-auto-gray-4')}>
|
||||
<Link href={href}>
|
||||
<a className="Bump-link--hover no-underline d-block py-1 border-bottom color-border-primary">
|
||||
<h4>
|
||||
@@ -26,9 +36,9 @@ export const TableOfContents = (props: { items?: Array<TocItem> }) => {
|
||||
</a>
|
||||
</Link>
|
||||
{intro && <p className="f4 mt-3" dangerouslySetInnerHTML={{ __html: intro }} />}
|
||||
</div>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</div>
|
||||
</ul>
|
||||
)
|
||||
}
|
||||
|
||||
55
components/landing/TocLanding.tsx
Normal file
55
components/landing/TocLanding.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
import { Grid } from '@primer/components'
|
||||
|
||||
import { DefaultLayout } from 'components/DefaultLayout'
|
||||
import { TableOfContents } from 'components/landing/TableOfContents'
|
||||
import { ArticleVersionPicker } from 'components/article/ArticleVersionPicker'
|
||||
import { Breadcrumbs } from 'components/Breadcrumbs'
|
||||
import { useTocLandingContext } from 'components/context/TocLandingContext'
|
||||
import { ArticleTitle } from 'components/article/ArticleTitle'
|
||||
|
||||
type Props = {
|
||||
variant?: 'compact' | 'expanded'
|
||||
}
|
||||
export const TocLanding = ({ variant = 'expanded' }: Props) => {
|
||||
const { title, introPlainText, tocItems } = useTocLandingContext()
|
||||
return (
|
||||
<DefaultLayout>
|
||||
<div className="container-xl px-3 px-md-6 my-4 my-lg-4">
|
||||
<div className="d-lg-flex flex-justify-between">
|
||||
<div className="d-block d-lg-none">
|
||||
<ArticleVersionPicker />
|
||||
</div>
|
||||
<div className="d-flex flex-items-center">
|
||||
<Breadcrumbs />
|
||||
</div>
|
||||
<div className="d-none d-lg-block">
|
||||
<ArticleVersionPicker />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Grid
|
||||
gridTemplateColumns="minmax(500px, 720px) minmax(220px, 1fr)"
|
||||
gridTemplateRows="auto 1fr"
|
||||
gridGap={16}
|
||||
>
|
||||
<div>
|
||||
<div className="mt-8">
|
||||
<ArticleTitle>{title}</ArticleTitle>
|
||||
|
||||
<div className="lead-mktg">
|
||||
<p>{introPlainText}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="border-bottom border-xl-0 pb-4 mb-5 pb-xl-0 mb-xl-0" />
|
||||
|
||||
<div className={variant === 'expanded' ? 'mt-7' : 'mt-2'}>
|
||||
<TableOfContents items={tocItems} variant={variant} />
|
||||
</div>
|
||||
</div>
|
||||
<div></div>
|
||||
</Grid>
|
||||
</div>
|
||||
</DefaultLayout>
|
||||
)
|
||||
}
|
||||
@@ -1,16 +1,12 @@
|
||||
import { useRouter } from 'next/router'
|
||||
import Link from 'next/link'
|
||||
import cx from 'classnames'
|
||||
import { useDetails, Details } from '@primer/components'
|
||||
import { ChevronDownIcon } from '@primer/octicons-react'
|
||||
|
||||
import { useMainContext } from 'components/context/MainContext'
|
||||
import { CurrentProductTree, useMainContext } from 'components/context/MainContext'
|
||||
import { AllProductsLink } from 'components/product/AllProductsLink'
|
||||
// <!--
|
||||
// Styling note:
|
||||
|
||||
// Categories, Maptopics, and Articles list items get a class of `active` when they correspond to content
|
||||
// hierarchy of the current page. If an item's URL is also the same as the current URL, the item
|
||||
// also gets an `is-current-page` class.
|
||||
// -->
|
||||
export const SidebarProduct = () => {
|
||||
const router = useRouter()
|
||||
const { currentProductTree: currentProductTree } = useMainContext()
|
||||
@@ -29,7 +25,7 @@ export const SidebarProduct = () => {
|
||||
<>
|
||||
<li title="" className="sidebar-product mb-2">
|
||||
<Link href={currentProductTree.href}>
|
||||
<a className="pl-4 pr-5 pb-1 f4 color-text-primary">{productTitle}</a>
|
||||
<a className="pl-4 pr-5 pb-1 f4 color-text-primary no-underline">{productTitle}</a>
|
||||
</Link>
|
||||
</li>
|
||||
|
||||
@@ -53,135 +49,17 @@ export const SidebarProduct = () => {
|
||||
>
|
||||
{isStandaloneCategory ? (
|
||||
<Link href={childPage.href}>
|
||||
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary">
|
||||
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary no-underline">
|
||||
{childTitle}
|
||||
</a>
|
||||
</Link>
|
||||
) : (
|
||||
<details
|
||||
className={cx('dropdown-withArrow details details-reset')}
|
||||
open={routePath.includes(childPage.href) || i < 3}
|
||||
>
|
||||
<summary>
|
||||
<div className="d-flex flex-justify-between">
|
||||
<Link href={childPage.href}>
|
||||
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary">
|
||||
{childTitle}
|
||||
</a>
|
||||
</Link>
|
||||
{i < 3 && (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className="octicon flex-shrink-0 arrow mr-3"
|
||||
style={{ marginTop: 7 }}
|
||||
viewBox="0 0 16 16"
|
||||
width="16"
|
||||
height="16"
|
||||
>
|
||||
{' '}
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"
|
||||
></path>
|
||||
</svg>
|
||||
)}
|
||||
</div>
|
||||
</summary>
|
||||
{routePath.includes(childPage.href) || i < 3 ? (
|
||||
<>
|
||||
{/* <!-- some categories have maptopics with child articles --> */}
|
||||
{childPage.childPages[0].page.documentType === 'mapTopic' ? (
|
||||
<ul className="sidebar-topics list-style-none position-relative">
|
||||
{childPage.childPages.map((grandchildPage, i) => {
|
||||
const grandchildTitle =
|
||||
grandchildPage.renderedShortTitle ||
|
||||
grandchildPage.renderedFullTitle
|
||||
const isActive = routePath.includes(grandchildPage.href)
|
||||
const isCurrent = routePath === grandchildPage.href
|
||||
return (
|
||||
<li
|
||||
key={childPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-maptopic',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={grandchildPage.href}>
|
||||
<a className="pl-4 pr-5 py-2 color-text-primary">{grandchildTitle}</a>
|
||||
</Link>
|
||||
<ul className="sidebar-articles my-2">
|
||||
{grandchildPage.childPages.map(
|
||||
(greatgrandchildPage, i, arr) => {
|
||||
const greatgrandchildTitle =
|
||||
greatgrandchildPage.renderedShortTitle ||
|
||||
greatgrandchildPage.renderedFullTitle
|
||||
const isLast = i === arr.length - 1
|
||||
const isActive = routePath.includes(
|
||||
greatgrandchildPage.href
|
||||
)
|
||||
const isCurrent = routePath === greatgrandchildPage.href
|
||||
return (
|
||||
<li
|
||||
key={greatgrandchildPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-article',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={greatgrandchildPage.href}>
|
||||
<a
|
||||
className={cx(
|
||||
'pl-6 pr-5 py-1 color-text-primary',
|
||||
isLast && 'pb-2'
|
||||
)}
|
||||
>
|
||||
{greatgrandchildTitle}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
)}
|
||||
</ul>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
) : childPage.childPages[0].page.documentType == 'article' ? (
|
||||
<ul className="sidebar-articles list-style-none">
|
||||
{/* <!-- some categories have no maptopics, only articles --> */}
|
||||
{childPage.childPages.map((grandchildPage, i, arr) => {
|
||||
const grandchildTitle =
|
||||
grandchildPage.renderedShortTitle ||
|
||||
grandchildPage.renderedFullTitle
|
||||
const isLast = i === arr.length - 1
|
||||
const isActive = routePath.includes(grandchildPage.href)
|
||||
const isCurrent = routePath === grandchildPage.href
|
||||
return (
|
||||
<li
|
||||
key={grandchildPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-article',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={grandchildPage.href}>
|
||||
<a className={cx('pl-6 pr-5 py-1 color-text-primary', isLast && 'pb-2')}>
|
||||
{grandchildTitle}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
) : null}
|
||||
</>
|
||||
) : null}
|
||||
</details>
|
||||
<CollapsibleSection
|
||||
index={i}
|
||||
routePath={routePath}
|
||||
title={childTitle}
|
||||
page={childPage}
|
||||
/>
|
||||
)}
|
||||
</li>
|
||||
)
|
||||
@@ -193,3 +71,113 @@ export const SidebarProduct = () => {
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
type SectionProps = {
|
||||
index: number
|
||||
routePath: string
|
||||
page: CurrentProductTree
|
||||
title: string
|
||||
}
|
||||
const CollapsibleSection = (props: SectionProps) => {
|
||||
const { routePath, index, title, page } = props
|
||||
const isDefaultOpen = routePath.includes(page.href) || index < 3
|
||||
const { getDetailsProps, open: isOpen } = useDetails({ defaultOpen: isDefaultOpen })
|
||||
return (
|
||||
<Details {...getDetailsProps()} className="details-reset">
|
||||
<summary>
|
||||
<div className="d-flex flex-justify-between">
|
||||
<Link href={page.href}>
|
||||
<a className="pl-4 pr-2 py-2 f6 text-uppercase d-block flex-auto mr-3 color-text-primary no-underline">
|
||||
{title}
|
||||
</a>
|
||||
</Link>
|
||||
{page.childPages.length > 0 && (
|
||||
<span style={{ marginTop: 7 }} className="flex-shrink-0 pr-3">
|
||||
<ChevronDownIcon className={cx('opacity-60', isOpen && 'rotate-180')} />
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</summary>
|
||||
{/* <!-- some categories have maptopics with child articles --> */}
|
||||
{page.childPages[0].page.documentType === 'mapTopic' ? (
|
||||
<ul className="sidebar-topics list-style-none position-relative">
|
||||
{page.childPages.map((childPage, i) => {
|
||||
const childTitle = childPage.renderedShortTitle || childPage.renderedFullTitle
|
||||
const isActive = routePath.includes(childPage.href)
|
||||
const isCurrent = routePath === childPage.href
|
||||
return (
|
||||
<li
|
||||
key={childPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-maptopic',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={childPage.href}>
|
||||
<a className="pl-4 pr-5 py-2 color-text-primary no-underline">{childTitle}</a>
|
||||
</Link>
|
||||
<ul className="sidebar-articles my-2">
|
||||
{childPage.childPages.map((grandchildPage, i, arr) => {
|
||||
const grandchildTitle =
|
||||
grandchildPage.renderedShortTitle || grandchildPage.renderedFullTitle
|
||||
const isLast = i === arr.length - 1
|
||||
const isActive = routePath.includes(grandchildPage.href)
|
||||
const isCurrent = routePath === grandchildPage.href
|
||||
return (
|
||||
<li
|
||||
key={grandchildPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-article',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={grandchildPage.href}>
|
||||
<a
|
||||
className={cx(
|
||||
'pl-6 pr-5 py-1 color-text-primary no-underline',
|
||||
isLast && 'pb-2'
|
||||
)}
|
||||
>
|
||||
{grandchildTitle}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
) : page.childPages[0].page.documentType == 'article' ? (
|
||||
<ul className="sidebar-articles list-style-none">
|
||||
{/* <!-- some categories have no maptopics, only articles --> */}
|
||||
{page.childPages.map((childPage, i, arr) => {
|
||||
const childTitle = childPage.renderedShortTitle || childPage.renderedFullTitle
|
||||
const isLast = i === arr.length - 1
|
||||
const isActive = routePath.includes(childPage.href)
|
||||
const isCurrent = routePath === childPage.href
|
||||
return (
|
||||
<li
|
||||
key={childPage.href + i}
|
||||
className={cx(
|
||||
'sidebar-article',
|
||||
isActive && 'active',
|
||||
isCurrent && 'is-current-page'
|
||||
)}
|
||||
>
|
||||
<Link href={childPage.href}>
|
||||
<a className={cx('pl-6 pr-5 py-1 color-text-primary no-underline', isLast && 'pb-2')}>
|
||||
{childTitle}
|
||||
</a>
|
||||
</Link>
|
||||
</li>
|
||||
)
|
||||
})}
|
||||
</ul>
|
||||
) : null}
|
||||
</Details>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -35,13 +35,13 @@ Once you complete this project, you should understand how to build your own Java
|
||||
|
||||
### Prerequisites
|
||||
|
||||
Before you begin, you'll need to download Node.js and create a GitHub repository.
|
||||
Before you begin, you'll need to download Node.js and create a public {% data variables.product.prodname_dotcom %} repository.
|
||||
|
||||
1. Download and install Node.js 12.x, which includes npm.
|
||||
|
||||
https://nodejs.org/en/download/current/
|
||||
|
||||
1. Create a new repository on {% data variables.product.product_location %}. You can choose any repository name or use "hello-world-javascript-action" like this example. You can add these files after your project has been pushed to {% data variables.product.product_name %}. For more information, see "[Create a new repository](/articles/creating-a-new-repository)."
|
||||
1. Create a new public repository on {% data variables.product.product_location %} and call it "hello-world-javascript-action". For more information, see "[Create a new repository](/articles/creating-a-new-repository)."
|
||||
|
||||
1. Clone your repository to your computer. For more information, see "[Cloning a repository](/articles/cloning-a-repository)."
|
||||
|
||||
@@ -51,7 +51,7 @@ Before you begin, you'll need to download Node.js and create a GitHub repository
|
||||
cd hello-world-javascript-action
|
||||
```
|
||||
|
||||
1. From your terminal, initialize the directory with a `package.json` file.
|
||||
1. From your terminal, initialize the directory with npm to generate a `package.json` file.
|
||||
|
||||
```shell
|
||||
npm init -y
|
||||
@@ -59,10 +59,8 @@ Before you begin, you'll need to download Node.js and create a GitHub repository
|
||||
|
||||
### Creating an action metadata file
|
||||
|
||||
Create a new file `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)."
|
||||
Create a new file named `action.yml` in the `hello-world-javascript-action` directory with the following example code. For more information, see "[Metadata syntax for {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions)."
|
||||
|
||||
|
||||
**action.yml**
|
||||
```yaml
|
||||
name: 'Hello World'
|
||||
description: 'Greet someone and record the time'
|
||||
@@ -108,7 +106,7 @@ GitHub Actions provide context information about the webhook event, Git refs, wo
|
||||
|
||||
Add a new file called `index.js`, with the following code.
|
||||
|
||||
**index.js**
|
||||
{% raw %}
|
||||
```javascript
|
||||
const core = require('@actions/core');
|
||||
const github = require('@actions/github');
|
||||
@@ -126,6 +124,7 @@ try {
|
||||
core.setFailed(error.message);
|
||||
}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
If an error is thrown in the above `index.js` example, `core.setFailed(error.message);` uses the actions toolkit [`@actions/core`](https://github.com/actions/toolkit/tree/main/packages/core) package to log a message and set a failing exit code. For more information, see "[Setting exit codes for actions](/actions/creating-actions/setting-exit-codes-for-actions)."
|
||||
|
||||
@@ -143,7 +142,6 @@ In your `hello-world-javascript-action` directory, create a `README.md` file tha
|
||||
- Environment variables the action uses.
|
||||
- An example of how to use your action in a workflow.
|
||||
|
||||
**README.md**
|
||||
```markdown
|
||||
# Hello world javascript action
|
||||
|
||||
@@ -180,7 +178,7 @@ It's best practice to also add a version tag for releases of your action. For mo
|
||||
```shell
|
||||
git add action.yml index.js node_modules/* package.json package-lock.json README.md
|
||||
git commit -m "My first action is ready"
|
||||
git tag -a -m "My first action release" v1
|
||||
git tag -a -m "My first action release" v1.1
|
||||
git push --follow-tags
|
||||
```
|
||||
|
||||
@@ -205,7 +203,7 @@ Checking in your `node_modules` directory can cause problems. As an alternative,
|
||||
```shell
|
||||
git add action.yml dist/index.js node_modules/*
|
||||
git commit -m "Use vercel/ncc"
|
||||
git tag -a -m "My first action release" v1
|
||||
git tag -a -m "My first action release" v1.1
|
||||
git push --follow-tags
|
||||
```
|
||||
|
||||
@@ -217,10 +215,11 @@ Now you're ready to test your action out in a workflow. When an action is in a p
|
||||
|
||||
#### Example using a public action
|
||||
|
||||
The following workflow code uses the completed hello world action in the `actions/hello-world-javascript-action` repository. Copy the workflow code into a `.github/workflows/main.yml` file, but replace the `actions/hello-world-javascript-action` repository with the repository you created. You can also replace the `who-to-greet` input with your name.
|
||||
This example demonstrates how your new public action can be run from within an external repository.
|
||||
|
||||
Copy the following YAML into a new file at `.github/workflows/main.yml`, and update the `uses: octocat/hello-world-javascript-action@v1.1` line with your username and the name of the public repository you created above. You can also replace the `who-to-greet` input with your name.
|
||||
|
||||
{% raw %}
|
||||
**.github/workflows/main.yml**
|
||||
```yaml
|
||||
on: [push]
|
||||
|
||||
@@ -231,7 +230,7 @@ jobs:
|
||||
steps:
|
||||
- name: Hello world action step
|
||||
id: hello
|
||||
uses: actions/hello-world-javascript-action@v1.1
|
||||
uses: octocat/hello-world-javascript-action@v1.1
|
||||
with:
|
||||
who-to-greet: 'Mona the Octocat'
|
||||
# Use the output from the `hello` step
|
||||
@@ -240,6 +239,8 @@ jobs:
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
When this workflow is triggered, the runner will download the `hello-world-javascript-action` action from your public repository and then execute it.
|
||||
|
||||
#### Example using a private action
|
||||
|
||||
Copy the workflow code into a `.github/workflows/main.yml` file in your action's repository. You can also replace the `who-to-greet` input with your name.
|
||||
|
||||
@@ -24,7 +24,7 @@ topics:
|
||||
|
||||
This guide shows you how to create a workflow that performs continuous integration (CI) for your Xamarin project. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy.
|
||||
|
||||
{% data variables.product.prodname_actions %}-hosted macOS runner stores Xamarin SDK versions and the associated Mono versions as a set of symlinks to Xamarin SDK locations that are available by a single bundle symlink. For a full list of available Xamarin SDK versions and their corresponding bundles, see the runners documentation:
|
||||
For a full list of available Xamarin SDK versions on the {% data variables.product.prodname_actions %}-hosted macOS runners, see the documentation:
|
||||
|
||||
* [macOS 10.15](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md#xamarin-bundles)
|
||||
* [macOS 11](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11-Readme.md#xamarin-bundles)
|
||||
@@ -41,7 +41,7 @@ We recommend that you have a basic understanding of Xamarin, .NET Core SDK, YAML
|
||||
|
||||
### Bulding Xamarin.iOS apps
|
||||
|
||||
The example below demonstrates how to change the default Xamarin bundle and build a Xamarin.iOS application.
|
||||
The example below demonstrates how to change the default Xamarin SDK versions and build a Xamarin.iOS application.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
@@ -55,34 +55,33 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Select default Xamarin bundle to 6_12_6
|
||||
run: |
|
||||
XAMARIN_SDK=6_12_6
|
||||
$VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set default Xamarin SDK versions
|
||||
run: |
|
||||
$VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.12 --ios=14.10
|
||||
|
||||
- name: Set default Xcode 12.3
|
||||
run: |
|
||||
XCODE_ROOT=/Applications/Xcode_12.3.0.app
|
||||
echo "MD_APPLE_SDK_ROOT=$XCODE_ROOT" >> $GITHUB_ENV
|
||||
sudo xcode-select -s $XCODE_ROOT
|
||||
|
||||
- name: Set default Xcode 12.3
|
||||
run: |
|
||||
XCODE_ROOT=/Applications/Xcode_12.3.0.app
|
||||
echo "MD_APPLE_SDK_ROOT=$XCODE_ROOT" >> $GITHUB_ENV
|
||||
sudo xcode-select -s $XCODE_ROOT
|
||||
- name: Setup .NET Core SDK 5.0.x
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: '5.0.x'
|
||||
|
||||
- name: Setup .NET Core SDK 5.0.x
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: '5.0.x'
|
||||
- name: Install dependencies
|
||||
run: nuget restore <sln_file_path>
|
||||
|
||||
- name: Install dependencies
|
||||
run: nuget restore <sln_file_path>
|
||||
|
||||
- name: Build
|
||||
run: msbuild <csproj_file_path> /p:Configuration=Debug /p:Platform=iPhoneSimulator /t:Rebuild
|
||||
- name: Build
|
||||
run: msbuild <csproj_file_path> /p:Configuration=Debug /p:Platform=iPhoneSimulator /t:Rebuild
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
### Bulding Xamarin.Android apps
|
||||
|
||||
The example below demonstrates how to change default the Xamarin bundle and build a Xamarin.Android application.
|
||||
The example below demonstrates how to change default Xamarin SDK versions and build a Xamarin.Android application.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
@@ -96,22 +95,21 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Select default Xamarin bundle to 6_12_6
|
||||
run: |
|
||||
XAMARIN_SDK=6_12_6
|
||||
$VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set default Xamarin SDK versions
|
||||
run: |
|
||||
$VM_ASSETS/select-xamarin-sdk-v2.sh --mono=6.10 --android=10.2
|
||||
|
||||
- name: Setup .NET Core SDK 5.0.x
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: '5.0.x'
|
||||
- name: Setup .NET Core SDK 5.0.x
|
||||
uses: actions/setup-dotnet@v1
|
||||
with:
|
||||
dotnet-version: '5.0.x'
|
||||
|
||||
- name: Install dependencies
|
||||
run: nuget restore <sln_file_path>
|
||||
- name: Install dependencies
|
||||
run: nuget restore <sln_file_path>
|
||||
|
||||
- name: Build
|
||||
run: msbuild <csproj_file_path> /t:PackageForAndroid /p:Configuration=Debug
|
||||
- name: Build
|
||||
run: msbuild <csproj_file_path> /t:PackageForAndroid /p:Configuration=Debug
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ topics:
|
||||
|
||||
Subdomain isolation mitigates cross-site scripting and other related vulnerabilities. For more information, see "[Cross-site scripting](http://en.wikipedia.org/wiki/Cross-site_scripting)" on Wikipedia. We highly recommend that you enable subdomain isolation on {% data variables.product.product_location %}.
|
||||
|
||||
When subdomain isolation is enabled, {% data variables.product.prodname_ghe_server %} replaces several paths with subdomains.
|
||||
When subdomain isolation is enabled, {% data variables.product.prodname_ghe_server %} replaces several paths with subdomains. After enabling subdomain isolation, attempts to access the previous paths for some user-supplied content, such as `http(s)://HOSTNAME/raw/`, may return `404` errors.
|
||||
|
||||
{% if currentVersion == "enterprise-server@2.22" %}
|
||||
To use Docker with {% data variables.product.prodname_registry %}, you must also enable subdomain isolation. For more information, see "[Working with the Docker registry](/enterprise/{{ currentVersion }}/user/packages/working-with-a-github-packages-registry/working-with-the-docker-registry)."
|
||||
|
||||
@@ -9,8 +9,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.1'
|
||||
github-ae: 'next'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security policies
|
||||
- Vulnerabilities
|
||||
- Repositories
|
||||
- Health
|
||||
---
|
||||
|
||||
### About security policies
|
||||
|
||||
@@ -5,8 +5,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
- Advanced Security
|
||||
---
|
||||
|
||||
### About {% data variables.product.prodname_dotcom %}'s security features
|
||||
|
||||
@@ -7,7 +7,9 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
children:
|
||||
- /github-security-features
|
||||
- /securing-your-repository
|
||||
|
||||
@@ -6,8 +6,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Organizations
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
- Advanced Security
|
||||
---
|
||||
|
||||
### Introduction
|
||||
|
||||
@@ -9,8 +9,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
- Advanced Security
|
||||
---
|
||||
|
||||
### Introduction
|
||||
|
||||
@@ -7,7 +7,9 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
children:
|
||||
- /getting-started
|
||||
- /secret-security
|
||||
|
||||
@@ -11,8 +11,10 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Repositories
|
||||
- Secret scanning
|
||||
- Advanced Security
|
||||
---
|
||||
|
||||
{% data reusables.secret-scanning.beta %}
|
||||
|
||||
@@ -10,7 +10,10 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Secret scanning
|
||||
- Advanced Security
|
||||
- Repositories
|
||||
---
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Secret scanning
|
||||
- Advanced Security
|
||||
- Repositories
|
||||
children:
|
||||
- /about-secret-scanning
|
||||
|
||||
@@ -8,7 +8,11 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Secret scanning
|
||||
- Advanced Security
|
||||
- Alerts
|
||||
- Repositories
|
||||
---
|
||||
|
||||
|
||||
@@ -10,8 +10,11 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -11,8 +11,15 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Actions
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- JavaScript
|
||||
- Python
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -13,8 +13,16 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Actions
|
||||
- Repositories
|
||||
- C/C++
|
||||
- C#
|
||||
- Java
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -10,7 +10,8 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
children:
|
||||
- /about-code-scanning
|
||||
- /triaging-code-scanning-alerts-in-pull-requests
|
||||
|
||||
@@ -13,8 +13,12 @@ redirect_from:
|
||||
- /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-alerts-from-code-scanning
|
||||
- /github/finding-security-vulnerabilities-and-errors-in-your-code/managing-code-scanning-alerts-for-your-repository
|
||||
- /code-security/secure-coding/managing-code-scanning-alerts-for-your-repository
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Alerts
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
@@ -48,7 +52,7 @@ You need write permission to view a summary of all the alerts for a repository o
|
||||
{% data reusables.repositories.sidebar-security %}
|
||||
{% data reusables.repositories.sidebar-code-scanning-alerts %}
|
||||
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
|
||||
1. Optionally, use the drop-down menus to filter alerts. For example, you can filter by the tool that was used to identify alerts.
|
||||
1. Optionally, use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search box or{% endif %} the drop-down menus to filter alerts. For example, you can filter by the tool that was used to identify alerts.
|
||||
{% endif %}
|
||||
1. Under "{% data variables.product.prodname_code_scanning_capc %}," click the alert you'd like to explore.
|
||||
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
|
||||
@@ -61,12 +65,49 @@ You need write permission to view a summary of all the alerts for a repository o
|
||||
1. Alerts from {% data variables.product.prodname_codeql %} analysis include a description of the problem. Click **Show more** for guidance on how to fix your code.
|
||||

|
||||
|
||||
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %}
|
||||
### Searching {% data variables.product.prodname_code_scanning %} alerts
|
||||
|
||||
You can search the list of alerts. This is useful if there is a large number of alerts in your repository, or if you don't know the exact name for an alert for example. {% data variables.product.product_name %} performs the free text search across:
|
||||
- The name of the alert
|
||||
- The alert description
|
||||
- The alert details (this also includes the information hidden from view by default in the **Show more** collapsible section)
|
||||
|
||||

|
||||
|
||||
| Supported search | Syntax example | Results |
|
||||
| ---- | ---- | ---- |
|
||||
| Single word search | `injection` | Returns all the alerts containing the word `injection` |
|
||||
| Multiple word search | `sql injection` | Returns all the alerts containing `sql` or `injection` |
|
||||
| Exact match search</br>(use double quotes) | `"sql injection"` | Returns all the alerts containing the exact phrase `sql injection` |
|
||||
| OR search | `sql OR injection` | Returns all the alerts containing `sql` or `injection` |
|
||||
| AND search | `sql AND injection` | Returns all the alerts containing both words `sql` and `injection` |
|
||||
|
||||
{% tip %}
|
||||
|
||||
**Tips:**
|
||||
- The multiple word search is equivalent to an OR search.
|
||||
- The AND search will return results where the search terms are found _anywhere_, in any order in the alert name, description, or details.
|
||||
|
||||
{% endtip %}
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-security %}
|
||||
{% data reusables.repositories.sidebar-code-scanning-alerts %}
|
||||
1. To the right of the **Filters** drop-down menus, type the keywords to search for in the free text search box.
|
||||

|
||||
2. Press <kbd>return</kbd>. The alert listing will contain the open {% data variables.product.prodname_code_scanning %} alerts matching your search criteria.
|
||||
|
||||
{% endif %}
|
||||
|
||||
### Fixing an alert
|
||||
|
||||
Anyone with write permission for a repository can fix an alert by committing a correction to the code. If the repository has {% data variables.product.prodname_code_scanning %} scheduled to run on pull requests, it's best to raise a pull request with your correction. This will trigger {% data variables.product.prodname_code_scanning %} analysis of the changes and test that your fix doesn't introduce any new problems. For more information, see "[Configuring {% data variables.product.prodname_code_scanning %}](/code-security/secure-coding/configuring-code-scanning)" and "[Triaging {% data variables.product.prodname_code_scanning %} alerts in pull requests](/code-security/secure-coding/triaging-code-scanning-alerts-in-pull-requests)."
|
||||
|
||||
If you have write permission for a repository, you can view fixed alerts by viewing the summary of alerts and clicking **Closed**. For more information, see "[Viewing the alerts for a repository](#viewing-the-alerts-for-a-repository)." The "Closed" list shows fixed alerts and alerts that users have dismissed.
|
||||
|
||||
You can use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search or{% endif %} the filters to display a subset of alerts and then in turn mark all matching alerts as closed.
|
||||
|
||||
Alerts may be fixed in one branch but not in another. You can use the "Branch" drop-down menu, on the summary of alerts, to check whether an alert is fixed in a particular branch.
|
||||
|
||||
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
|
||||
@@ -105,7 +146,7 @@ To dismiss or delete alerts:
|
||||
|
||||

|
||||
|
||||
Optionally, you can use the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts.
|
||||
Optionally, you can use{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.2" %} the free text search or{% endif %} the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from {% data variables.product.prodname_codeql %} analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts.
|
||||
|
||||
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1"%}
|
||||

|
||||
|
||||
@@ -10,8 +10,15 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Actions
|
||||
- Repositories
|
||||
- Containers
|
||||
- Java
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -14,8 +14,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Actions
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -11,8 +11,13 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Pull requests
|
||||
- Alerts
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -11,8 +11,18 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Actions
|
||||
- Troubleshooting
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- C/C++
|
||||
- C#
|
||||
- Java
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
children:
|
||||
- /automatically-scanning-your-code-for-vulnerabilities-and-errors
|
||||
- /integrating-with-code-scanning
|
||||
|
||||
@@ -10,8 +10,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Webhooks
|
||||
- Integration
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Integration
|
||||
children:
|
||||
- /about-integration-with-code-scanning
|
||||
- /uploading-a-sarif-file-to-github
|
||||
|
||||
@@ -12,8 +12,12 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: reference
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Integration
|
||||
- SARIF
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -12,8 +12,15 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Integration
|
||||
- Actions
|
||||
- Repositories
|
||||
- CI
|
||||
- SARIF
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -8,7 +8,14 @@ versions:
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- Integration
|
||||
- CI
|
||||
- SARIF
|
||||
redirect_from:
|
||||
- /code-security/secure-coding/about-codeql-code-scanning-in-your-ci-system
|
||||
---
|
||||
|
||||
@@ -13,8 +13,18 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Integration
|
||||
- CI
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- C/C++
|
||||
- C#
|
||||
- Java
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -9,8 +9,13 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- Integration
|
||||
- CI
|
||||
- CodeQL
|
||||
children:
|
||||
- /about-codeql-code-scanning-in-your-ci-system
|
||||
- /running-codeql-cli-in-your-ci-system
|
||||
|
||||
@@ -7,9 +7,17 @@ miniTocMaxHeadingLevel: 4
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.1'
|
||||
github-ae: next
|
||||
github-ae: 'next'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- Integration
|
||||
- CI
|
||||
- SARIF
|
||||
redirect_from:
|
||||
- /code-security/secure-coding/running-codeql-cli-in-your-ci-system
|
||||
---
|
||||
|
||||
@@ -12,8 +12,16 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- Integration
|
||||
- CI
|
||||
- SARIF
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
<!--UI-LINK: When GitHub Enterprise Server doesn't have GitHub Actions set up, the Security > Code scanning alerts view links to this article.-->
|
||||
@@ -158,7 +166,7 @@ This example is similar to the previous example, however this time the repositor
|
||||
$ . /srv/checkout/example-repo-2/codeql-runner/codeql-env.sh
|
||||
```
|
||||
|
||||
1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting {% data variables.product.prodname_codeql_runner %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system#no-code-found-during-the-build)#no-code-found-during-the-build)."
|
||||
1. Build the code. On macOS, you need to prefix the build command with the environment variable `$CODEQL_RUNNER`. For more information, see "[Troubleshooting {% data variables.product.prodname_codeql_runner %} in your CI system](/code-security/secure-coding/troubleshooting-codeql-runner-in-your-ci-system#no-code-found-during-the-build)."
|
||||
|
||||
{% data reusables.code-scanning.codeql-runner-analyze-example %}
|
||||
|
||||
|
||||
@@ -12,8 +12,14 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Advanced Security
|
||||
- Code scanning
|
||||
- CodeQL
|
||||
- Troubleshooting
|
||||
- Integration
|
||||
- CI
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ intro: 'Vulnerability disclosure is a coordinated effort between security report
|
||||
miniTocMaxHeadingLevel: 4
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
---
|
||||
|
||||
### About disclosing vulnerabilities in the industry
|
||||
|
||||
@@ -7,8 +7,11 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/about-github-security-advisories
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- CVEs
|
||||
---
|
||||
|
||||
{% data reusables.repositories.security-advisory-admin-permissions %}
|
||||
|
||||
@@ -7,8 +7,11 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/adding-a-collaborator-to-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- Collaboration
|
||||
---
|
||||
|
||||
People with admin permissions to a security advisory can add collaborators to the security advisory.
|
||||
|
||||
@@ -6,8 +6,12 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/collaborating-in-a-temporary-private-fork-to-resolve-a-security-vulnerability
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- Collaboration
|
||||
- Forks
|
||||
---
|
||||
|
||||
### Prerequisites
|
||||
|
||||
@@ -7,8 +7,10 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/creating-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
---
|
||||
|
||||
Anyone with admin permissions to a repository can create a security advisory.
|
||||
|
||||
@@ -5,8 +5,10 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/editing-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
---
|
||||
|
||||
People with admin permissions to a security advisory can edit the security advisory.
|
||||
|
||||
@@ -8,7 +8,10 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- Repositories
|
||||
- CVEs
|
||||
children:
|
||||
- /about-coordinated-disclosure-of-security-vulnerabilities
|
||||
- /about-github-security-advisories
|
||||
|
||||
@@ -7,8 +7,11 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/permission-levels-for-security-advisories
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: reference
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- Permissions
|
||||
---
|
||||
|
||||
### Permissions overview
|
||||
|
||||
@@ -7,8 +7,12 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/publishing-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- CVEs
|
||||
- Repositories
|
||||
---
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "Publishing a security advisory".-->
|
||||
|
||||
|
||||
@@ -5,8 +5,11 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/removing-a-collaborator-from-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
- Collaboration
|
||||
---
|
||||
|
||||
People with admin permissions to a security advisory can remove collaborators from the security advisory.
|
||||
|
||||
@@ -5,8 +5,10 @@ redirect_from:
|
||||
- /github/managing-security-vulnerabilities/withdrawing-a-security-advisory
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Vulnerabilities
|
||||
---
|
||||
|
||||
If you publish a security advisory in error, you can withdraw the security advisory by contacting {% data variables.contact.contact_support %}.
|
||||
|
||||
@@ -5,6 +5,13 @@ product: '{% data reusables.gated-features.security-center %}'
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
github-ae: 'next'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security overview
|
||||
- Advanced Security
|
||||
- Alerts
|
||||
- Organizations
|
||||
- Teams
|
||||
---
|
||||
|
||||
{% data reusables.security-center.beta %}
|
||||
|
||||
@@ -5,7 +5,10 @@ intro: 'View, sort, and filter the security alerts from across your organization
|
||||
product: '{% data reusables.gated-features.security-center %}'
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
github-ae: next
|
||||
github-ae: 'next'
|
||||
topics:
|
||||
- Security overview
|
||||
- Advanced Security
|
||||
children:
|
||||
- /exploring-security-alerts
|
||||
---
|
||||
|
||||
@@ -9,7 +9,9 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Dependencies
|
||||
- Repositories
|
||||
children:
|
||||
- /understanding-your-software-supply-chain
|
||||
- /keeping-your-dependencies-updated-automatically
|
||||
|
||||
@@ -9,8 +9,13 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/about-dependabot-version-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
---
|
||||
### About {% data variables.product.prodname_dependabot_version_updates %}
|
||||
|
||||
|
||||
@@ -8,8 +8,13 @@ redirect_from:
|
||||
miniTocMaxHeadingLevel: 4
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: reference
|
||||
topics:
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
---
|
||||
### About the *dependabot.yml* file
|
||||
|
||||
@@ -944,3 +949,17 @@ registries:
|
||||
token: ${{secrets.MY_GITHUB_PERSONAL_TOKEN}}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
#### `terraform-registry`
|
||||
|
||||
The `terraform-registry` type supports a token.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
registries:
|
||||
terraform-example:
|
||||
type: terraform-registry
|
||||
url: https://terraform.example.com
|
||||
token: ${{secrets.MY_TERRAFORM_API_TOKEN}}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
@@ -7,8 +7,15 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/customizing-dependency-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Security updates
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
- Vulnerabilities
|
||||
---
|
||||
### About customizing dependency updates
|
||||
|
||||
|
||||
@@ -7,8 +7,13 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/enabling-and-disabling-version-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
---
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "About version updates for dependencies".-->
|
||||
|
||||
|
||||
@@ -7,6 +7,10 @@ versions:
|
||||
free-pro-team: '*'
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
children:
|
||||
- /about-dependabot-version-updates
|
||||
- /upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
|
||||
@@ -7,8 +7,12 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/keeping-your-actions-up-to-date-with-dependabot
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Actions
|
||||
---
|
||||
### About {% data variables.product.prodname_dependabot_version_updates %} for actions
|
||||
|
||||
|
||||
@@ -6,8 +6,12 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/listing-dependencies-configured-for-version-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
---
|
||||
### Viewing dependencies monitored by {% data variables.product.prodname_dependabot %}
|
||||
|
||||
|
||||
@@ -6,6 +6,13 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/managing-encrypted-secrets-for-dependabot
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Secret store
|
||||
- Repositories
|
||||
- Dependencies
|
||||
---
|
||||
### About encrypted secrets for {% data variables.product.prodname_dependabot %}
|
||||
|
||||
|
||||
@@ -6,8 +6,14 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/managing-pull-requests-for-dependency-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Version updates
|
||||
- Security updates
|
||||
- Pull requests
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
---
|
||||
### About {% data variables.product.prodname_dependabot %} pull requests
|
||||
|
||||
|
||||
@@ -3,8 +3,12 @@ title: Upgrading from Dependabot.com to GitHub-native Dependabot
|
||||
intro: You can upgrade to GitHub-native Dependabot by merging a pull request that will allow your dependencies to continue being updated.
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
redirect_from:
|
||||
- /code-security/supply-chain-security/upgrading-from-dependabotcom-to-github-native-dependabot
|
||||
---
|
||||
|
||||
@@ -9,8 +9,13 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Alerts
|
||||
- Vulnerabilities
|
||||
- Repositories
|
||||
- Dependencies
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/managing-security-vulnerabilities-->
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "About alerts for vulnerable dependencies ".-->
|
||||
|
||||
@@ -8,8 +8,14 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/about-dependabot-security-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Security updates
|
||||
- Vulnerabilities
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
---
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "About Dependabot security updates".-->
|
||||
|
||||
|
||||
@@ -6,8 +6,13 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/about-managing-vulnerable-dependencies
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Vulnerabilities
|
||||
- Repositories
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
---
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "Managing vulnerabilities in your project’s dependencies ".-->
|
||||
|
||||
|
||||
@@ -7,8 +7,13 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/browsing-security-vulnerabilities-in-the-github-advisory-database
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Security advisories
|
||||
- Alerts
|
||||
- Dependabot
|
||||
- Vulnerabilities
|
||||
- CVEs
|
||||
---
|
||||
<!--Marketing-LINK: From /features/security/software-supply-chain page "Browsing security vulnerabilities in the GitHub Advisory Database".-->
|
||||
|
||||
|
||||
@@ -11,8 +11,14 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/configuring-dependabot-security-updates
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Security updates
|
||||
- Alerts
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
- Repositories
|
||||
---
|
||||
<!--Marketing-LINK: From home page "Learn more about Dependabot".-->
|
||||
|
||||
|
||||
@@ -8,8 +8,14 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Alerts
|
||||
- Notifications
|
||||
- Vulnerabilities
|
||||
- Dependencies
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/managing-security-vulnerabilities-->
|
||||
|
||||
|
||||
@@ -10,6 +10,14 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
topics:
|
||||
- Repositories
|
||||
- Dependabot
|
||||
- Version updates
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
- Vulnerabilities
|
||||
- Alerts
|
||||
children:
|
||||
- /about-managing-vulnerable-dependencies
|
||||
- /browsing-security-vulnerabilities-in-the-github-advisory-database
|
||||
|
||||
@@ -8,8 +8,16 @@ redirect_from:
|
||||
- /code-security/supply-chain-security/troubleshooting-dependabot-errors
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Security updates
|
||||
- Version updates
|
||||
- Repositories
|
||||
- Pull requests
|
||||
- Troubleshooting
|
||||
- Errors
|
||||
- Dependencies
|
||||
---
|
||||
### About {% data variables.product.prodname_dependabot %} errors
|
||||
|
||||
|
||||
@@ -8,8 +8,19 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Alerts
|
||||
- Troubleshooting
|
||||
- Errors
|
||||
- Security updates
|
||||
- Dependencies
|
||||
- Vulnerabilities
|
||||
- Dependency graph
|
||||
- Alerts
|
||||
- CVEs
|
||||
- Repositories
|
||||
---
|
||||
The results of dependency detection reported by {% data variables.product.product_name %} may be different from the results returned by other tools. There are good reasons for this and it's helpful to understand how {% data variables.product.prodname_dotcom %} determines dependencies for your project.
|
||||
|
||||
|
||||
@@ -10,8 +10,14 @@ shortTitle: Viewing and updating vulnerable dependencies
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: how_to
|
||||
topics:
|
||||
- Security
|
||||
- Dependabot
|
||||
- Security updates
|
||||
- Alerts
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
- Repositories
|
||||
---
|
||||
Your repository's {% data variables.product.prodname_dependabot %} alerts tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %}{% if currentVersion == "free-pro-team@latest" %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. You can sort the list of alerts using the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."
|
||||
|
||||
|
||||
@@ -3,7 +3,12 @@ title: About dependency review
|
||||
intro: 'Dependency review lets you catch vulnerable dependencies before you introduce them to your environment, and provides information on license, dependents, and age of dependencies.'
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Advanced Security
|
||||
- Dependency review
|
||||
- Vulnerabilities
|
||||
- Dependencies
|
||||
- Pull requests
|
||||
redirect_from:
|
||||
- /code-security/supply-chain-security/about-dependency-review
|
||||
|
||||
@@ -7,7 +7,10 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: overview
|
||||
topics:
|
||||
- Dependency graph
|
||||
- Dependencies
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/visualizing-repository-data-with-graphs-->
|
||||
|
||||
@@ -12,7 +12,10 @@ redirect_from:
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
type: how_to
|
||||
topics:
|
||||
- Dependency graph
|
||||
- Dependencies
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/visualizing-repository-data-with-graphs-->
|
||||
|
||||
@@ -3,6 +3,10 @@ title: Understanding your software supply chain
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
topics:
|
||||
- Dependency graph
|
||||
- Dependencies
|
||||
- Repositories
|
||||
children:
|
||||
- /about-the-dependency-graph
|
||||
- /exploring-the-dependencies-of-a-repository
|
||||
|
||||
@@ -58,7 +58,7 @@ Developers and organization administrators can also configure settings to add en
|
||||
|
||||
### Joining the beta
|
||||
|
||||
A limited number of people will be invited to join the beta. To join the waitlist, see [Sign up for Codespaces beta](https://github.com/features/codespaces/signup).
|
||||
A limited number of people will be invited to join the beta. To join the waitlist, see [Sign up for the Codespaces beta](https://github.com/features/codespaces/signup).
|
||||
|
||||
### Contacting us about {% data variables.product.prodname_codespaces %}
|
||||
|
||||
|
||||
@@ -51,8 +51,10 @@ When you create a new codespace, {% data variables.product.prodname_dotcom %} cl
|
||||
* _install_
|
||||
* _bootstrap.sh_
|
||||
* _bootstrap_
|
||||
* _script/bootstrap_
|
||||
* _setup.sh_
|
||||
* _setup_
|
||||
* _script/setup_
|
||||
|
||||
If none of these files are found, then any files or folders in `dotfiles` starting with `.` are symlinked to the codespace's `~` or `$HOME` directory.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Creating a default community health file
|
||||
intro: 'You can create default community health files, such as CONTRIBUTING and CODE_OF_CONDUCT. Default files will be used for any public repository owned by the account that does not contain its own file of that type.'
|
||||
intro: 'You can create default community health files, such as CONTRIBUTING and CODE_OF_CONDUCT. Default files will be used for any repository owned by the account that does not contain its own file of that type.'
|
||||
redirect_from:
|
||||
- /articles/creating-a-default-community-health-file-for-your-organization
|
||||
- /github/building-a-strong-community/creating-a-default-community-health-file-for-your-organization
|
||||
@@ -16,12 +16,12 @@ topics:
|
||||
|
||||
You can add default community health files to the root of a public repository called `.github` that is owned by an organization{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %} or user account{% endif %}.
|
||||
|
||||
{% data variables.product.product_name %} will use and display default files for any public repository owned by the account that does not have its own file of that type in any of the following places:
|
||||
{% data variables.product.product_name %} will use and display default files for any repository owned by the account that does not have its own file of that type in any of the following places:
|
||||
- the root of the repository
|
||||
- the `.github` folder
|
||||
- the `docs` folder
|
||||
|
||||
For example, anyone who creates an issue or pull request in a public repository that does not have its own CONTRIBUTING file will see a link to the default CONTRIBUTING file. If a repository has any files in its own `.github/ISSUE_TEMPLATE` folder{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}, including issue templates or a *config.yml* file,{% endif %} none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used.
|
||||
For example, anyone who creates an issue or pull request in a repository that does not have its own CONTRIBUTING file will see a link to the default CONTRIBUTING file. If a repository has any files in its own `.github/ISSUE_TEMPLATE` folder{% if currentVersion == "free-pro-team@latest" or currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.19" %}, including issue templates or a *config.yml* file,{% endif %} none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used.
|
||||
|
||||
Default files are not included in clones, packages, or downloads of individual repositories because they are stored only in the `.github` repository.
|
||||
|
||||
|
||||
@@ -12,7 +12,13 @@ versions:
|
||||
free-pro-team: '*'
|
||||
enterprise-server: '>=3.0'
|
||||
github-ae: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Dependabot
|
||||
- Alerts
|
||||
- Advanced Security
|
||||
- Dependency graph
|
||||
- Secret scanning
|
||||
- Repositories
|
||||
---
|
||||
{% if currentVersion == "free-pro-team@latest" %}
|
||||
|
||||
@@ -3,8 +3,13 @@ title: Reviewing dependency changes in a pull request
|
||||
intro: 'If a pull request contains changes to dependencies, you can view a summary of what has changed and whether there are known vulnerabilities in any of the dependencies.'
|
||||
versions:
|
||||
free-pro-team: '*'
|
||||
type: how_to
|
||||
topics:
|
||||
- Pull requests
|
||||
- Dependency review
|
||||
- Advanced Security
|
||||
- Vulnerabilities
|
||||
- Dependencies
|
||||
redirect_from:
|
||||
- /github/collaborating-with-issues-and-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request
|
||||
- /github/collaborating-with-issues-and-pull-requests/reviewing-dependency-changes-in-a-pull-request
|
||||
|
||||
@@ -26,7 +26,7 @@ For more information about adding people to your enterprise, see "{% if currentV
|
||||
|
||||
Enterprise owners have complete control over the enterprise and can take every action, including:
|
||||
- Managing administrators
|
||||
- {% if currentVersion == "free-pro-team@latest" %}Adding and removing {% elsif currentVersion == "github-ae@latest" %}Managing{% endif %} organizations {% if currentVersion == "free-pro-team@latest" %}to and from {% elsif currentVersion == "github-ae@latest" %} in{% endif %} the enterprise
|
||||
- {% if currentVersion == "free-pro-team@latest" %}Adding and removing {% elsif currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %}Managing{% endif %} organizations {% if currentVersion == "free-pro-team@latest" %}to and from {% elsif currentVersion == "github-ae@latest" or currentVersion ver_gt "enterprise-server@2.20" %} in{% endif %} the enterprise
|
||||
- Managing enterprise settings
|
||||
- Enforcing policy across organizations
|
||||
{% if currentVersion == "free-pro-team@latest" %}- Managing billing settings{% endif %}
|
||||
|
||||
@@ -127,6 +127,8 @@ When you participate in certain programs, {% data variables.product.prodname_dot
|
||||
|  | **{% data variables.product.prodname_dotcom %} Sponsor** | If you sponsored an open source contributor through {% data variables.product.prodname_sponsors %} you'll get a {% data variables.product.prodname_dotcom %} Sponsor badge on your profile. Clicking the badge takes you to the **Sponsoring** tab of your profile. For more information, see "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)." |
|
||||
| {% octicon "cpu" aria-label="The Developer Program icon" %} | **Developer Program Member** | If you're a registered member of the {% data variables.product.prodname_dotcom %} Developer Program, building an app with the {% data variables.product.prodname_dotcom %} API, you'll get a Developer Program Member badge on your profile. For more information on the {% data variables.product.prodname_dotcom %} Developer Program, see [GitHub Developer](/program/). |
|
||||
| {% octicon "star-fill" aria-label="The star icon" %} | **Pro** | If you use {% data variables.product.prodname_pro %} you'll get a PRO badge on your profile. For more information about {% data variables.product.prodname_pro %}, see "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products#github-pro)." |
|
||||
| {% octicon "lock" aria-label="The lock icon" %} | **Security Bug Bounty Hunter** | If you helped out hunting down security vulnerabilities, you'll get a Security Bug Bounty Hunter badge on your profile. For more information about the {% data variables.product.prodname_dotcom %} Security program, see [{% data variables.product.prodname_dotcom %} Security](https://bounty.github.com/). |
|
||||
| {% octicon "mortar-board" aria-label="The mortar-board icon" %} | **Github Campus Expert** | If you participate in the {% data variables.product.prodname_dotcom %} Campus Program you'll get a {% data variables.product.prodname_dotcom %} Campus Expert badge on your profile. For more information about the Campus Experts program, see [Campus Experts](https://education.github.com/experts). |
|
||||
|
||||
### Disabling badges on your profile
|
||||
|
||||
@@ -141,7 +143,7 @@ You can disable some of the badges for {% data variables.product.prodname_dotcom
|
||||
|
||||
### List of qualifying repositories for Mars 2020 Helicopter Contributor badge
|
||||
|
||||
If you authored any commit(s) present in the commit history for the listed tag of one or more of the repositories below, you'll receive the Mars 2020 Helicopter Contributor badge on your profile. The authored commit must be with a verified email address, associated with your account at the time {% data variables.product.prodname_dotcom %} determined the eligible contributions, in order to be attributed to you. Future changes to verified emails will not have an effect on the badge. We built the list based on information received from NASA's Jet Propulsion Laboratory.
|
||||
If you authored any commit(s) present in the commit history for the listed tag of one or more of the repositories below, you'll receive the Mars 2020 Helicopter Contributor badge on your profile. The authored commit must be with a verified email address, associated with your account at the time {% data variables.product.prodname_dotcom %} determined the eligible contributions, in order to be attributed to you. You can be the original author or [one of the co-authors](/github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors) of the commit. Future changes to verified emails will not have an effect on the badge. We built the list based on information received from NASA's Jet Propulsion Laboratory.
|
||||
|
||||
| {% data variables.product.prodname_dotcom %} Repository | Version | Tag |
|
||||
|---|---|---|
|
||||
@@ -212,7 +214,7 @@ If you authored any commit(s) present in the commit history for the listed tag o
|
||||
| [HdrHistogram/HdrHistogram](https://github.com/HdrHistogram/HdrHistogram) | 2.1.9 | [HdrHistogram-2.1.9](https://github.com/HdrHistogram/HdrHistogram/releases/tag/HdrHistogram-2.1.9) |
|
||||
| [locationtech/spatial4j](https://github.com/locationtech/spatial4j) | 0.7 | [spatial4j-0.7](https://github.com/locationtech/spatial4j/releases/tag/spatial4j-0.7) |
|
||||
| [locationtech/jts](https://github.com/locationtech/jts) | 1.15.0 | [jts-1.15.0](https://github.com/locationtech/jts/releases/tag/jts-1.15.0) |
|
||||
| [apache/log4j](https://github.com/apache/log4j) | 2.11 | [v1_2_11](https://github.com/apache/log4j/releases/tag/v1_2_11) |
|
||||
| [apache/logging-log4j2](https://github.com/apache/logging-log4j2) | 2.11 | [log4j-2.11.0](https://github.com/apache/logging-log4j2/releases/tag/log4j-2.11.0) |
|
||||
|
||||
### Further reading
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user