Merge branch 'ivyharriet-jules-p-dev-docset' of github.com:github/docs-internal into ivyharriet-jules-p-dev-docset
5
.github/workflows/openapi-decorate.yml
vendored
@@ -32,6 +32,11 @@ jobs:
|
||||
|
||||
- name: Checkout repository code
|
||||
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
|
||||
with:
|
||||
# actions/checkout by default will leave you in a detached head state
|
||||
# so we need to specify the PR head ref explicitly since we're making
|
||||
# changes that we want to commit to the branch.
|
||||
ref: ${{ github.event.pull_request.head.ref }}
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
url: ${{ steps.deploy.outputs.defaultHostName }}
|
||||
env:
|
||||
GITHUB_EVENT_NUMBER: ${{ github.event.number }}
|
||||
RESOURCE_GROUP: docs-nonprod
|
||||
STAGING_RESOURCE_GROUPS: 4
|
||||
NONPROD_REGISTRY_USERNAME: ghdocs
|
||||
# Image tag is unique to each workflow run so that it always triggers a new deployment
|
||||
DOCKER_IMAGE: ${{ secrets.NONPROD_REGISTRY_SERVER }}/${{ github.repository }}/pr-${{ github.event.number }}:${{ github.event.pull_request.head.sha }}-${{ github.run_number }}-${{ github.run_attempt }}
|
||||
@@ -50,6 +50,7 @@ jobs:
|
||||
REPO_NAME=${GITHUB_REPOSITORY#*\/}
|
||||
echo "REPO_NAME=${REPO_NAME}" >> $GITHUB_ENV
|
||||
echo "DEPLOYMENT_NAME=${REPO_NAME}-pr-${GITHUB_EVENT_NUMBER}" >> $GITHUB_ENV
|
||||
echo "RESOURCE_GROUP=preview-env-${REPO_NAME}-$((${GITHUB_EVENT_NUMBER} % ${STAGING_RESOURCE_GROUPS}))" >> $GITHUB_ENV
|
||||
echo "APP_NAME=gh${REPO_NAME}-staging-${GITHUB_EVENT_NUMBER}" >> $GITHUB_ENV
|
||||
|
||||
- name: 'Az CLI login'
|
||||
|
||||
2
.github/workflows/staging-deploy-pr.yml
vendored
@@ -71,7 +71,7 @@ jobs:
|
||||
// the API for more info based on the originating workflow run
|
||||
const { BUILD_ACTIONS_RUN_ID } = process.env
|
||||
const { owner, repo } = context.repo
|
||||
const { data: run } = await github.rest.actions.getWorkflowRun({
|
||||
const { data: run } = await github.actions.getWorkflowRun({
|
||||
owner,
|
||||
repo,
|
||||
run_id: BUILD_ACTIONS_RUN_ID,
|
||||
|
||||
3
.github/workflows/staging-undeploy-azure.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
timeout-minutes: 5
|
||||
env:
|
||||
GITHUB_EVENT_NUMBER: ${{ github.event.number }}
|
||||
RESOURCE_GROUP: docs-nonprod
|
||||
STAGING_RESOURCE_GROUPS: 4
|
||||
NONPROD_REGISTRY_NAME: ghdocs
|
||||
IMAGE_REPO: ${{ github.repository }}/pr-${{ github.event.number }}
|
||||
|
||||
@@ -26,6 +26,7 @@ jobs:
|
||||
id: vars
|
||||
run: |
|
||||
REPO_NAME=${GITHUB_REPOSITORY#*\/}
|
||||
echo "RESOURCE_GROUP=preview-env-${REPO_NAME}-$((${GITHUB_EVENT_NUMBER} % ${STAGING_RESOURCE_GROUPS}))" >> $GITHUB_ENV
|
||||
echo "DEPLOYMENT_NAME=${REPO_NAME}-pr-${GITHUB_EVENT_NUMBER}" >> $GITHUB_ENV
|
||||
echo "APP_NAME=gh${REPO_NAME}-staging-${GITHUB_EVENT_NUMBER}" >> $GITHUB_ENV
|
||||
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
name: Start new engineering PR workflow
|
||||
|
||||
# **What it does**:
|
||||
# **Why we have it**:
|
||||
# **Who does it impact**:
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
|
||||
permissions:
|
||||
contents: none
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
if: github.repository == 'github/docs-internal' || github.repository == 'github/docs'
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
env:
|
||||
DRAFT_COLUMN_ID: 10095775
|
||||
REGULAR_COLUMN_ID: 10095779
|
||||
steps:
|
||||
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
|
||||
continue-on-error: true
|
||||
with:
|
||||
github-token: ${{ secrets.DOCUBOT_READORG_REPO_WORKFLOW_SCOPES }}
|
||||
script: |
|
||||
// Only assign the engineering folks
|
||||
try {
|
||||
await github.teams.getMembershipForUserInOrg({
|
||||
org: 'github',
|
||||
team_slug: 'docs-engineering',
|
||||
username: context.payload.sender.login,
|
||||
});
|
||||
} catch(err) {
|
||||
return
|
||||
}
|
||||
|
||||
// Set column ID
|
||||
const column_id = context.payload.pull_request.draft
|
||||
? process.env.DRAFT_COLUMN_ID
|
||||
: process.env.REGULAR_COLUMN_ID
|
||||
|
||||
// Try to create the card on the GitHub Project
|
||||
try {
|
||||
await github.projects.createCard({
|
||||
column_id: column_id,
|
||||
content_type: 'PullRequest',
|
||||
content_id: context.payload.pull_request.id
|
||||
});
|
||||
} catch(error) {
|
||||
console.log(error);
|
||||
}
|
||||
|
||||
|
||||
// Try to set the author as the assignee
|
||||
const owner = context.payload.repository.owner.login
|
||||
const repo = context.payload.repository.name
|
||||
|
||||
try {
|
||||
await github.issues.addAssignees({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
assignees: [
|
||||
context.payload.sender.login
|
||||
]
|
||||
});
|
||||
} catch(error) {
|
||||
console.log(error);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 9.4 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 10 KiB |
@@ -67,6 +67,7 @@ export const GuidesHero = () => {
|
||||
<div className="f5 my-4">{featuredTrack.description}</div>
|
||||
{featuredTrack.guides && (
|
||||
<Link
|
||||
{...{ 'aria-label': `${featuredTrack.title} - ${t('start_path')}` }}
|
||||
className="d-inline-flex flex-items-center flex-justify-center btn px-4 py-2 f5 no-underline text-bold"
|
||||
role="button"
|
||||
href={`${featuredTrack.guides[0].href}?learn=${featuredTrack.trackName}&learnProduct=${featuredTrack.trackProduct}`}
|
||||
|
||||
@@ -38,6 +38,7 @@ export const LearningTrack = ({ track }: Props) => {
|
||||
</div>
|
||||
</div>
|
||||
<a
|
||||
{...{ 'aria-label': `${track?.title} - ${t('start_path')}` }}
|
||||
className="d-inline-flex btn no-wrap mt-3 mt-md-0 flex-items-center flex-justify-center"
|
||||
href={`${track?.guides && track?.guides[0].href}?learn=${
|
||||
track?.trackName
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import cx from 'classnames'
|
||||
import dayjs from 'dayjs'
|
||||
import { ActionList } from '@primer/components'
|
||||
|
||||
import { useTranslation } from 'components/hooks/useTranslation'
|
||||
import { Link } from 'components/Link'
|
||||
import { ArrowRightIcon } from '@primer/octicons-react'
|
||||
import { FeaturedLink } from 'components/context/ProductLandingContext'
|
||||
import { useMainContext } from 'components/context/MainContext'
|
||||
import { TruncateLines } from 'components/ui/TruncateLines'
|
||||
import { BumpLink } from 'components/ui/BumpLink'
|
||||
|
||||
@@ -21,6 +22,8 @@ export const ArticleList = ({
|
||||
viewAllTitleText,
|
||||
articles,
|
||||
}: ArticleListPropsT) => {
|
||||
const { t } = useTranslation('product_landing')
|
||||
const { page } = useMainContext()
|
||||
return (
|
||||
<>
|
||||
{title && (
|
||||
@@ -30,9 +33,9 @@ export const ArticleList = ({
|
||||
<Link
|
||||
href={viewAllHref}
|
||||
className="ml-4"
|
||||
{...(viewAllTitleText ? { title: viewAllTitleText } : {})}
|
||||
{...(viewAllTitleText ? { 'aria-label': `${page.title} - ${viewAllTitleText}` } : {})}
|
||||
>
|
||||
View all <ArrowRightIcon size={14} className="v-align-middle" />
|
||||
{t('view')} <ArrowRightIcon size={14} className="v-align-middle" />
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@ export const FeaturedArticles = () => {
|
||||
<ArticleList
|
||||
title={t('whats_new')}
|
||||
viewAllHref={changelogUrl}
|
||||
viewAllTitleText="All ChangeLog posts"
|
||||
viewAllTitleText={t('all_changelogs')}
|
||||
articles={(whatsNewChangelog || []).map((link) => {
|
||||
return {
|
||||
title: link.title,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { LinkIcon } from '@primer/octicons-react'
|
||||
import cx from 'classnames'
|
||||
import { useMainContext } from 'components/context/MainContext'
|
||||
|
||||
type Props = {
|
||||
title?: React.ReactNode
|
||||
@@ -9,12 +10,17 @@ type Props = {
|
||||
description?: string
|
||||
}
|
||||
export const LandingSection = ({ title, children, className, sectionLink, description }: Props) => {
|
||||
const { page } = useMainContext()
|
||||
return (
|
||||
<div className={cx('container-xl px-3 px-md-6 mt-6', className)} id={sectionLink}>
|
||||
{title && (
|
||||
<h2 className={cx('h1 color-fg-default', !description ? 'mb-3' : 'mb-4')}>
|
||||
{sectionLink ? (
|
||||
<a className="color-unset" href={`#${sectionLink}`}>
|
||||
<a
|
||||
className="color-unset"
|
||||
href={`#${sectionLink}`}
|
||||
{...{ 'aria-label': `${page.title} - ${title} section` }}
|
||||
>
|
||||
<LinkIcon size={24} className="m-1" />
|
||||
{title}
|
||||
</a>
|
||||
|
||||
@@ -35,7 +35,7 @@ const ProductTreeNodeList = ({ treeNode }: { treeNode: ProductTreeNode }) => {
|
||||
return (
|
||||
<div className="col-12 col-lg-4 mb-6 height-full">
|
||||
<h3 className="mb-3 f4">
|
||||
<Link className="color-unset" href={treeNode.href}>
|
||||
<Link className="color-unset text-underline" href={treeNode.href}>
|
||||
{treeNode.renderedFullTitle}
|
||||
</Link>
|
||||
</h3>
|
||||
|
||||
@@ -9,7 +9,7 @@ export function ProductReleases() {
|
||||
const { t } = useTranslation('product_landing')
|
||||
const router = useRouter()
|
||||
const { enterpriseServerReleases, allVersions } = useMainContext()
|
||||
const { releases } = useProductLandingContext()
|
||||
const { releases, shortTitle } = useProductLandingContext()
|
||||
const currentPath = router.asPath.split('?')[0]
|
||||
return (
|
||||
<div>
|
||||
@@ -55,7 +55,15 @@ export function ProductReleases() {
|
||||
</p>
|
||||
<p className="mt-2 mb-4 color-fg-muted">
|
||||
<FileIcon />{' '}
|
||||
<Link className="text-bold" href={`/${router.locale}/${releaseVersion}`}>
|
||||
<Link
|
||||
className="text-bold"
|
||||
{...{
|
||||
'aria-label': `${shortTitle} - ${t('browse_all')} ${releaseNumber} ${t(
|
||||
'docs'
|
||||
)}`,
|
||||
}}
|
||||
href={`/${router.locale}/${releaseVersion}`}
|
||||
>
|
||||
{t('browse_all_docs')}
|
||||
</Link>
|
||||
</p>
|
||||
|
||||
@@ -19,15 +19,8 @@ export function GHAEReleaseNotePatch({ patch, didEnterView }: Props) {
|
||||
const bannerText = t('banner_text')
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={containerRef}
|
||||
className="mb-10 color-bg-subtle pb-6 border-bottom border-top"
|
||||
id={patch.date}
|
||||
>
|
||||
<header
|
||||
style={{ zIndex: 1 }}
|
||||
className="container-xl color-bg-subtle border-bottom px-3 pt-4 pb-2"
|
||||
>
|
||||
<div ref={containerRef} className="mb-10 pb-6 border-bottom border-top" id={patch.date}>
|
||||
<header style={{ zIndex: 1 }} className="container-xl border-bottom px-3 pt-4 pb-2">
|
||||
<div className="d-flex flex-items-center">
|
||||
<h2 className="border-bottom-0 m-0 p-0">{patch.title}</h2>
|
||||
|
||||
|
||||
@@ -33,16 +33,9 @@ export function GHESReleaseNotePatch({
|
||||
}, [onScreen])
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={containerRef}
|
||||
className="mb-10 color-bg-subtle pb-6 border-bottom border-top"
|
||||
id={patch.version}
|
||||
>
|
||||
<header
|
||||
style={{ zIndex: 1 }}
|
||||
className="container-xl color-bg-subtle border-bottom px-3 pt-4 pb-2"
|
||||
>
|
||||
<div className="d-flex flex-items-center">
|
||||
<div ref={containerRef} className="mb-10 pb-6 border-bottom border-top" id={patch.version}>
|
||||
<header style={{ zIndex: 1 }} className="container-xl border-bottom px-3 pt-4 pb-2">
|
||||
<div className="d-flex flex-justify-between">
|
||||
<h2 className="border-bottom-0 m-0 p-0">
|
||||
{currentVersion.versionTitle}.{patch.patchVersion}
|
||||
</h2>
|
||||
@@ -59,9 +52,9 @@ export function GHESReleaseNotePatch({
|
||||
{currentVersion.plan === 'enterprise-server' && (
|
||||
<Link
|
||||
href={`https://enterprise.github.com/releases/${patch.downloadVersion}/download`}
|
||||
className="ml-3 text-small text-bold"
|
||||
className="btn btn-outline flex-items-end ml-3 text-small text-bold no-underline"
|
||||
>
|
||||
Download
|
||||
Download GitHub Enterprise Server {patch.downloadVersion}
|
||||
</Link>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,6 @@
|
||||
import { SyntheticEvent, useState } from 'react'
|
||||
import cx from 'classnames'
|
||||
import {
|
||||
ChevronDownIcon,
|
||||
ChevronLeftIcon,
|
||||
ChevronRightIcon,
|
||||
LinkExternalIcon,
|
||||
} from '@primer/octicons-react'
|
||||
import { ChevronDownIcon, LinkExternalIcon } from '@primer/octicons-react'
|
||||
import { useMainContext } from 'components/context/MainContext'
|
||||
import dayjs from 'dayjs'
|
||||
import { useRouter } from 'next/router'
|
||||
@@ -24,45 +19,14 @@ export function GHESReleaseNotes({ context }: Props) {
|
||||
const router = useRouter()
|
||||
const { currentProduct } = useMainContext()
|
||||
const [focusedPatch, setFocusedPatch] = useState('')
|
||||
const {
|
||||
prevRelease,
|
||||
nextRelease,
|
||||
latestPatch,
|
||||
latestRelease,
|
||||
currentVersion,
|
||||
releaseNotes,
|
||||
releases,
|
||||
message,
|
||||
} = context
|
||||
const { latestPatch, latestRelease, currentVersion, releaseNotes, releases, message } = context
|
||||
return (
|
||||
<div className="d-flex">
|
||||
<article className="min-width-0 flex-1">
|
||||
<div className="d-flex flex-items-center flex-justify-between color-bg-default text-bold px-5 py-2">
|
||||
{prevRelease ? (
|
||||
<Link
|
||||
className="btn btn-outline"
|
||||
href={`/${router.locale}/${currentVersion.plan}@${prevRelease}/${currentProduct?.id}/release-notes`}
|
||||
>
|
||||
<ChevronLeftIcon /> {prevRelease}
|
||||
</Link>
|
||||
) : (
|
||||
<div />
|
||||
)}
|
||||
|
||||
<div className="d-flex flex-items-center flex-justify-center color-bg-default text-bold px-5 py-2">
|
||||
<h1 className="f4 py-3 m-0">
|
||||
{currentVersion.planTitle} {currentVersion.currentRelease} release notes
|
||||
</h1>
|
||||
|
||||
{nextRelease ? (
|
||||
<Link
|
||||
className="btn btn-outline"
|
||||
href={`/${router.locale}/${currentVersion.plan}@${nextRelease}/${currentProduct?.id}/release-notes`}
|
||||
>
|
||||
{nextRelease} <ChevronRightIcon />
|
||||
</Link>
|
||||
) : (
|
||||
<div />
|
||||
)}
|
||||
</div>
|
||||
<MarkdownContent data-search="article-content">
|
||||
{releaseNotes.map((patch) => {
|
||||
|
||||
@@ -16,26 +16,6 @@ const SectionToLabelMap: Record<string, string> = {
|
||||
backups: 'Backups',
|
||||
}
|
||||
|
||||
const LabelColorMap = {
|
||||
features: 'color-bg-success-emphasis',
|
||||
bugs: 'color-bg-attention-emphasis',
|
||||
known_issues: 'color-bg-accent-emphasis',
|
||||
security_fixes: 'color-bg-sponsors-emphasis',
|
||||
changes: 'color-bg-success-emphasis',
|
||||
deprecations: 'color-bg-done-emphasis',
|
||||
backups: 'color-bg-severe-emphasis',
|
||||
}
|
||||
|
||||
const HeadingColorMap = {
|
||||
features: 'color-fg-success',
|
||||
bugs: 'color-fg-attention',
|
||||
known_issues: 'color-fg-accent',
|
||||
security_fixes: 'color-fg-sponsors',
|
||||
changes: 'color-fg-success',
|
||||
deprecations: 'color-fg-done',
|
||||
backups: 'color-fg-severe',
|
||||
}
|
||||
|
||||
type Props = {
|
||||
patch: ReleaseNotePatch
|
||||
withReleaseNoteLabel?: boolean
|
||||
@@ -45,32 +25,17 @@ export function PatchNotes({ patch, withReleaseNoteLabel }: Props) {
|
||||
<>
|
||||
{Object.entries(patch.sections).map(([key, sectionItems], i, arr) => {
|
||||
const isLast = i === arr.length - 1
|
||||
const primaryLabelColor =
|
||||
LabelColorMap[key as keyof typeof LabelColorMap] || LabelColorMap.features
|
||||
const primaryHeadingColor =
|
||||
HeadingColorMap[key as keyof typeof HeadingColorMap] || HeadingColorMap.features
|
||||
return (
|
||||
<div
|
||||
key={key}
|
||||
className={cx(
|
||||
'py-6 d-block d-xl-flex gutter-xl flex-items-baseline',
|
||||
'py-6 d-block d-xl-flex flex-justify-center',
|
||||
!withReleaseNoteLabel && 'mx-6',
|
||||
!isLast && 'border-bottom'
|
||||
)}
|
||||
>
|
||||
{withReleaseNoteLabel && (
|
||||
<div className="col-12 col-xl-3 mb-5">
|
||||
<span
|
||||
className={cx(
|
||||
'px-3 py-2 color-fg-on-emphasis text-small text-bold text-uppercase',
|
||||
primaryLabelColor
|
||||
)}
|
||||
>
|
||||
{SectionToLabelMap[key] || 'INVALID SECTION'}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
<ul className={cx(withReleaseNoteLabel && 'col-xl-9', 'col-12')}>
|
||||
<h3>{SectionToLabelMap[key] || 'INVALID SECTION'}</h3>
|
||||
{sectionItems.map((item) => {
|
||||
if (typeof item === 'string') {
|
||||
return <li key={item} className="f4" dangerouslySetInnerHTML={{ __html: item }} />
|
||||
@@ -79,17 +44,8 @@ export function PatchNotes({ patch, withReleaseNoteLabel }: Props) {
|
||||
const slug = item.heading ? slugger.slug(item.heading) : ''
|
||||
return (
|
||||
<Fragment key={slug}>
|
||||
<h4
|
||||
id={slug}
|
||||
className={cx(
|
||||
styles.sectionHeading,
|
||||
primaryHeadingColor,
|
||||
'text-uppercase text-bold f4'
|
||||
)}
|
||||
>
|
||||
<Link href={`#${slug}`} className="color-fg-inherit">
|
||||
{item.heading}
|
||||
</Link>
|
||||
<h4 id={slug} className={cx(styles.sectionHeading, 'text-bold f4')}>
|
||||
<Link href={`#${slug}`}>{item.heading}</Link>
|
||||
</h4>
|
||||
{item.notes.map((note) => {
|
||||
return (
|
||||
|
||||
@@ -19,6 +19,7 @@ export const SidebarNav = () => {
|
||||
role="banner"
|
||||
>
|
||||
<div
|
||||
tabIndex={-1}
|
||||
className="d-flex flex-items-center p-4 position-sticky top-0 color-bg-default"
|
||||
style={{ zIndex: 3 }}
|
||||
id="github-logo"
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { useState, useEffect } from 'react'
|
||||
import cx from 'classnames'
|
||||
import { ChevronUpIcon } from '@primer/octicons-react'
|
||||
import { useTranslation } from '../../hooks/useTranslation'
|
||||
|
||||
export type ScrollButtonPropsT = {
|
||||
className?: string
|
||||
@@ -10,7 +9,6 @@ export type ScrollButtonPropsT = {
|
||||
|
||||
export const ScrollButton = ({ className, ariaLabel }: ScrollButtonPropsT) => {
|
||||
const [show, setShow] = useState(false)
|
||||
const { t } = useTranslation(['scroll_button'])
|
||||
|
||||
useEffect(() => {
|
||||
// show scroll button only when view is scrolled down
|
||||
@@ -30,20 +28,21 @@ export const ScrollButton = ({ className, ariaLabel }: ScrollButtonPropsT) => {
|
||||
}, [])
|
||||
|
||||
const onClick = () => {
|
||||
window.scrollTo({ top: 0, behavior: 'smooth' })
|
||||
window.scrollTo(0, 0)
|
||||
const topOfPage = document.getElementById('github-logo')
|
||||
if (topOfPage) topOfPage.focus()
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={cx(className, 'transition-200', show ? 'opacity-100' : 'opacity-0')}>
|
||||
<button
|
||||
onClick={onClick}
|
||||
className="color-bg-default color-fg-default border-0 d-inline-block mr-2 f6"
|
||||
<div
|
||||
role="tooltip"
|
||||
className={cx(className, 'transition-200', show ? 'opacity-100' : 'opacity-0')}
|
||||
>
|
||||
{t('scroll_to_top')}
|
||||
</button>
|
||||
<button
|
||||
onClick={onClick}
|
||||
className={cx('color-bg-accent-emphasis color-fg-on-emphasis circle border-0')}
|
||||
className={cx(
|
||||
'tooltipped tooltipped-n tooltipped-no-delay color-bg-accent-emphasis color-fg-on-emphasis circle border-0'
|
||||
)}
|
||||
style={{ width: 40, height: 40 }}
|
||||
aria-label={ariaLabel}
|
||||
>
|
||||
|
||||
@@ -37,8 +37,8 @@ If you're a member of an {% data variables.product.prodname_emu_enterprise %}, y
|
||||
1. Ask for the username of the person you're inviting as a collaborator.{% ifversion fpt or ghec %} If they don't have a username yet, they can sign up for {% data variables.product.prodname_dotcom %} For more information, see "[Signing up for a new {% data variables.product.prodname_dotcom %} account](/articles/signing-up-for-a-new-github-account)".{% endif %}
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% ifversion fpt or ghec %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658%}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
1. Click **Invite a collaborator**.
|
||||

|
||||
2. In the search field, start typing the name of person you want to invite, then click a name in the list of matches.
|
||||
|
||||
@@ -29,8 +29,8 @@ While forks of private repositories are deleted when a collaborator is removed,
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% ifversion fpt or ghec %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
4. To the right of the collaborator you want to remove, click {% octicon "trash" aria-label="The trash icon" %}.
|
||||

|
||||
{% else %}
|
||||
|
||||
@@ -25,8 +25,7 @@ You can set scheduled reminders for personal or team-level review requests for p
|
||||
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
3. Next to the organization you'd like to schedule reminders for, click **Edit**.
|
||||
1. Next to the organization you'd like to schedule reminders for, click **Edit**.
|
||||

|
||||
{% data reusables.reminders.add-reminder %}
|
||||
{% data reusables.reminders.authorize-slack %}
|
||||
@@ -43,8 +42,7 @@ You can set scheduled reminders for personal or team-level review requests for p
|
||||
## Managing scheduled reminders for your user account
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
3. Next to the organization you'd like to edit scheduled reminders for, click **Edit**.
|
||||
1. Next to the organization you'd like to edit scheduled reminders for, click **Edit**.
|
||||

|
||||
{% data reusables.reminders.edit-page %}
|
||||
{% data reusables.reminders.update-buttons %}
|
||||
@@ -52,8 +50,7 @@ You can set scheduled reminders for personal or team-level review requests for p
|
||||
## Deleting scheduled reminders for your user account
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
3. Next to the organization you'd like to delete reminders for, click **Edit**.
|
||||
1. Next to the organization you'd like to delete reminders for, click **Edit**.
|
||||

|
||||
{% data reusables.reminders.delete %}
|
||||
|
||||
|
||||
@@ -84,7 +84,9 @@ Before you begin, you'll create a repository on {% ifversion ghae %}{% data vari
|
||||
- id: random-number-generator
|
||||
run: echo "::set-output name=random-id::$(echo $RANDOM)"
|
||||
shell: bash
|
||||
- run: ${{ github.action_path }}/goodbye.sh
|
||||
- run: echo "${{ github.action_path }}" >> $GITHUB_PATH
|
||||
shell: bash
|
||||
- run: goodbye.sh
|
||||
shell: bash
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
@@ -480,6 +480,12 @@ The background color of the badge. Can be one of: `white`, `yellow`, `blue`, `gr
|
||||
### `branding.icon`
|
||||
|
||||
The name of the [Feather](https://feathericons.com/) icon to use.
|
||||
<!--
|
||||
This table should match the icon list in `app/models/repository_actions/icons.rb` in the internal github repo.
|
||||
This table does not match the latest version the feather library.
|
||||
(Brand icons are omitted, and our supported list is not necessarily up-to-date with the latest version of the feather icon library.)
|
||||
To support a new icon, update `app/models/repository_actions/icons.rb` and add the svg to `/static/images/icons/feather` in the internal github repo.
|
||||
-->
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
||||
@@ -29,7 +29,7 @@ By updating your workflows to use OIDC tokens, you can adopt the following good
|
||||
|
||||
- **No cloud secrets**: You won't need to duplicate your cloud credentials as long-lived {% data variables.product.prodname_dotcom %} secrets. Instead, you can configure the OIDC trust on your cloud provider, and then update your workflows to request a short-lived access token from the cloud provider through OIDC.
|
||||
- **Authentication and authorization management**: You have more granular control over how workflows can use credentials, using your cloud provider's authentication (authN) and authorization (authZ) tools to control access to cloud resources.
|
||||
- **Rotating credentials**: With OIDC, your cloud provider issues a short-lived access token that is only valid for a single workflow run, and then automatically expires.
|
||||
- **Rotating credentials**: With OIDC, your cloud provider issues a short-lived access token that is only valid for a single job, and then automatically expires.
|
||||
|
||||
### Getting started with OIDC
|
||||
|
||||
@@ -38,7 +38,7 @@ The following diagram gives an overview of how {% data variables.product.prodnam
|
||||

|
||||
|
||||
1. In your cloud provider, create an OIDC trust between your cloud role and your {% data variables.product.prodname_dotcom %} workflow(s) that need access to the cloud.
|
||||
2. Every time your {% data variables.product.prodname_actions %} workflow job runs, {% data variables.product.prodname_dotcom %}'s OIDC Provider auto-generates an OIDC token. This token contains multiple claims to establish a security-hardened and verifiable identity about the specific workflow that is trying to authenticate.
|
||||
2. Every time your job runs, {% data variables.product.prodname_dotcom %}'s OIDC Provider auto-generates an OIDC token. This token contains multiple claims to establish a security-hardened and verifiable identity about the specific workflow that is trying to authenticate.
|
||||
3. You could include a step or action in your job to request this token from {% data variables.product.prodname_dotcom %}'s OIDC provider, and present it to the cloud provider.
|
||||
4. Once the cloud provider successfully validates the claims presented in the token, it then provides a short-lived cloud access token that is available only for the duration of the job.
|
||||
|
||||
@@ -51,7 +51,7 @@ When you configure your cloud to trust {% data variables.product.prodname_dotcom
|
||||
|
||||
### Understanding the OIDC token
|
||||
|
||||
Each workflow run requests an OIDC token from {% data variables.product.prodname_dotcom %}'s OIDC provider, which responds with an automatically generated JSON web token (JWT) that is unique for each workflow job where it is generated. During a workflow run, the OIDC token is presented to the cloud provider. To validate the token, the cloud provider checks if the OIDC token's subject and other claims are a match for the conditions that were preconfigured on the cloud role's OIDC trust definition.
|
||||
Each job requests an OIDC token from {% data variables.product.prodname_dotcom %}'s OIDC provider, which responds with an automatically generated JSON web token (JWT) that is unique for each workflow job where it is generated. When the job runs, the OIDC token is presented to the cloud provider. To validate the token, the cloud provider checks if the OIDC token's subject and other claims are a match for the conditions that were preconfigured on the cloud role's OIDC trust definition.
|
||||
|
||||
The following example OIDC token uses a subject (`sub`) that references a job environment named `prod` in the `octo-org/octo-repo` repository.
|
||||
|
||||
@@ -148,7 +148,7 @@ In addition, your cloud provider could allow you to assign a role to the access
|
||||
|
||||
### Examples
|
||||
|
||||
The following examples demonstrate how to use "Subject" as a condition. The [subject](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) uses information from the workflow run's [`job` context](/actions/learn-github-actions/contexts#job-context), and instructs your cloud provider that access token requests may only be granted for requests from workflows running in specific branches, environments. The following sections describe some common subjects you can use.
|
||||
The following examples demonstrate how to use "Subject" as a condition. The [subject](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) uses information from the [`job` context](/actions/learn-github-actions/contexts#job-context), and instructs your cloud provider that access token requests may only be granted for requests from workflows running in specific branches, environments. The following sections describe some common subjects you can use.
|
||||
|
||||
#### Filtering for a specific environment
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ jobs:
|
||||
- name: Git clone the repository
|
||||
uses: actions/checkout@v2
|
||||
- name: configure aws credentials
|
||||
uses: aws-actions/configure-aws-credentials@master
|
||||
uses: aws-actions/configure-aws-credentials@v1
|
||||
with:
|
||||
role-to-assume: arn:aws:iam::1234567890:role/example-role
|
||||
role-session-name: samplerolesession
|
||||
|
||||
@@ -49,6 +49,8 @@ You can search and browse actions directly in your repository's workflow editor.
|
||||
|
||||
You can add an action to your workflow by referencing the action in your workflow file.
|
||||
|
||||
You can view the actions referenced in your {% data variables.product.prodname_actions %} workflows as dependencies in the dependency graph of the repository containing your workflows. For more information, see “[About the dependency graph](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph).”
|
||||
|
||||
### Adding an action from {% data variables.product.prodname_marketplace %}
|
||||
|
||||
An action's listing page includes the action's version and the workflow syntax required to use the action. To keep your workflow stable even when updates are made to an action, you can reference the version of the action to use by specifying the Git or Docker tag number in your workflow file.
|
||||
|
||||
@@ -262,3 +262,8 @@ To understand how billing works for {% data variables.product.prodname_actions %
|
||||
## Contacting support
|
||||
|
||||
{% data reusables.github-actions.contacting-support %}
|
||||
|
||||
## Further reading
|
||||
|
||||
{% ifversion ghec or ghes or ghae %}
|
||||
- "[About {% data variables.product.prodname_actions %} for enterprises](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)"{% endif %}
|
||||
@@ -34,6 +34,8 @@ If you reuse a workflow from a different repository, any actions in the called w
|
||||
|
||||
When a reusable workflow is triggered by a caller workflow, the `github` context is always associated with the caller workflow. The called workflow is automatically granted access to `github.token` and `secrets.GITHUB_TOKEN`. For more information about the `github` context, see "[Context and expression syntax for GitHub Actions](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)."
|
||||
|
||||
You can view the reused workflows referenced in your {% data variables.product.prodname_actions %} workflows as dependencies in the dependency graph of the repository containing your workflows. For more information, see “[About the dependency graph](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph).”
|
||||
|
||||
### Reusable workflows and starter workflows
|
||||
|
||||
Starter workflows allow everyone in your organization who has permission to create workflows to do so more quickly and easily. When people create a new workflow, they can choose a starter workflow and some or all of the work of writing the workflow will be done for them. Within a starter workflow, you can also reference reusable workflows to make it easy for people to benefit from reusing centrally managed workflow code. If you use a tag or branch name when referencing the reusable workflow, you can ensure that everyone who reuses that workflow will always be using the same YAML code. However, if you reference a reusable workflow by a tag or branch, be sure that you can trust that version of the workflow. For more information, see "[Security hardening for {% data variables.product.prodname_actions %}](/actions/security-guides/security-hardening-for-github-actions#reusing-third-party-workflows)."
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: About GitHub Actions for enterprises
|
||||
shortTitle: About GitHub Actions
|
||||
intro: "{% data variables.product.prodname_actions %} can improve developer productivity by automating your enterprise's software development cycle."
|
||||
versions:
|
||||
ghec: '*'
|
||||
ghes: '*'
|
||||
ghae: '*'
|
||||
type: overview
|
||||
topics:
|
||||
- Actions
|
||||
- Enterprise
|
||||
---
|
||||
|
||||
With {% data variables.product.prodname_actions %}, you can improve developer productivity by automating every phase of your enterprise's software development workflow.
|
||||
|
||||
| Task | More information |
|
||||
| ---- | ---------------- |
|
||||
| Automatically test and build your application | "[About continuous integration](/actions/automating-builds-and-tests/about-continuous-integration)" |
|
||||
| Deploy your application | "[About continuous deployment](/actions/deployment/about-deployments/about-continuous-deployment)" |
|
||||
| Automatically and securely package code into artifacts and containers | "[About packaging with {% data variables.product.prodname_actions %}](/actions/publishing-packages/about-packaging-with-github-actions)" |
|
||||
| Automate your project management tasks | "[Using {% data variables.product.prodname_actions %} for project management](/actions/managing-issues-and-pull-requests/using-github-actions-for-project-management)" |
|
||||
|
||||
{% data variables.product.prodname_actions %} helps your team work faster at scale. When large repositories start using {% data variables.product.prodname_actions %}, teams merge significantly more pull requests per day, and the pull requests are merged significantly faster. For more information, see "[Writing and shipping code faster](https://octoverse.github.com/writing-code-faster/#scale-through-automation)" in the State of the Octoverse.
|
||||
|
||||
{% data variables.product.prodname_actions %} also provides greater control over deployments. For example, you can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets.{% ifversion ghec or ghae-issue-4856 %} If your workflows need to access resources from a cloud provider that supports OpenID Connect (OIDC), you can configure your workflows to authenticate directly to the cloud provider. This will allow you to stop storing credentials as long-lived secrets and provide other security benefits. For more information, see "[About security hardening with OpenID Connect](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)."{% endif %}
|
||||
|
||||
{% data variables.product.prodname_actions %} is developer friendly, because it's integrated directly into the familiar {% data variables.product.product_name %} experience.
|
||||
|
||||
You can create your own unique automations, or you can use and adapt workflows from our ecosystem of over 10,000 actions built by industry leaders and the open source community. For more information, see "[Finding and customizing actions](/actions/learn-github-actions/finding-and-customizing-actions)."
|
||||
|
||||
{% ifversion ghec %}You can enjoy the convenience of {% data variables.product.company_short %}-hosted runners, which are maintained and upgraded by {% data variables.product.company_short %}, or you{% else %}You{% endif %} can control your own private CI/CD infrastructure by using self-hosted runners. Self-hosted runners allow you to determine the exact environment and resources that complete your builds, testing, and deployments, without exposing your software development cycle to the internet. For more information, see {% ifversion ghec %}"[About {% data variables.product.company_short %}-hosted runners](/actions/using-github-hosted-runners/about-github-hosted-runners)" and{% endif %} "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)."
|
||||
|
||||
{% data variables.product.prodname_actions %} also includes tools to govern your enterprise's software development cycle and meet compliance obligations. For more information, see "[Enforcing policies for {% data variables.product.prodname_actions %} in your enterprise](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise)."
|
||||
|
||||
|
||||
To learn more about how you can successfully adopt {% data variables.product.prodname_actions %} for your enterprise, follow the "[Adopt {% data variables.product.prodname_actions %} for your enterprise](/admin/guides#adopt-github-actions-for-your-enterprise)" learning path.
|
||||
|
||||
## Further reading
|
||||
|
||||
- "[Understanding {% data variables.product.prodname_actions %}](/actions/learn-github-actions/understanding-github-actions)"{% ifversion ghec %}
|
||||
- "[About billing for {% data variables.product.prodname_actions %}](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)"{% endif %}
|
||||
@@ -9,6 +9,7 @@ topics:
|
||||
- Enterprise
|
||||
- Actions
|
||||
children:
|
||||
- /about-github-actions-for-enterprises
|
||||
- /introducing-github-actions-to-your-enterprise
|
||||
- /migrating-your-enterprise-to-github-actions
|
||||
- /getting-started-with-github-actions-for-github-enterprise-cloud
|
||||
|
||||
@@ -14,7 +14,7 @@ topics:
|
||||
|
||||
## About {% data variables.product.prodname_actions %} for enterprises
|
||||
|
||||
{% data reusables.actions.about-actions %} With {% data variables.product.prodname_actions %}, your enterprise can automate, customize, and execute your software development workflows like testing and deployments. For more information about the basics of {% data variables.product.prodname_actions %}, see "[Understanding {% data variables.product.prodname_actions %}](/actions/learn-github-actions/understanding-github-actions)."
|
||||
{% data reusables.actions.about-actions %} With {% data variables.product.prodname_actions %}, your enterprise can automate, customize, and execute your software development workflows like testing and deployments. For more information, see "[About {% data variables.product.prodname_actions %} for enterprises](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)."
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ You can view the full list of LDAP users who have access to your instance and pr
|
||||
3. In the left sidebar, click **LDAP users**.
|
||||

|
||||
4. To search for a user, type a full or partial username and click **Search**. Existing users will be displayed in search results. If a user doesn’t exist, click **Create** to provision the new user account.
|
||||

|
||||

|
||||
|
||||
## Updating LDAP accounts
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ IdP | SAML | Team synchronization |
|
||||
--- | :--: | :-------: |
|
||||
Active Directory Federation Services (AD FS) | {% octicon "check-circle-fill" aria-label= "The check icon" %} | |
|
||||
Azure Active Directory (Azure AD) | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %} |
|
||||
Okta | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %} |
|
||||
OneLogin | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
|
||||
PingOne | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
|
||||
Shibboleth | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
|
||||
|
||||
@@ -21,15 +21,11 @@ shortTitle: Security log
|
||||
The security log lists all actions performed within the last 90 days.
|
||||
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
{% ifversion fpt or ghae or ghes or ghec %}
|
||||
2. In the user settings sidebar, click **Security log**.
|
||||

|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
|
||||
{% else %}
|
||||
{% data reusables.user_settings.security %}
|
||||
3. Under "Security history," your log is displayed.
|
||||

|
||||
4. Click on an entry to see more information about the event.
|
||||

|
||||
1. In the user settings sidebar, click **Security log**.
|
||||

|
||||
{% endif %}
|
||||
|
||||
{% ifversion fpt or ghae or ghes or ghec %}
|
||||
|
||||
@@ -37,6 +37,10 @@ If you want to view an overview of your subscription and usage for {% data varia
|
||||
|
||||
## Viewing the subscription and usage for your enterprise account
|
||||
|
||||
You can view the subscription and usage for your enterprise and download a file with license details.
|
||||
|
||||
{% data reusables.billing.license-statuses %}
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise %}
|
||||
{% data reusables.enterprise-accounts.settings-tab %}
|
||||
{% data reusables.enterprise-accounts.license-tab %}
|
||||
|
||||
@@ -37,7 +37,7 @@ If you're an organization or enterprise owner, you can switch between settings f
|
||||

|
||||
1. Start typing the name of the account you want to switch to, then click the name of the account.
|
||||

|
||||
1. In the left sidebar, click **Billing & plans**. 
|
||||
1. In the left sidebar, click **{% octicon "credit-card" aria-label="The credit card icon" %} Billing and plans**.
|
||||
|
||||
## Further reading
|
||||
|
||||
|
||||
@@ -30,6 +30,10 @@ You can view license usage for {% data variables.product.prodname_ghe_server %}
|
||||
|
||||
## Viewing license usage on {% ifversion ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.product_location %}{% endif %}
|
||||
|
||||
You can view the license usage for your enterprise and download a file with license details.
|
||||
|
||||
{% data reusables.billing.license-statuses %}
|
||||
|
||||
{% ifversion ghec %}
|
||||
|
||||
{% data reusables.enterprise-accounts.access-enterprise-on-dotcom %}
|
||||
|
||||
@@ -38,7 +38,7 @@ Dependency review is available when dependency graph is enabled for {% data vari
|
||||
|
||||
Sometimes you might just want to update the version of one dependency in a manifest and generate a pull request. However, if the updated version of this direct dependency also has updated dependencies, your pull request may have more changes than you expected. The dependency review for each manifest and lock file provides an easy way to see what has changed, and whether any of the new dependency versions contain known vulnerabilities.
|
||||
|
||||
By checking the dependency reviews in a pull request, and changing any dependencies that are flagged as vulnerable, you can avoid vulnerabilities being added to your project. For more information about how dependency review works, see "[Reviewing dependency changes in a pull request](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request)."
|
||||
By checking the dependency reviews in a pull request, and changing any dependencies that are flagged as vulnerable, you can avoid vulnerabilities being added to your project. For more information about how dependency review works, see "[Reviewing dependency changes in a pull request](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)."
|
||||
|
||||
{% data variables.product.prodname_dependabot_alerts %} will find vulnerabilities that are already in your dependencies, but it's much better to avoid introducing potential problems than to fix problems at a later date. For more information about {% data variables.product.prodname_dependabot_alerts %}, see "[About alerts for vulnerable dependencies](/github/managing-security-vulnerabilities/about-alerts-for-vulnerable-dependencies#dependabot-alerts-for-vulnerable-dependencies)."
|
||||
|
||||
|
||||
@@ -77,6 +77,9 @@ The recommended formats explicitly define which versions are used for all direct
|
||||
| --- | --- | --- | ---|
|
||||
| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` |
|
||||
| `dotnet` CLI | .NET languages (C#, C++, F#, VB) | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` |
|
||||
{%- if github-actions-in-dependency-graph %}
|
||||
| {% data variables.product.prodname_actions %} workflows<sup>[1]</sup> | YAML | `.yml`, `.yaml` | `.yml`, `.yaml` |
|
||||
{%- endif %}
|
||||
{%- ifversion fpt or ghes > 3.2 or ghae %}
|
||||
| Go modules | Go | `go.sum` | `go.mod`, `go.sum` |
|
||||
{%- elsif ghes = 3.2 %}
|
||||
@@ -84,18 +87,28 @@ The recommended formats explicitly define which versions are used for all direct
|
||||
{%- endif %}
|
||||
| Maven | Java, Scala | `pom.xml` | `pom.xml` |
|
||||
| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`|
|
||||
| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`* |
|
||||
| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`{% if github-actions-in-dependency-graph %}<sup>[2]</sup>{% else %}<sup>[1]</sup>{% endif %} |
|
||||
{%- ifversion fpt or ghes > 3.3 %}
|
||||
| Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` |{% endif %}
|
||||
| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` |
|
||||
| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` |
|
||||
|
||||
{% if github-actions-in-dependency-graph %}
|
||||
[1] Please note that {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs.<job_id>.uses` will be parsed as dependencies. For more information, see "[Workflow syntax for GitHub Actions](/actions/using-workflows/workflow-syntax-for-github-actions)."
|
||||
|
||||
[2] If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project.
|
||||
|
||||
{% else %}
|
||||
[1] If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project.
|
||||
{% endif %}
|
||||
|
||||
{% if github-actions-in-dependency-graph %}
|
||||
{% note %}
|
||||
|
||||
**Note:** If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project.
|
||||
**Note:** {% data variables.product.prodname_actions %} workflow dependencies are displayed in the dependency graph for informational purposes. Dependabot alerts are not currently supported for {% data variables.product.prodname_actions %} workflows.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
{% endif %}
|
||||
## Further reading
|
||||
|
||||
- "[Dependency graph](https://en.wikipedia.org/wiki/Dependency_graph)" on Wikipedia
|
||||
|
||||
@@ -12,7 +12,7 @@ shortTitle: Private image registry
|
||||
|
||||
## About private image registries and {% data variables.product.prodname_codespaces %}
|
||||
|
||||
A registry is a secure space for storing, managing, and fetching private container images. You may use one to store one or more devcontainers. There are many examples of registries, such as {% data variables.product.prodname_dotcom %} Container Registry, Azure Container Registry, or DockerHub.
|
||||
A registry is a secure space for storing, managing, and fetching private container images. You may use one to store one or more images. There are many examples of registries, such as {% data variables.product.prodname_dotcom %} Container Registry, Azure Container Registry, or DockerHub.
|
||||
|
||||
{% data variables.product.prodname_dotcom %} Container Registry can be configured to pull container images seamlessly, without having to provide any authentication credentials to {% data variables.product.prodname_codespaces %}. For other image registries, you must create secrets in {% data variables.product.prodname_dotcom %} to store the access details, which will allow {% data variables.product.prodname_codespaces %} to access images stored in that registry.
|
||||
|
||||
@@ -87,7 +87,7 @@ To access AWS Elastic Container Registry (ECR), you can provide an AWS access k
|
||||
```
|
||||
*_CONTAINER_REGISTRY_SERVER = <ECR_URL>
|
||||
*_CONTAINER_REGISTRY_USER = <AWS_ACCESS_KEY_ID>
|
||||
*_container_REGISTRY_PASSWORD = <AWS_SECRET_KEY>
|
||||
*_CONTAINER_REGISTRY_PASSWORD = <AWS_SECRET_KEY>
|
||||
```
|
||||
|
||||
You must also ensure you have the appropriate AWS IAM permissions to perform the credential swap (e.g. `sts:GetServiceBearerToken`) as well as the ECR read operation (either `AmazonEC2ContainerRegistryFullAccess` or `ReadOnlyAccess`).
|
||||
@@ -97,7 +97,7 @@ Alternatively, if you don't want GitHub to perform the credential swap on your b
|
||||
```
|
||||
*_CONTAINER_REGISTRY_SERVER = <ECR_URL>
|
||||
*_CONTAINER_REGISTRY_USER = AWS
|
||||
*_container_REGISTRY_PASSWORD = <TOKEN>
|
||||
*_CONTAINER_REGISTRY_PASSWORD = <TOKEN>
|
||||
```
|
||||
|
||||
Since these tokens are short lived and need to be refreshed periodically, we recommend providing an access key ID and secret.
|
||||
|
||||
@@ -41,13 +41,11 @@ To create secrets for an organization repository, you must have administrator ac
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% data reusables.github-actions.sidebar-secret %}
|
||||
1. Scroll down the page and under **Secrets**, select **Codespaces**.
|
||||

|
||||
1. At the top of the page, click **New repository secret**.
|
||||
1. Type a name for your secret in the **Name** input box.
|
||||
1. Enter the value for your secret.
|
||||
1. Click **Add secret**.
|
||||
1. In the "Security" section of the sidebar, select **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets** then click **{% data variables.product.prodname_codespaces %}**.
|
||||
2. At the top of the page, click **New repository secret**.
|
||||
3. Type a name for your secret in the **Name** input box.
|
||||
4. Enter the value for your secret.
|
||||
5. Click **Add secret**.
|
||||
|
||||
## Adding secrets for an organization
|
||||
|
||||
@@ -57,15 +55,13 @@ When creating a secret in an organization, you can use a policy to limit which r
|
||||
|
||||
{% data reusables.organizations.navigate-to-org %}
|
||||
{% data reusables.organizations.org_settings %}
|
||||
{% data reusables.github-actions.sidebar-secret %}
|
||||
1. Scroll down the page and under **Secrets**, select **Codespaces**.
|
||||

|
||||
1. At the top of the page, click **New organization secret**.
|
||||
1. Type a name for your secret in the **Name** input box.
|
||||
1. Enter the **Value** for your secret.
|
||||
1. From the **Repository access** dropdown list, choose an access policy.
|
||||
1. In the "Security" section of the sidebar, select **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets** then click **{% data variables.product.prodname_codespaces %}**.
|
||||
2. At the top of the page, click **New organization secret**.
|
||||
3. Type a name for your secret in the **Name** input box.
|
||||
4. Enter the **Value** for your secret.
|
||||
5. From the **Repository access** dropdown list, choose an access policy.
|
||||

|
||||
1. Click **Add secret**.
|
||||
6. Click **Add secret**.
|
||||
|
||||
## Reviewing access to organization-level secrets
|
||||
|
||||
|
||||
@@ -47,34 +47,30 @@ If you add an organization-wide policy, you should set it to the largest choice
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.organizations.click-codespaces %}
|
||||
1. Under "Codespaces", click **Policy**.
|
||||
|
||||

|
||||
|
||||
1. On the "Codespace policies" page, click **Create Policy**.
|
||||
1. Enter a name for your new policy.
|
||||
1. Click **Add constraint** and choose **Machine types**.
|
||||
1. In the "Code, planning, and automation" section of the sidebar, select **{% octicon "codespaces" aria-label="The codespaces icon" %} {% data variables.product.prodname_codespaces %}** then click **Policy**.
|
||||
2. On the "Codespace policies" page, click **Create Policy**.
|
||||
3. Enter a name for your new policy.
|
||||
4. Click **Add constraint** and choose **Machine types**.
|
||||
|
||||

|
||||
|
||||
1. Click {% octicon "pencil" aria-label="The edit icon" %} to edit the constraint, then clear the selection of any machine types that you don't want to be available.
|
||||
5. Click {% octicon "pencil" aria-label="The edit icon" %} to edit the constraint, then clear the selection of any machine types that you don't want to be available.
|
||||
|
||||

|
||||
|
||||
1. In the "Change policy target" area, click the dropdown button.
|
||||
1. Choose either **All repositories** or **Selected repositories** to determine which repositories this policy will apply to.
|
||||
1. If you chose **Selected repositories**:
|
||||
6. In the "Change policy target" area, click the dropdown button.
|
||||
7. Choose either **All repositories** or **Selected repositories** to determine which repositories this policy will apply to.
|
||||
8. If you chose **Selected repositories**:
|
||||
1. Click {% octicon "gear" aria-label="The settings icon" %}.
|
||||
|
||||

|
||||
|
||||
1. Select the repositories you want this policy to apply to.
|
||||
1. At the bottom of the repository list, click **Select repositories**.
|
||||
2. Select the repositories you want this policy to apply to.
|
||||
3. At the bottom of the repository list, click **Select repositories**.
|
||||
|
||||

|
||||
|
||||
1. Click **Save**.
|
||||
9. Click **Save**.
|
||||
|
||||
## Editing a policy
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ If you selected a specific amount of time to block the user, they will be automa
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.organizations.moderation-settings %}
|
||||
{% data reusables.organizations.moderation-settings %}, then click **Blocked users**.
|
||||
5. Under "Blocked users", next to the user you'd like to unblock, click **Unblock**.
|
||||

|
||||
|
||||
|
||||
@@ -33,10 +33,7 @@ Organization owners can also block users for a specific amount of time. After th
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
1. In the organization settings sidebar, click **Moderation settings**.
|
||||

|
||||
1. Under "Moderation settings", click **Interaction limits**.
|
||||

|
||||
1. In the "Access" section of the sidebar, select **{% octicon "report" aria-label="The report icon" %} Moderation**, then click **Interaction limits**.
|
||||
{% data reusables.community.set-interaction-limit %}
|
||||

|
||||
|
||||
|
||||
@@ -28,10 +28,7 @@ You can also enable activity limitations on all repositories owned by your user
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
1. In the left sidebar, click **Moderation settings**.
|
||||

|
||||
1. Under "Moderation settings", click **Interaction limits**.
|
||||

|
||||
1. In the "Access" section of the sidebar, select **{% octicon "comment-discussion" aria-label="The comment-discussion icon" %} Moderation options**, then click **Interaction limits**.
|
||||
{% data reusables.community.set-interaction-limit %}
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,641 @@
|
||||
---
|
||||
title: Common validation errors when creating issue forms
|
||||
intro: 'You may see some of these common validation errors when creating, saving, or viewing issue forms.'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
topics:
|
||||
- Community
|
||||
---
|
||||
|
||||
<!--UI-LINK: We link to individual anchors within this file from the issue template editor when the given YAML error is thrown. Links to and anchors within this file should be preserved or should be updated in github/github if they are changed -->
|
||||
{% data reusables.community.issue-forms-beta %}
|
||||
|
||||
## Required top level key `name` is missing
|
||||
|
||||
The template does not contain a `name` field, which means it is not clear what to call your issue template when giving users a list of options.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
description: "Thank you for reporting a bug!"
|
||||
...
|
||||
```
|
||||
|
||||
The error can be fixed by adding `name` as a key.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
description: "Thank you for reporting a bug!"
|
||||
...
|
||||
```
|
||||
|
||||
## `key` must be a string
|
||||
|
||||
This error message means that a permitted key has been provided, but its value cannot be parsed as the data type is not supported.
|
||||
|
||||
### Example
|
||||
|
||||
The `description` below is being parsed as a Boolean, but it should be a string.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
description: true
|
||||
...
|
||||
```
|
||||
|
||||
The error can be fixed by providing a string as the value. Strings may need to be wrapped in double quotes to be successfully parsed. For example, strings that contain `'` must be wrapped in double quotes.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
description: "true"
|
||||
...
|
||||
```
|
||||
|
||||
Empty strings, or strings consisting of only whitespaces, are also not permissible when the field expects a string.
|
||||
|
||||
```yaml
|
||||
name: ""
|
||||
description: "File a bug report"
|
||||
assignees: " "
|
||||
...
|
||||
```
|
||||
|
||||
The error can be fixed by correcting the value to be a non-empty string. If the field is not required, you should delete the key-value pair.
|
||||
|
||||
```yaml
|
||||
name: "Bug Report"
|
||||
description: "File a bug report"
|
||||
...
|
||||
```
|
||||
|
||||
## `input` is not a permitted key
|
||||
|
||||
An unexpected key was supplied at the top level of the template. For more information about which top-level keys are supported, see "[Syntax for issue forms](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms#top-level-syntax)."
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
hello: world
|
||||
...
|
||||
```
|
||||
|
||||
The error can be fixed by removing the unexpected keys.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
...
|
||||
```
|
||||
|
||||
## Forbidden keys
|
||||
|
||||
YAML parses certain strings as `Boolean` values. To avoid this, we have explicitly forbidden the usage of the following keys:
|
||||
|
||||
`y`, `Y`, `yes`, `Yes`, `YES`, `n`, `N`, `no`, `No`, `NO`, `true`, `True`, `TRUE`, `false`, `False`, `FALSE`, `on`, `On`, `ON`, `off`, `Off`, `OFF`
|
||||
|
||||
The error can be fixed by removing the forbidden keys.
|
||||
|
||||
## Body must contain at least one non-markdown field
|
||||
|
||||
Issue forms must accept user input, which means that at least one of its fields must contain a user input field. A `markdown` element is static text, so a `body` array cannot contain only `markdown` elements.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Bugs are the worst!"
|
||||
```
|
||||
|
||||
The error can be fixed by adding non-markdown elements that accept user input.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Bugs are the worst!"
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: "What's wrong?"
|
||||
```
|
||||
|
||||
## Body must have unique ids
|
||||
|
||||
If using `id` attributes to distinguish multiple elements, each `id` attribute must be unique.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: First name
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: Last name
|
||||
```
|
||||
|
||||
The error can be fixed by changing the `id` for one of these inputs, so that every `input` field has a unique `id` attribute.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: First name
|
||||
- type: input
|
||||
id: surname
|
||||
attributes:
|
||||
label: Last name
|
||||
```
|
||||
|
||||
## Body must have unique labels
|
||||
|
||||
When there are multiple `body` elements that accept user input, the `label` attribute for each user input field must be unique.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Name
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Name
|
||||
```
|
||||
|
||||
The error can be fixed by changing the `label` attribute for one of the input fields to ensure that each `label` is unique.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Name
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Operating System
|
||||
```
|
||||
|
||||
Input fields can also be differentiated by their `id` attribute. If duplicate `label` attributes are required, you can supply at least one `id` to differentiate two elements with identical labels.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
id: name_1
|
||||
attributes:
|
||||
label: Name
|
||||
- type: textarea
|
||||
id: name_2
|
||||
attributes:
|
||||
label: Name
|
||||
```
|
||||
|
||||
`id` attributes are not visible in the issue body. If you want to distinguish the fields in the resulting issue, you should use distinct `label` attributes.
|
||||
|
||||
|
||||
## Labels are too similar
|
||||
|
||||
Similar labels may be processed into identical references. If an `id` attribute is not provided for an `input`, the `label` attribute is used to generate a reference to the `input` field. To do this, we process the `label` by leveraging the Rails [parameterize](https://apidock.com/rails/ActiveSupport/Inflector/parameterize) method. In some cases, two labels that are distinct can be processed into the same parameterized string.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Name?
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
label: Name???????
|
||||
```
|
||||
|
||||
The error can be fixed by adding at least one differentiating alphanumeric character, `-`, or `_` to one of the clashing labels.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Name?
|
||||
- type: input
|
||||
attributes:
|
||||
label: Your name
|
||||
```
|
||||
|
||||
The error can also be fixed by giving one of the clashing labels a unique `id`.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: Name?
|
||||
- type: input
|
||||
id: your-name
|
||||
attributes:
|
||||
label: Name???????
|
||||
```
|
||||
|
||||
## Checkboxes must have unique labels
|
||||
|
||||
When a `checkboxes` element is present, each of its nested labels must be unique among its peers, as well as among other input types.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Name
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
options:
|
||||
- label: Name
|
||||
```
|
||||
|
||||
The error can be fixed by changing the `label` attribute for one of these inputs.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Name
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
options:
|
||||
- label: Your name
|
||||
```
|
||||
|
||||
Alternatively, you can supply an `id` to any clashing top-level elements. Nested checkbox elements do not support the `id` attribute.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: textarea
|
||||
id: name_1
|
||||
attributes:
|
||||
label: Name
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
options:
|
||||
- label: Name
|
||||
```
|
||||
|
||||
`id` attributes are not visible in the issue body. If you want to distinguish the fields in the resulting issue, you should use distinct `label` attributes.
|
||||
|
||||
## Body[i]: required key type is missing
|
||||
|
||||
Each body block must contain the key `type`.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the zero-indexed index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
```
|
||||
|
||||
The error can be fixed by adding the key `type` with a valid input type as the value. For the available `body` input types and their syntaxes, see "[Syntax for {% data variables.product.prodname_dotcom %}'s form schema](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys)."
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
```
|
||||
|
||||
## Body[i]: `x` is not a valid input type
|
||||
|
||||
One of the body blocks contains a type value that is not one of the [permitted types](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema#keys).
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: x
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
```
|
||||
|
||||
The error can be fixed by changing `x` to one of the valid types.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
```
|
||||
|
||||
## Body[i]: required attribute key `value` is missing
|
||||
|
||||
One of the required `value` attributes has not been provided. The error occurs when a block does not have an `attributes` key or does not have a `value` key under the `attributes` key.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
- type: markdown
|
||||
```
|
||||
|
||||
The error in this example can be fixed by adding `value` as a key under `attributes` in the second list element of `body`.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
preview_only: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "This is working now!"
|
||||
```
|
||||
|
||||
## Body[i]: label must be a string
|
||||
|
||||
Within its `attributes` block, a value has the wrong data type.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
The `label` below is being parsed as a Boolean, but it should be a string.
|
||||
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Description
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: true
|
||||
```
|
||||
|
||||
The error can be fixed by supplying a string value for `label`. If you want to use a `label` value that may be parsed as a Boolean, integer, or decimal, you should wrap the value in quotes. For example, `"true"` or `"1.3"` instead of `true` or `1.3`.
|
||||
|
||||
```yaml
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Description
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Environment Details
|
||||
```
|
||||
|
||||
Empty strings, or strings consisting of only whitespaces, are not permissible when an attribute expects a string. For example, `""` or `" "` are not allowed.
|
||||
|
||||
If the attribute is required, the value must be a non-empty string. If the field is not required, you should delete the key-value pair.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Name"
|
||||
```
|
||||
|
||||
## Body[i]: `id` can only contain numbers, letters, -, _
|
||||
|
||||
`id` attributes can only contain alphanumeric characters, `-`, and `_`. Your template may include non-permitted characters, such as whitespace, in an `id`.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
id: first name
|
||||
attributes:
|
||||
label: First name
|
||||
```
|
||||
|
||||
The error can be fixed by ensuring that whitespaces and other non-permitted characters are removed from `id` values.
|
||||
|
||||
```yaml
|
||||
name: "Bug report"
|
||||
body:
|
||||
- type: input
|
||||
id: first-name
|
||||
attributes:
|
||||
label: First name
|
||||
```
|
||||
|
||||
## Body[i]: `x` is not a permitted key
|
||||
|
||||
An unexpected key, `x`, was provided at the same indentation level as `type` and `attributes`.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
x: woof
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
```
|
||||
|
||||
The error can be fixed by removing extra keys and only using `type`, `attributes`, and `id`.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug! If you need real-time help, join us on Discord."
|
||||
```
|
||||
|
||||
## Body[i]: `label` contains forbidden word
|
||||
|
||||
To minimize the risk of private information and credentials being posted publicly in GitHub Issues, some words commonly used by attackers are not permitted in the `label` of input or textarea elements.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Hello world!
|
||||
- type: input
|
||||
attributes:
|
||||
label: Password
|
||||
```
|
||||
|
||||
The error can be fixed by removing terms like "password" from any `label` fields.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Hello world!
|
||||
- type: input
|
||||
attributes:
|
||||
label: Username
|
||||
```
|
||||
|
||||
## Body[i]: `x` is not a permitted attribute
|
||||
|
||||
An invalid key has been supplied in an `attributes` block.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
x: "a random key!"
|
||||
value: "Thanks for taking the time to fill out this bug!"
|
||||
```
|
||||
|
||||
The error can be fixed by removing extra keys and only using permitted attributes.
|
||||
|
||||
```yaml
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "Thanks for taking the time to fill out this bug!"
|
||||
```
|
||||
|
||||
## Body[i]: `options` must be unique
|
||||
|
||||
For checkboxes and dropdown input types, the choices defined in the `options` array must be unique.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Favorite dessert
|
||||
options:
|
||||
- ice cream
|
||||
- ice cream
|
||||
- pie
|
||||
```
|
||||
|
||||
The error can be fixed by ensuring that no duplicate choices exist in the `options` array.
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Favorite dessert
|
||||
options:
|
||||
- ice cream
|
||||
- pie
|
||||
```
|
||||
|
||||
## Body[i]: `options` must not include the reserved word, none
|
||||
|
||||
"None" is a reserved word in an `options` set because it is used to indicate non-choice when a `dropdown` is not required.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: What types of pie do you like?
|
||||
options:
|
||||
- Steak & Ale
|
||||
- Chicken & Leek
|
||||
- None
|
||||
validations:
|
||||
required: true
|
||||
```
|
||||
|
||||
The error can be fixed by removing "None" as an option. If you want a contributor to be able to indicate that they like none of those types of pies, you can additionally remove the `required` validation.
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: What types of pie do you like?
|
||||
options:
|
||||
- Steak & Ale
|
||||
- Chicken & Leek
|
||||
```
|
||||
|
||||
In this example, "None" will be auto-populated as a selectable option.
|
||||
|
||||
## Body[i]: `options` must not include booleans. Please wrap values such as 'yes', and 'true' in quotes
|
||||
|
||||
There are a number of English words that become processed into Boolean values by the YAML parser unless they are wrapped in quotes. For dropdown `options`, all items must be strings rather than Booleans.
|
||||
|
||||
Errors with `body` will be prefixed with `body[i]` where `i` represents the index of the body block containing the error. For example, `body[0]` tells us that the error has been caused by the first block in the `body` list.
|
||||
|
||||
### Example
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you like pie?
|
||||
options:
|
||||
- Yes
|
||||
- No
|
||||
- Maybe
|
||||
```
|
||||
|
||||
The error can be fixed by wrapping each offending option in quotes, to prevent them from being processed as Boolean values.
|
||||
|
||||
```
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Do you like pie?
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
- Maybe
|
||||
```
|
||||
|
||||
## Further reading
|
||||
|
||||
- [YAML](https://yaml.org/)
|
||||
- [Syntax for issue forms](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms)
|
||||
@@ -21,5 +21,6 @@ children:
|
||||
- /syntax-for-githubs-form-schema
|
||||
- /creating-a-pull-request-template-for-your-repository
|
||||
- /manually-creating-a-single-issue-template-for-your-repository
|
||||
- /common-validation-errors-when-creating-issue-forms
|
||||
---
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@ You can use the `checkboxes` element to add a set of checkboxes to your form.
|
||||
|
||||
| Key | Description | Required | Type | Default | Valid values |
|
||||
| --- | ----------- | -------- | ---- | ------- | ------- |
|
||||
| `label` | A brief description of the expected user input, which is displayed in the form. | Optional | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
|
||||
| `label` | A brief description of the expected user input, which is displayed in the form. | Required | String | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
|
||||
| `description` | A description of the set of checkboxes, which is displayed in the form. Supports Markdown formatting. | Optional | String | Empty String | {% octicon "dash" aria-label="The dash icon" %} |
|
||||
| `options` | An array of checkboxes that the user can select. For syntax, see below. | Required | Array | {% octicon "dash" aria-label="The dash icon" %} | {% octicon "dash" aria-label="The dash icon" %} |
|
||||
|
||||
|
||||
@@ -165,3 +165,4 @@ body:
|
||||
## Further reading
|
||||
|
||||
- [YAML](https://yaml.org/)
|
||||
- [Common validation errors when creating issue forms](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/common-validation-errors-when-creating-issue-forms)
|
||||
|
||||
@@ -52,7 +52,7 @@ The best way to explain subtree merges is to show by example. We will:
|
||||
|
||||
1. Add a new remote URL pointing to the separate project that we're interested in.
|
||||
```shell
|
||||
$ git remote add -f spoon-knife git@github.com:octocat/Spoon-Knife.git
|
||||
$ git remote add -f spoon-knife https://github.com/octocat/Spoon-Knife.git
|
||||
> Updating spoon-knife
|
||||
> warning: no common commits
|
||||
> remote: Counting objects: 1732, done.
|
||||
@@ -60,7 +60,7 @@ The best way to explain subtree merges is to show by example. We will:
|
||||
> remote: Total 1732 (delta 1086), reused 1558 (delta 967)
|
||||
> Receiving objects: 100% (1732/1732), 528.19 KiB | 621 KiB/s, done.
|
||||
> Resolving deltas: 100% (1086/1086), done.
|
||||
> From git://github.com/octocat/Spoon-Knife
|
||||
> From https://github.com/octocat/Spoon-Knife
|
||||
> * [new branch] main -> Spoon-Knife/main
|
||||
```
|
||||
2. Merge the `Spoon-Knife` project into the local Git project. This doesn't change any of your files locally, but it does prepare Git for the next step.
|
||||
|
||||
@@ -29,45 +29,45 @@ The {% data variables.product.prodname_command_palette %} also gives you quick a
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>s</kbd> or <kbd>/</kbd> | Focus the search bar. For more information, see "[About searching on {% data variables.product.company_short %}](/search-github/getting-started-with-searching-on-github/about-searching-on-github)."
|
||||
|<kbd>g</kbd> <kbd>n</kbd> | Go to your notifications. For more information, see {% ifversion fpt or ghes or ghae or ghec %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}."
|
||||
|<kbd>esc</kbd> | When focused on a user, issue, or pull request hovercard, closes the hovercard and refocuses on the element the hovercard is in
|
||||
{% if command-palette %}|<kbd>control</kbd><kbd>k</kbd> or <kbd>command</kbd><kbd>k</kbd> | Opens the {% data variables.product.prodname_command_palette %}. If you are editing Markdown text, open the command palette with <kbd>Ctl</kbd><kbd>alt</kbd><kbd>k</kbd> or <kbd>⌘</kbd><kbd>option</kbd><kbd>k</kbd>. For more information, see "[{% data variables.product.prodname_command_palette %}](/get-started/using-github/github-command-palette)."{% endif %}
|
||||
|<kbd>S</kbd> or <kbd>/</kbd> | Focus the search bar. For more information, see "[About searching on {% data variables.product.company_short %}](/search-github/getting-started-with-searching-on-github/about-searching-on-github)."
|
||||
|<kbd>G</kbd> <kbd>N</kbd> | Go to your notifications. For more information, see {% ifversion fpt or ghes or ghae or ghec %}"[About notifications](/github/managing-subscriptions-and-notifications-on-github/about-notifications){% else %}"[About notifications](/github/receiving-notifications-about-activity-on-github/about-notifications){% endif %}."
|
||||
|<kbd>Esc</kbd> | When focused on a user, issue, or pull request hovercard, closes the hovercard and refocuses on the element the hovercard is in
|
||||
{% if command-palette %}|<kbd>Command</kbd>+<kbd>K</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>K</kbd> (Windows/Linux) | Opens the {% data variables.product.prodname_command_palette %}. If you are editing Markdown text, open the command palette with <kbd>Command</kbd>+<kbd>Option</kbd>+<kbd>K</kbd> or <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>K</kbd>. For more information, see "[{% data variables.product.prodname_command_palette %}](/get-started/using-github/github-command-palette)."{% endif %}
|
||||
|
||||
## Repositories
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>g</kbd> <kbd>c</kbd> | Go to the **Code** tab
|
||||
|<kbd>g</kbd> <kbd>i</kbd> | Go to the **Issues** tab. For more information, see "[About issues](/articles/about-issues)."
|
||||
|<kbd>g</kbd> <kbd>p</kbd> | Go to the **Pull requests** tab. For more information, see "[About pull requests](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)."{% ifversion fpt or ghes or ghec %}
|
||||
|<kbd>g</kbd> <kbd>a</kbd> | Go to the **Actions** tab. For more information, see "[About Actions](/actions/getting-started-with-github-actions/about-github-actions)."{% endif %}
|
||||
|<kbd>g</kbd> <kbd>b</kbd> | Go to the **Projects** tab. For more information, see "[About project boards](/articles/about-project-boards)."
|
||||
|<kbd>g</kbd> <kbd>w</kbd> | Go to the **Wiki** tab. For more information, see "[About wikis](/communities/documenting-your-project-with-wikis/about-wikis)."{% ifversion fpt or ghec %}
|
||||
|<kbd>g</kbd> <kbd>g</kbd> | Go to the **Discussions** tab. For more information, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)."{% endif %}
|
||||
|<kbd>G</kbd> <kbd>C</kbd> | Go to the **Code** tab
|
||||
|<kbd>G</kbd> <kbd>I</kbd> | Go to the **Issues** tab. For more information, see "[About issues](/articles/about-issues)."
|
||||
|<kbd>G</kbd> <kbd>P</kbd> | Go to the **Pull requests** tab. For more information, see "[About pull requests](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)."{% ifversion fpt or ghes or ghec %}
|
||||
|<kbd>G</kbd> <kbd>A</kbd> | Go to the **Actions** tab. For more information, see "[About Actions](/actions/getting-started-with-github-actions/about-github-actions)."{% endif %}
|
||||
|<kbd>G</kbd> <kbd>B</kbd> | Go to the **Projects** tab. For more information, see "[About project boards](/articles/about-project-boards)."
|
||||
|<kbd>G</kbd> <kbd>W</kbd> | Go to the **Wiki** tab. For more information, see "[About wikis](/communities/documenting-your-project-with-wikis/about-wikis)."{% ifversion fpt or ghec %}
|
||||
|<kbd>G</kbd> <kbd>G</kbd> | Go to the **Discussions** tab. For more information, see "[About discussions](/discussions/collaborating-with-your-community-using-discussions/about-discussions)."{% endif %}
|
||||
|
||||
## Source code editing
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------{% ifversion fpt or ghec %}
|
||||
|<kbd>.</kbd> | Opens a repository or pull request in the web-based editor. For more information, see "[Web-based editor](/codespaces/developing-in-codespaces/web-based-editor)."{% endif %}
|
||||
| <kbd>control b</kbd> or <kbd>command b</kbd> | Inserts Markdown formatting for bolding text
|
||||
| <kbd>control i</kbd> or <kbd>command i</kbd> | Inserts Markdown formatting for italicizing text
|
||||
| <kbd>control k</kbd> or <kbd>command k</kbd> | Inserts Markdown formatting for creating a link{% ifversion fpt or ghec or ghae or ghes > 3.3 %}
|
||||
| <kbd>control shift 7</kbd> or <kbd>command shift 7</kbd> | Inserts Markdown formatting for an ordered list
|
||||
| <kbd>control shift 8</kbd> or <kbd>command shift 8</kbd> | Inserts Markdown formatting for an unordered list
|
||||
| <kbd>control shift .</kbd> or <kbd>command shift.</kbd> | Inserts Markdown formatting for a quote{% endif %}
|
||||
|<kbd>e</kbd> | Open source code file in the **Edit file** tab
|
||||
|<kbd>control f</kbd> or <kbd>command f</kbd> | Start searching in file editor
|
||||
|<kbd>control g</kbd> or <kbd>command g</kbd> | Find next
|
||||
|<kbd>control shift g</kbd> or <kbd>command shift g</kbd> | Find previous
|
||||
|<kbd>control shift f</kbd> or <kbd>command option f</kbd> | Replace
|
||||
|<kbd>control shift r</kbd> or <kbd>command shift option f</kbd> | Replace all
|
||||
|<kbd>alt g</kbd> | Jump to line
|
||||
|<kbd>control z</kbd> or <kbd>command z</kbd> | Undo
|
||||
|<kbd>control y</kbd> or <kbd>command y</kbd> | Redo
|
||||
|<kbd>command shift p</kbd> | Toggles between the **Edit file** and **Preview changes** tabs
|
||||
|<kbd>control s</kbd> or <kbd>command s</kbd> | Write a commit message
|
||||
|<kbd>Command</kbd>+<kbd>B</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>B</kbd> (Windows/Linux) | Inserts Markdown formatting for bolding text
|
||||
|<kbd>Command</kbd>+<kbd>I</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>I</kbd> (Windows/Linux) | Inserts Markdown formatting for italicizing text
|
||||
|<kbd>Command</kbd>+<kbd>K</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>K</kbd> (Windows/Linux) | Inserts Markdown formatting for creating a link{% ifversion fpt or ghec or ghae or ghes > 3.3 %}
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>7</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>7</kbd> (Windows/Linux) | Inserts Markdown formatting for an ordered list
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>8</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>8</kbd> (Windows/Linux) | Inserts Markdown formatting for an unordered list
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>.</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>.</kbd> (Windows/Linux) | Inserts Markdown formatting for a quote{% endif %}
|
||||
|<kbd>E</kbd> | Open source code file in the **Edit file** tab
|
||||
|<kbd>Command</kbd>+<kbd>F</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>F</kbd> (Windows/Linux) | Start searching in file editor
|
||||
|<kbd>Command</kbd>+<kbd>G</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>G</kbd> (Windows/Linux) | Find next
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd> (Windows/Linux) | Find previous
|
||||
|<kbd>Command</kbd>+<kbd>Option</kbd>+<kbd>F</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>F</kbd> (Windows/Linux) | Replace
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>Option</kbd>+<kbd>F</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>R</kbd> (Windows/Linux) | Replace all
|
||||
|<kbd>Alt</kbd>+<kbd>G</kbd> | Jump to line
|
||||
|<kbd>Command</kbd>+<kbd>Z</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Z</kbd> (Windows/Linux) | Undo
|
||||
|<kbd>Command</kbd>+<kbd>Y</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Y</kbd> (Windows/Linux) | Redo
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> | Toggles between the **Edit file** and **Preview changes** tabs
|
||||
|<kbd>Command</kbd>+<kbd>S</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>S</kbd> (Windows/Linux) | Write a commit message
|
||||
|
||||
For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirror.net/doc/manual.html#commands).
|
||||
|
||||
@@ -75,67 +75,67 @@ For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirr
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>t</kbd> | Activates the file finder
|
||||
|<kbd>l</kbd> | Jump to a line in your code
|
||||
|<kbd>w</kbd> | Switch to a new branch or tag
|
||||
|<kbd>y</kbd> | Expand a URL to its canonical form. For more information, see "[Getting permanent links to files](/articles/getting-permanent-links-to-files)."
|
||||
|<kbd>i</kbd> | Show or hide comments on diffs. For more information, see "[Commenting on the diff of a pull request](/articles/commenting-on-the-diff-of-a-pull-request)."
|
||||
|<kbd>a</kbd> | Show or hide annotations on diffs
|
||||
|<kbd>b</kbd> | Open blame view. For more information, see "[Tracing changes in a file](/articles/tracing-changes-in-a-file)."
|
||||
|<kbd>T</kbd> | Activates the file finder
|
||||
|<kbd>L</kbd> | Jump to a line in your code
|
||||
|<kbd>W</kbd> | Switch to a new branch or tag
|
||||
|<kbd>Y</kbd> | Expand a URL to its canonical form. For more information, see "[Getting permanent links to files](/articles/getting-permanent-links-to-files)."
|
||||
|<kbd>I</kbd> | Show or hide comments on diffs. For more information, see "[Commenting on the diff of a pull request](/articles/commenting-on-the-diff-of-a-pull-request)."
|
||||
|<kbd>A</kbd> | Show or hide annotations on diffs
|
||||
|<kbd>B</kbd> | Open blame view. For more information, see "[Tracing changes in a file](/articles/tracing-changes-in-a-file)."
|
||||
|
||||
## Comments
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
| <kbd>control b</kbd> or <kbd>command b</kbd> | Inserts Markdown formatting for bolding text
|
||||
| <kbd>control i</kbd> or <kbd>command i</kbd> | Inserts Markdown formatting for italicizing text{% ifversion fpt or ghae or ghes > 3.1 or ghec %}
|
||||
| <kbd>control e</kbd> or <kbd>command e</kbd> | Inserts Markdown formatting for code or a command within a line{% endif %}
|
||||
| <kbd>control k</kbd> or <kbd>command k</kbd> | Inserts Markdown formatting for creating a link
|
||||
| <kbd>control shift p</kbd> or <kbd>command shift p</kbd>| Toggles between the **Write** and **Preview** comment tabs{% ifversion fpt or ghae or ghes > 3.2 or ghec %}
|
||||
| <kbd>control shift 7</kbd> or <kbd>command shift 7</kbd> | Inserts Markdown formatting for an ordered list
|
||||
| <kbd>control shift 8</kbd> or <kbd>command shift 8</kbd> | Inserts Markdown formatting for an unordered list{% endif %}
|
||||
| <kbd>control enter</kbd> or <kbd>command enter</kbd> | Submits a comment
|
||||
| <kbd>control .</kbd> and then <kbd>control [saved reply number]</kbd> | Opens saved replies menu and then autofills comment field with a saved reply. For more information, see "[About saved replies](/articles/about-saved-replies)."{% ifversion fpt or ghae or ghes > 3.2 or ghec %}
|
||||
| <kbd>control shift .</kbd> or <kbd>command shift.</kbd> | Inserts Markdown formatting for a quote{% endif %}{% ifversion fpt or ghec %}
|
||||
|<kbd>control g</kbd> or <kbd>command g</kbd> | Insert a suggestion. For more information, see "[Reviewing proposed changes in a pull request](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request)." |{% endif %}
|
||||
| <kbd>r</kbd> | Quote the selected text in your reply. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax#quoting-text)." |
|
||||
|<kbd>Command</kbd>+<kbd>B</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>B</kbd> (Windows/Linux) | Inserts Markdown formatting for bolding text
|
||||
|<kbd>Command</kbd>+<kbd>I</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>I</kbd> (Windows/Linux) | Inserts Markdown formatting for italicizing text{% ifversion fpt or ghae or ghes > 3.1 or ghec %}
|
||||
|<kbd>Command</kbd>+<kbd>E</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>E</kbd> (Windows/Linux) | Inserts Markdown formatting for code or a command within a line{% endif %}
|
||||
|<kbd>Command</kbd>+<kbd>K</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>K</kbd> (Windows/Linux) | Inserts Markdown formatting for creating a link
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Windows/Linux) | Toggles between the **Write** and **Preview** comment tabs{% ifversion fpt or ghae or ghes > 3.2 or ghec %}
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>7</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>7</kbd> (Windows/Linux) | Inserts Markdown formatting for an ordered list
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>8</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>8</kbd> (Windows/Linux) | Inserts Markdown formatting for an unordered list{% endif %}
|
||||
|<kbd>Command</kbd>+<kbd>Enter</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Enter</kbd> (Windows/Linux) | Submits a comment
|
||||
|<kbd>Ctrl</kbd>+<kbd>.</kbd> and then <kbd>Ctrl</kbd>+<kbd>[saved reply number]</kbd> | Opens saved replies menu and then autofills comment field with a saved reply. For more information, see "[About saved replies](/articles/about-saved-replies)."{% ifversion fpt or ghae or ghes > 3.2 or ghec %}
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>.</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>.</kbd> (Windows/Linux) | Inserts Markdown formatting for a quote{% endif %}{% ifversion fpt or ghec %}
|
||||
|<kbd>Command</kbd>+<kbd>G</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>G</kbd> (Windows/Linux) | Insert a suggestion. For more information, see "[Reviewing proposed changes in a pull request](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request)." |{% endif %}
|
||||
|<kbd>R</kbd> | Quote the selected text in your reply. For more information, see "[Basic writing and formatting syntax](/articles/basic-writing-and-formatting-syntax#quoting-text)." |
|
||||
|
||||
## Issue and pull request lists
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>c</kbd> | Create an issue
|
||||
| <kbd>control /</kbd> or <kbd>command /</kbd> | Focus your cursor on the issues or pull requests search bar. For more information, see "[Filtering and searching issues and pull requests](/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests)."||
|
||||
|<kbd>u</kbd> | Filter by author
|
||||
|<kbd>l</kbd> | Filter by or edit labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)."
|
||||
| <kbd>alt</kbd> and click | While filtering by labels, exclude labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)."
|
||||
|<kbd>m</kbd> | Filter by or edit milestones. For more information, see "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)."
|
||||
|<kbd>a</kbd> | Filter by or edit assignee. For more information, see "[Filtering issues and pull requests by assignees](/articles/filtering-issues-and-pull-requests-by-assignees)."
|
||||
|<kbd>o</kbd> or <kbd>enter</kbd> | Open issue
|
||||
|<kbd>C</kbd> | Create an issue
|
||||
|<kbd>Command</kbd>+<kbd>/</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>/</kbd> (Windows/Linux) | Focus your cursor on the issues or pull requests search bar. For more information, see "[Filtering and searching issues and pull requests](/issues/tracking-your-work-with-issues/filtering-and-searching-issues-and-pull-requests)."||
|
||||
|<kbd>U</kbd> | Filter by author
|
||||
|<kbd>L</kbd> | Filter by or edit labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)."
|
||||
|<kbd>Alt</kbd> and click | While filtering by labels, exclude labels. For more information, see "[Filtering issues and pull requests by labels](/articles/filtering-issues-and-pull-requests-by-labels)."
|
||||
|<kbd>M</kbd> | Filter by or edit milestones. For more information, see "[Filtering issues and pull requests by milestone](/articles/filtering-issues-and-pull-requests-by-milestone)."
|
||||
|<kbd>A</kbd> | Filter by or edit assignee. For more information, see "[Filtering issues and pull requests by assignees](/articles/filtering-issues-and-pull-requests-by-assignees)."
|
||||
|<kbd>O</kbd> or <kbd>Enter</kbd> | Open issue
|
||||
|
||||
## Issues and pull requests
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>q</kbd> | Request a reviewer. For more information, see "[Requesting a pull request review](/articles/requesting-a-pull-request-review/)."
|
||||
|<kbd>m</kbd> | Set a milestone. For more information, see "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests/)."
|
||||
|<kbd>l</kbd> | Apply a label. For more information, see "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests/)."
|
||||
|<kbd>a</kbd> | Set an assignee. For more information, see "[Assigning issues and pull requests to other {% data variables.product.company_short %} users](/articles/assigning-issues-and-pull-requests-to-other-github-users/)."
|
||||
|<kbd>cmd + shift + p</kbd> or <kbd>control + shift + p</kbd> | Toggles between the **Write** and **Preview** tabs{% ifversion fpt or ghec %}
|
||||
|<kbd>alt</kbd> and click | When creating an issue from a task list, open the new issue form in the current tab by holding <kbd>alt</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|
||||
|<kbd>shift</kbd> and click | When creating an issue from a task list, open the new issue form in a new tab by holding <kbd>shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|
||||
|<kbd>command</kbd> or <kbd>control + shift</kbd> and click | When creating an issue from a task list, open the new issue form in the new window by holding <kbd>command</kbd> or <kbd>control + shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."{% endif %}
|
||||
|<kbd>Q</kbd> | Request a reviewer. For more information, see "[Requesting a pull request review](/articles/requesting-a-pull-request-review/)."
|
||||
|<kbd>M</kbd> | Set a milestone. For more information, see "[Associating milestones with issues and pull requests](/articles/associating-milestones-with-issues-and-pull-requests/)."
|
||||
|<kbd>L</kbd> | Apply a label. For more information, see "[Applying labels to issues and pull requests](/articles/applying-labels-to-issues-and-pull-requests/)."
|
||||
|<kbd>A</kbd> | Set an assignee. For more information, see "[Assigning issues and pull requests to other {% data variables.product.company_short %} users](/articles/assigning-issues-and-pull-requests-to-other-github-users/)."
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Windows/Linux) | Toggles between the **Write** and **Preview** tabs{% ifversion fpt or ghec %}
|
||||
|<kbd>Alt</kbd> and click | When creating an issue from a task list, open the new issue form in the current tab by holding <kbd>Alt</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|
||||
|<kbd>Shift</kbd> and click | When creating an issue from a task list, open the new issue form in a new tab by holding <kbd>Shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."
|
||||
|<kbd>Command</kbd> and click (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd> and click (Windows/Linux) | When creating an issue from a task list, open the new issue form in the new window by holding <kbd>Command</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd> and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[About task lists](/issues/tracking-your-work-with-issues/creating-issues/about-task-lists)."{% endif %}
|
||||
|
||||
## Changes in pull requests
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>c</kbd> | Open the list of commits in the pull request
|
||||
|<kbd>t</kbd> | Open the list of changed files in the pull request
|
||||
|<kbd>j</kbd> | Move selection down in the list
|
||||
|<kbd>k</kbd> | Move selection up in the list
|
||||
| <kbd>cmd + shift + enter </kbd> | Add a single comment on a pull request diff |
|
||||
| <kbd>alt</kbd> and click | Toggle between collapsing and expanding all outdated review comments in a pull request by holding down `alt` and clicking **Show outdated** or **Hide outdated**.|{% ifversion fpt or ghes or ghae or ghec %}
|
||||
| Click, then <kbd>shift</kbd> and click | Comment on multiple lines of a pull request by clicking a line number, holding <kbd>shift</kbd>, then clicking another line number. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)."|{% endif %}
|
||||
|<kbd>C</kbd> | Open the list of commits in the pull request
|
||||
|<kbd>T</kbd> | Open the list of changed files in the pull request
|
||||
|<kbd>J</kbd> | Move selection down in the list
|
||||
|<kbd>K</kbd> | Move selection up in the list
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>Enter</kbd> | Add a single comment on a pull request diff |
|
||||
|<kbd>Alt</kbd> and click | Toggle between collapsing and expanding all outdated review comments in a pull request by holding down <kbd>Alt</kbd> and clicking **Show outdated** or **Hide outdated**.|{% ifversion fpt or ghes or ghae or ghec %}
|
||||
|Click, then <kbd>Shift</kbd> and click | Comment on multiple lines of a pull request by clicking a line number, holding <kbd>Shift</kbd>, then clicking another line number. For more information, see "[Commenting on a pull request](/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)."|{% endif %}
|
||||
|
||||
## Project boards
|
||||
|
||||
@@ -143,50 +143,50 @@ For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirr
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>enter</kbd> or <kbd>space</kbd> | Start moving the focused column
|
||||
|<kbd>escape</kbd> | Cancel the move in progress
|
||||
|<kbd>enter</kbd> | Complete the move in progress
|
||||
|<kbd>←</kbd> or <kbd>h</kbd> | Move column to the left
|
||||
|<kbd>command + ←</kbd> or <kbd>command + h</kbd> or <kbd>control + ←</kbd> or <kbd>control + h</kbd> | Move column to the leftmost position
|
||||
|<kbd>→</kbd> or <kbd>l</kbd> | Move column to the right
|
||||
|<kbd>command + →</kbd> or <kbd>command + l</kbd> or <kbd>control + →</kbd> or <kbd>control + l</kbd> | Move column to the rightmost position
|
||||
|<kbd>Enter</kbd> or <kbd>Space</kbd> | Start moving the focused column
|
||||
|<kbd>Esc</kbd> | Cancel the move in progress
|
||||
|<kbd>Enter</kbd> | Complete the move in progress
|
||||
|<kbd>←</kbd> or <kbd>H</kbd> | Move column to the left
|
||||
|<kbd>Command</kbd>+<kbd>←</kbd> or <kbd>Command</kbd>+<kbd>H</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>←</kbd> or <kbd>Ctrl</kbd>+<kbd>H</kbd> (Windows/Linux) | Move column to the leftmost position
|
||||
|<kbd>→</kbd> or <kbd>L</kbd> | Move column to the right
|
||||
|<kbd>Command</kbd>+<kbd>→</kbd> or <kbd>Command</kbd>+<kbd>L</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>→</kbd> or <kbd>Ctrl</kbd>+<kbd>L</kbd> (Windows/Linux) | Move column to the rightmost position
|
||||
|
||||
### Moving a card
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>enter</kbd> or <kbd>space</kbd> | Start moving the focused card
|
||||
|<kbd>escape</kbd> | Cancel the move in progress
|
||||
|<kbd>enter</kbd> | Complete the move in progress
|
||||
|<kbd>↓</kbd> or <kbd>j</kbd> | Move card down
|
||||
|<kbd>command + ↓</kbd> or <kbd>command + j</kbd> or <kbd>control + ↓</kbd> or <kbd>control + j</kbd> | Move card to the bottom of the column
|
||||
|<kbd>↑</kbd> or <kbd>k</kbd> | Move card up
|
||||
|<kbd>command + ↑</kbd> or <kbd>command + k</kbd> or <kbd>control + ↑</kbd> or <kbd>control + k</kbd> | Move card to the top of the column
|
||||
|<kbd>←</kbd> or <kbd>h</kbd> | Move card to the bottom of the column on the left
|
||||
|<kbd>shift + ←</kbd> or <kbd>shift + h</kbd> | Move card to the top of the column on the left
|
||||
|<kbd>command + ←</kbd> or <kbd>command + h</kbd> or <kbd>control + ←</kbd> or <kbd>control + h</kbd> | Move card to the bottom of the leftmost column
|
||||
|<kbd>command + shift + ←</kbd> or <kbd>command + shift + h</kbd> or <kbd>control + shift + ←</kbd> or <kbd>control + shift + h</kbd> | Move card to the top of the leftmost column
|
||||
|<kbd>Enter</kbd> or <kbd>Space</kbd> | Start moving the focused card
|
||||
|<kbd>Esc</kbd> | Cancel the move in progress
|
||||
|<kbd>Enter</kbd> | Complete the move in progress
|
||||
|<kbd>↓</kbd> or <kbd>J</kbd> | Move card down
|
||||
|<kbd>Command</kbd>+<kbd>↓</kbd> or <kbd>Command</kbd>+<kbd>J</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>↓</kbd> or <kbd>Ctrl</kbd>+<kbd>J</kbd> (Windows/Linux) | Move card to the bottom of the column
|
||||
|<kbd>↑</kbd> or <kbd>K</kbd> | Move card up
|
||||
|<kbd>Command</kbd>+<kbd>↑</kbd> or <kbd>Command</kbd>+<kbd>K</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>↑</kbd> or <kbd>Ctrl</kbd>+<kbd>K</kbd> (Windows/Linux) | Move card to the top of the column
|
||||
|<kbd>←</kbd> or <kbd>H</kbd> | Move card to the bottom of the column on the left
|
||||
|<kbd>Shift</kbd>+<kbd>←</kbd> or <kbd>Shift</kbd>+<kbd>H</kbd> | Move card to the top of the column on the left
|
||||
|<kbd>Command</kbd>+<kbd>←</kbd> or <kbd>Command</kbd>+<kbd>H</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>←</kbd> or <kbd>Ctrl</kbd>+<kbd>H</kbd> (Windows/Linux) | Move card to the bottom of the leftmost column
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>←</kbd> or <kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>←</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>H</kbd> (Windows/Linux) | Move card to the top of the leftmost column
|
||||
|<kbd>→</kbd> | Move card to the bottom of the column on the right
|
||||
|<kbd>shift + →</kbd> or <kbd>shift + l</kbd> | Move card to the top of the column on the right
|
||||
|<kbd>command + →</kbd> or <kbd>command + l</kbd> or <kbd>control + →</kbd> or <kbd>control + l</kbd> | Move card to the bottom of the rightmost column
|
||||
|<kbd>command + shift + →</kbd> or <kbd>command + shift + l</kbd> or <kbd>control + shift + →</kbd> or <kbd>control + shift + l</kbd> | Move card to the bottom of the rightmost column
|
||||
|<kbd>Shift</kbd>+<kbd>→</kbd> or <kbd>Shift</kbd>+<kbd>L</kbd> | Move card to the top of the column on the right
|
||||
|<kbd>Command</kbd>+<kbd>→</kbd> or <kbd>Command</kbd>+<kbd>L</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>→</kbd> or <kbd>Ctrl</kbd>+<kbd>L</kbd> (Windows/Linux) | Move card to the bottom of the rightmost column
|
||||
|<kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>→</kbd> or <kbd>Command</kbd>+<kbd>Shift</kbd>+<kbd>L</kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>→</kbd> or <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>L</kbd> (Windows/Linux) | Move card to the bottom of the rightmost column
|
||||
|
||||
### Previewing a card
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>esc</kbd> | Close the card preview pane
|
||||
|<kbd>Esc</kbd> | Close the card preview pane
|
||||
|
||||
{% ifversion fpt or ghec %}
|
||||
## {% data variables.product.prodname_actions %}
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>command + space </kbd> or <kbd>control + space</kbd> | In the workflow editor, get suggestions for your workflow file.
|
||||
|<kbd>g</kbd> <kbd>f</kbd> | Go to the workflow file
|
||||
|<kbd>shift + t</kbd> or <kbd>T</kbd> | Toggle timestamps in logs
|
||||
|<kbd>shift + f</kbd> or <kbd>F</kbd> | Toggle full-screen logs
|
||||
|<kbd>esc</kbd> | Exit full-screen logs
|
||||
|<kbd>Command</kbd>+<kbd>Space </kbd> (Mac) or </br> <kbd>Ctrl</kbd>+<kbd>Space</kbd> (Windows/Linux) | In the workflow editor, get suggestions for your workflow file.
|
||||
|<kbd>G</kbd> <kbd>F</kbd> | Go to the workflow file
|
||||
|<kbd>Shift</kbd>+<kbd>T</kbd> or <kbd>T</kbd> | Toggle timestamps in logs
|
||||
|<kbd>Shift</kbd>+<kbd>F</kbd> or <kbd>F</kbd> | Toggle full-screen logs
|
||||
|<kbd>Esc</kbd> | Exit full-screen logs
|
||||
|
||||
{% endif %}
|
||||
|
||||
@@ -195,28 +195,28 @@ For more keyboard shortcuts, see the [CodeMirror documentation](https://codemirr
|
||||
{% ifversion fpt or ghes or ghae or ghec %}
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>e</kbd> | Mark as done
|
||||
| <kbd>shift + u</kbd>| Mark as unread
|
||||
| <kbd>shift + i</kbd>| Mark as read
|
||||
| <kbd>shift + m</kbd> | Unsubscribe
|
||||
|<kbd>E</kbd> | Mark as done
|
||||
|<kbd>Shift</kbd>+<kbd>U</kbd>| Mark as unread
|
||||
|<kbd>Shift</kbd>+<kbd>I</kbd>| Mark as read
|
||||
|<kbd>Shift</kbd>+<kbd>M</kbd> | Unsubscribe
|
||||
|
||||
{% else %}
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>e</kbd> or <kbd>I</kbd> or <kbd>y</kbd> | Mark as read
|
||||
|<kbd>shift + m</kbd> | Mute thread
|
||||
|<kbd>E</kbd> or <kbd>I</kbd> or <kbd>Y</kbd> | Mark as read
|
||||
|<kbd>Shift</kbd>+<kbd>M</kbd> | Mute thread
|
||||
{% endif %}
|
||||
|
||||
## Network graph
|
||||
|
||||
| Keyboard shortcut | Description
|
||||
|-----------|------------
|
||||
|<kbd>←</kbd> or <kbd>h</kbd> | Scroll left
|
||||
|<kbd>→</kbd> or <kbd>l</kbd> | Scroll right
|
||||
|<kbd>↑</kbd> or <kbd>k</kbd> | Scroll up
|
||||
|<kbd>↓</kbd> or <kbd>j</kbd> | Scroll down
|
||||
|<kbd>shift + ←</kbd> or <kbd>shift + h</kbd> | Scroll all the way left
|
||||
|<kbd>shift + →</kbd> or <kbd>shift + l</kbd> | Scroll all the way right
|
||||
|<kbd>shift + ↑</kbd> or <kbd>shift + k</kbd> | Scroll all the way up
|
||||
|<kbd>shift + ↓</kbd> or <kbd>shift + j</kbd> | Scroll all the way down
|
||||
|<kbd>←</kbd> or <kbd>H</kbd> | Scroll left
|
||||
|<kbd>→</kbd> or <kbd>L</kbd> | Scroll right
|
||||
|<kbd>↑</kbd> or <kbd>K</kbd> | Scroll up
|
||||
|<kbd>↓</kbd> or <kbd>J</kbd> | Scroll down
|
||||
|<kbd>Shift</kbd>+<kbd>←</kbd> (Mac) or </br> <kbd>Shift</kbd>+<kbd>H</kbd> (Windows/Linux) | Scroll all the way left
|
||||
|<kbd>Shift</kbd>+<kbd>→</kbd> (Mac) or </br> <kbd>Shift</kbd>+<kbd>L</kbd> (Windows/Linux) | Scroll all the way right
|
||||
|<kbd>Shift</kbd>+<kbd>↑</kbd> (Mac) or </br> <kbd>Shift</kbd>+<kbd>K</kbd> (Windows/Linux) | Scroll all the way up
|
||||
|<kbd>Shift</kbd>+<kbd>↓</kbd> (Mac) or </br> <kbd>Shift</kbd>+<kbd>J</kbd> (Windows/Linux) | Scroll all the way down
|
||||
|
||||
@@ -30,5 +30,8 @@ We are concerned about Internet censorship, and believe that transparency on a s
|
||||
## What does it mean if we post a notice in our gov-takedowns repository?
|
||||
It means that we received the notice on the indicated date. It does *not* mean that the content was unlawful or wrong. It does *not* mean that the user identified in the notice has done anything wrong. We don't make or imply any judgment about the merit of the claims they make. We post these notices and requests only for informational purposes.
|
||||
|
||||
## Government takedowns based on violations of GitHub's Terms of Service
|
||||
In some cases, GitHub receives reports from government officials of violations of GitHub's Terms of Service. We process those violations as we would process a Terms-of-Service violation reported by anyone else. However, we notify the affected users that the report came from a government and, as with any other case, allow them the opportunity to appeal.
|
||||
|
||||
## Transparency reporting
|
||||
In addition to posting government takedown notices in our gov-takedowns repository, we report on them in our transparency report. We also track and report in our transparency report on government takedowns based on violations of GitHub's Terms of Service. We process those violations as we would process a Terms of Service violation reported by anyone else.
|
||||
In addition to posting government takedown notices in our `github/gov-takedowns` repository, we report on them in our transparency report. We also track and report in our transparency report on government takedowns based on violations of GitHub's Terms of Service.
|
||||
|
||||
@@ -18,9 +18,13 @@ shortTitle: Review installed integrations
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
4. In the left sidebar, click **Installed {% data variables.product.prodname_github_apps %}**.
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the "Integrations" section of the sidebar, click **{% octicon "apps" aria-label="The apps icon" %} {% data variables.product.prodname_github_apps %}**.
|
||||
{% elsif ghae or ghes < 3.4 %}
|
||||
1. In the left sidebar, click **Installed {% data variables.product.prodname_github_apps %}**.
|
||||

|
||||
5. Next to the {% data variables.product.prodname_github_app %} you'd like to review, click **Configure**.
|
||||
{% endif %}
|
||||
2. Next to the {% data variables.product.prodname_github_app %} you'd like to review, click **Configure**.
|
||||

|
||||
6. Review the {% data variables.product.prodname_github_app %}'s permissions and repository access.
|
||||

|
||||
|
||||
@@ -40,8 +40,8 @@ To further support your team's collaboration abilities, you can upgrade to {% da
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% ifversion fpt or ghec %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
{% data reusables.organizations.invite-teams-or-people %}
|
||||
5. In the search field, start typing the name of person you want to invite, then click a name in the list of matches.
|
||||

|
||||
|
||||
@@ -28,9 +28,13 @@ When you remove a collaborator from a repository in your organization, the colla
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
{% elsif ghes < 3.4 or ghae %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% endif %}
|
||||
{% data reusables.organizations.invite-teams-or-people %}
|
||||
5. In the search field, start typing the name of the person to invite, then click a name in the list of matches.
|
||||
1. In the search field, start typing the name of the person to invite, then click a name in the list of matches.
|
||||

|
||||
6. Under "Choose a role", select the repository role to assign the person, then click **Add NAME to REPOSITORY**.
|
||||

|
||||
|
||||
@@ -23,11 +23,14 @@ When you disable project boards, you will no longer see project board informatio
|
||||
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
4. Decide whether to disable organization-wide project boards, disable repository project boards in the organization, or both. Then, under "Projects":
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "table" aria-label="The table icon" %} Projects**.
|
||||
{% endif %}
|
||||
1. Decide whether to disable organization-wide project boards, disable repository project boards in the organization, or both. Then, under "Projects":
|
||||
- To disable organization-wide project boards, unselect **Enable projects for the organization**.
|
||||
- To disable repository project boards in the organization, unselect **Enable projects for all repositories**.
|
||||

|
||||
5. Click **Save**.
|
||||
1. Click **Save**.
|
||||
|
||||
{% data reusables.organizations.disable_project_board_results %}
|
||||
|
||||
|
||||
@@ -9,16 +9,24 @@ versions:
|
||||
ghae: '*'
|
||||
shortTitle: Integrate Jira
|
||||
---
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
2. In the left sidebar under **Organization settings**, click the name of your organization.
|
||||

|
||||
3. In the left sidebar under **Developer settings**, click **OAuth applications**.
|
||||
{% ifversion ghes > 3.3 or ghae-issue-5658 %}
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
1. In the left sidebar, select **{% octicon "code" aria-label="The code icon" %} Developer settings**, then click **OAuth Apps**.
|
||||

|
||||
4. Click **Register a new application**.
|
||||
5. Under **Application name**, type "Jira".
|
||||
6. Under **Homepage URL**, type the full URL to your Jira instance.
|
||||
7. Under **Authorization callback URL**, type the full URL to your Jira instance.
|
||||
8. Click **Register application**.
|
||||
1. Click **New OAuth App**.
|
||||
{% elsif ghes < 3.4 or ghae %}
|
||||
{% data reusables.user_settings.access_settings %}
|
||||
1. In the left sidebar under **Organization settings**, click the name of your organization.
|
||||

|
||||
1. In the left sidebar under **Developer settings**, click **OAuth applications**.
|
||||

|
||||
1. Click **Register a new application**.
|
||||
{% endif %}
|
||||
1. Under **Application name**, type "Jira".
|
||||
2. Under **Homepage URL**, type the full URL to your Jira instance.
|
||||
3. Under **Authorization callback URL**, type the full URL to your Jira instance.
|
||||
4. Click **Register application**.
|
||||

|
||||
9. Under **Organization owned applications**, note the "Client ID" and "Client Secret" values.
|
||||

|
||||
|
||||
@@ -24,14 +24,13 @@ Organization owners can schedule a reminder for one or more teams in their organ
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.add-reminder %}
|
||||
{% data reusables.reminders.authorize-slack %}
|
||||
{% data reusables.reminders.slack-channel %}
|
||||
{% data reusables.reminders.days-dropdown %}
|
||||
{% data reusables.reminders.times-dropdowns %}
|
||||
{% data reusables.reminders.tracked-repos %}
|
||||
11. Under "Filter by team assigned to review code", click the **Add a team** dropdown and choose one or more teams. You can add up to 100 teams. If the team you select doesn't have access to the "Tracked repositories" selected above, you won't be able to create the scheduled reminder.
|
||||
1. Under "Filter by team assigned to review code", click the **Add a team** dropdown and choose one or more teams. You can add up to 100 teams. If the team you select doesn't have access to the "Tracked repositories" selected above, you won't be able to create the scheduled reminder.
|
||||

|
||||
{% data reusables.reminders.ignore-drafts %}
|
||||
{% data reusables.reminders.no-review-requests %}
|
||||
@@ -48,7 +47,6 @@ Organization owners can schedule a reminder for one or more teams in their organ
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.edit-existing %}
|
||||
{% data reusables.reminders.edit-page %}
|
||||
{% data reusables.reminders.update-buttons %}
|
||||
@@ -57,7 +55,6 @@ Organization owners can schedule a reminder for one or more teams in their organ
|
||||
{% data reusables.profile.access_org %}
|
||||
{% data reusables.profile.org_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.delete %}
|
||||
|
||||
## Further reading
|
||||
|
||||
@@ -65,3 +65,7 @@ The invited person will receive an invitation email asking them to become a bill
|
||||

|
||||
6. Type the username or email address of the person you want to add and click **Send invitation**.
|
||||

|
||||
|
||||
## Further reading
|
||||
|
||||
- "[Inviting people to manage your enterprise](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise)"{% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation{% endif %}
|
||||
@@ -57,8 +57,12 @@ Any team members that have set their status to "Busy" will not be selected for r
|
||||
{% data reusables.user_settings.access_org %}
|
||||
{% data reusables.organizations.specific_team %}
|
||||
{% data reusables.organizations.team_settings %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
|
||||
{% else %}
|
||||
1. In the left sidebar, click **Code review**
|
||||

|
||||
{% endif %}
|
||||
1. Select **Only notify requested team members.**
|
||||

|
||||
1. Click **Save changes**.
|
||||
@@ -69,8 +73,12 @@ Any team members that have set their status to "Busy" will not be selected for r
|
||||
{% data reusables.user_settings.access_org %}
|
||||
{% data reusables.organizations.specific_team %}
|
||||
{% data reusables.organizations.team_settings %}
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
|
||||
{% else %}
|
||||
1. In the left sidebar, click **Code review**
|
||||

|
||||
{% endif %}
|
||||
1. Select **Enable auto assignment**.
|
||||

|
||||
1. Under "How many team members should be assigned to review?", use the drop-down menu and choose a number of reviewers to be assigned to each pull request.
|
||||
|
||||
@@ -27,7 +27,6 @@ Team maintainers and organization owners can set scheduled reminders for any pul
|
||||
{% data reusables.organizations.specific_team %}
|
||||
{% data reusables.organizations.team_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.add-reminder %}
|
||||
{% data reusables.reminders.authorize-slack %}
|
||||
{% data reusables.reminders.slack-channel %}
|
||||
@@ -51,7 +50,6 @@ Team maintainers and organization owners can set scheduled reminders for any pul
|
||||
{% data reusables.organizations.specific_team %}
|
||||
{% data reusables.organizations.team_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.edit-existing %}
|
||||
{% data reusables.reminders.edit-page %}
|
||||
{% data reusables.reminders.update-buttons %}
|
||||
@@ -62,7 +60,6 @@ Team maintainers and organization owners can set scheduled reminders for any pul
|
||||
{% data reusables.organizations.specific_team %}
|
||||
{% data reusables.organizations.team_settings %}
|
||||
{% data reusables.reminders.scheduled-reminders %}
|
||||

|
||||
{% data reusables.reminders.delete %}
|
||||
|
||||
## Further reading
|
||||
|
||||
@@ -26,15 +26,14 @@ This guide will lead you through creating a user site at `username.github.io`.
|
||||
1. Enter `username.github.io` as the repository name. Replace `username` with your {% data variables.product.prodname_dotcom %} username. For example, if your username is `octocat`, the repository name should be `octocat.github.io`.
|
||||

|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
1. In the left sidebar, click **Pages**.
|
||||

|
||||
{% data reusables.pages.sidebar-pages %}
|
||||
1. Click **Choose a theme**.
|
||||

|
||||
1. The Theme Chooser will open. Browse the available themes, then click **Select theme** to select a theme. It's easy to change your theme later, so if you're not sure, just choose one for now.
|
||||
2. The Theme Chooser will open. Browse the available themes, then click **Select theme** to select a theme. It's easy to change your theme later, so if you're not sure, just choose one for now.
|
||||

|
||||
1. After you select a theme, your repository's `README.md` file will open in the file editor. The `README.md` file is where you will write the content for your site. You can edit the file or keep the default content for now.
|
||||
1. When you are done editing the file, click **Commit changes**.
|
||||
1. Visit `username.github.io` to view your new website. **Note:** It can take up to 20 minutes for changes to your site to publish after you push the changes to {% data variables.product.product_name %}.
|
||||
3. After you select a theme, your repository's `README.md` file will open in the file editor. The `README.md` file is where you will write the content for your site. You can edit the file or keep the default content for now.
|
||||
4. When you are done editing the file, click **Commit changes**.
|
||||
5. Visit `username.github.io` to view your new website. **Note:** It can take up to 20 minutes for changes to your site to publish after you push the changes to {% data variables.product.product_name %}.
|
||||
|
||||
## Changing the title and description
|
||||
|
||||
|
||||
@@ -21,9 +21,13 @@ If you use Zendesk to track user-reported tickets, for example, you can referenc
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
3. In the left sidebar, click **Autolink references**.
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the "Integrations" section of the sidebar, click **{% octicon "cross-reference" aria-label="The cross-reference icon" %} Autolink references**.
|
||||
{% else %}
|
||||
1. In the left sidebar, click **Autolink references**.
|
||||

|
||||
4. Click **Add autolink reference**.
|
||||
{% endif %}
|
||||
1. Click **Add autolink reference**.
|
||||

|
||||
5. Under "Reference prefix", type a short, meaningful prefix you want collaborators to use to generate autolinks for the external resource.
|
||||

|
||||
|
||||
@@ -28,7 +28,7 @@ For more information about repository roles, see "[Permission levels for a user
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
4. Under "Manage access", in the search field, start typing the name of the team or person you'd like to find.
|
||||

|
||||
|
||||
@@ -44,7 +44,7 @@ For more information about repository roles, see "[Permission levels for a user
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
{% data reusables.organizations.invite-teams-or-people %}
|
||||
5. In the search field, start typing the name of the team or person to invite, then click a name in the list of matches.
|
||||

|
||||
@@ -55,7 +55,7 @@ For more information about repository roles, see "[Permission levels for a user
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-settings %}
|
||||
{% data reusables.repositories.navigate-to-manage-access %}
|
||||
{% data reusables.repositories.click-collaborators-teams %}
|
||||
4. Under "Manage access", find the team or person whose access you'd like to remove, then click {% octicon "trash" aria-label="The trash icon" %}.
|
||||

|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 527 KiB |
6
data/features/github-actions-in-dependency-graph.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
# Reference: #5813.
|
||||
# Documentation for GitHub Actions workflow dependencies appearing in the dependency graph
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghae: 'issue-5813'
|
||||
ghec: '*'
|
||||
@@ -40,6 +40,7 @@ adopting_github_actions_for_your_enterprise:
|
||||
title: 'Adopt GitHub Actions for your enterprise'
|
||||
description: 'Learn how to plan and implement a roll out of {% data variables.product.prodname_actions %} in your enterprise.'
|
||||
guides:
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises
|
||||
- /actions/learn-github-actions/understanding-github-actions
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions
|
||||
|
||||
@@ -42,6 +42,7 @@ adopting_github_actions_for_your_enterprise:
|
||||
title: 'Adopt GitHub Actions for your enterprise'
|
||||
description: 'Learn how to plan and implement a roll out of {% data variables.product.prodname_actions %} in your enterprise.'
|
||||
guides:
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises
|
||||
- /actions/learn-github-actions/understanding-github-actions
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise
|
||||
- /admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
date: '2020-08-11'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability was identified in GitHub Pages that could allow an attacker to execute commands as part building a GitHub Pages site. This issue was due to an outdated and vulnerable dependency used in the Pages build process. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. To mitigate this vulnerability, Kramdown has been updated to address CVE-2020-14001. {% comment %} https://github.com/github/pages/pull/2836, https://github.com/github/pages/pull/2827 {% endcomment %}'
|
||||
- '**HIGH:** An attacker could inject a malicious argument into a Git sub-command when executed on GitHub Enterprise Server. This could allow an attacker to overwrite arbitrary files with partially user-controlled content and potentially execute arbitrary commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to access repositories within the GitHub Enterprise Server instance. However, due to other protections in place, we could not identify a way to actively exploit this vulnerability. This vulnerability was reported through the GitHub Security Bug Bounty program. {% comment %} https://github.com/github/github/pull/151097 {% endcomment %}'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability was identified in GitHub Pages that could allow an attacker to execute commands as part building a GitHub Pages site. This issue was due to an outdated and vulnerable dependency used in the Pages build process. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. To mitigate this vulnerability, Kramdown has been updated to address CVE-2020-14001. {% comment %} https://github.com/github/pages/pull/2836, https://github.com/github/pages/pull/2827 {% endcomment %}'
|
||||
- '**High:** An attacker could inject a malicious argument into a Git sub-command when executed on GitHub Enterprise Server. This could allow an attacker to overwrite arbitrary files with partially user-controlled content and potentially execute arbitrary commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to access repositories within the GitHub Enterprise Server instance. However, due to other protections in place, we could not identify a way to actively exploit this vulnerability. This vulnerability was reported through the GitHub Security Bug Bounty program. {% comment %} https://github.com/github/github/pull/151097 {% endcomment %}'
|
||||
- 'Packages have been updated to the latest security versions. {% comment %} https://github.com/github/enterprise2/pull/21811, https://github.com/github/enterprise2/pull/21700 {% endcomment %}'
|
||||
bugs:
|
||||
- 'A Consul configuration error prevented some background jobs from being processed on standalone instances. {% comment %} https://github.com/github/enterprise2/pull/21464 {% endcomment %}'
|
||||
|
||||
@@ -2,7 +2,7 @@ date: '2020-08-26'
|
||||
sections:
|
||||
security_fixes:
|
||||
- >-
|
||||
**CRITICAL:** A remote code execution vulnerability was identified in GitHub Pages that could be exploited when building a GitHub Pages site. User-controlled configuration of the underlying parsers used by GitHub Pages were not sufficiently restricted and made it possible to execute commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. The underlying issues contributing to this vulnerability were identified both internally and through the GitHub Security Bug Bounty program. We have issued CVE-2020-10518. {% comment %} https://github.com/github/pages/pull/2883, https://github.com/github/pages/pull/2902, https://github.com/github/pages/pull/2894, https://github.com/github/pages/pull/2877, https://github.com/github/pages-gem/pull/700,
|
||||
{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability was identified in GitHub Pages that could be exploited when building a GitHub Pages site. User-controlled configuration of the underlying parsers used by GitHub Pages were not sufficiently restricted and made it possible to execute commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. The underlying issues contributing to this vulnerability were identified both internally and through the GitHub Security Bug Bounty program. We have issued CVE-2020-10518. {% comment %} https://github.com/github/pages/pull/2883, https://github.com/github/pages/pull/2902, https://github.com/github/pages/pull/2894, https://github.com/github/pages/pull/2877, https://github.com/github/pages-gem/pull/700,
|
||||
https://github.com/github/pages/pull/2890, https://github.com/github/pages/pull/2898, https://github.com/github/pages/pull/2909, https://github.com/github/pages/pull/2891, https://github.com/github/pages/pull/2884, https://github.com/github/pages/pull/2889 {% endcomment %}
|
||||
- '**MEDIUM:** An improper access control vulnerability was identified that allowed authenticated users of the instance to determine the names of unauthorized private repositories given their numerical IDs. This vulnerability did not allow unauthorized access to any repository content besides the name. This vulnerability affected all versions of GitHub Enterprise Server prior to 2.22 and has been assigned [CVE-2020-10517](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10517). The vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com). {% comment %} https://github.com/github/github/pull/151987, https://github.com/github/github/pull/151713 {% endcomment %}'
|
||||
- 'Packages have been updated to the latest security versions. {% comment %} https://github.com/github/enterprise2/pull/21852, https://github.com/github/enterprise2/pull/21828, https://github.com/github/enterprise2/pull/22153, https://github.com/github/enterprise2/pull/21920, https://github.com/github/enterprise2/pull/22215, https://github.com/github/enterprise2/pull/22190 {% endcomment %}'
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
date: '2020-08-11'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability was identified in GitHub Pages that could allow an attacker to execute commands as part building a GitHub Pages site. This issue was due to an outdated and vulnerable dependency used in the Pages build process. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. To mitigate this vulnerability, Kramdown has been updated to address CVE-2020-14001. {% comment %} https://github.com/github/pages/pull/2835, https://github.com/github/pages/pull/2827 {% endcomment %}'
|
||||
- '**HIGH:** High: An attacker could inject a malicious argument into a Git sub-command when executed on GitHub Enterprise Server. This could allow an attacker to overwrite arbitrary files with partially user-controlled content and potentially execute arbitrary commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to access repositories within the GHES instance. However, due to other protections in place, we could not identify a way to actively exploit this vulnerability. This vulnerability was reported through the GitHub Security Bug Bounty program. {% comment %} https://github.com/github/github/pull/150936, https://github.com/github/github/pull/150634 {% endcomment %}'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability was identified in GitHub Pages that could allow an attacker to execute commands as part building a GitHub Pages site. This issue was due to an outdated and vulnerable dependency used in the Pages build process. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. To mitigate this vulnerability, Kramdown has been updated to address CVE-2020-14001. {% comment %} https://github.com/github/pages/pull/2835, https://github.com/github/pages/pull/2827 {% endcomment %}'
|
||||
- '**High:** High: An attacker could inject a malicious argument into a Git sub-command when executed on GitHub Enterprise Server. This could allow an attacker to overwrite arbitrary files with partially user-controlled content and potentially execute arbitrary commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to access repositories within the GHES instance. However, due to other protections in place, we could not identify a way to actively exploit this vulnerability. This vulnerability was reported through the GitHub Security Bug Bounty program. {% comment %} https://github.com/github/github/pull/150936, https://github.com/github/github/pull/150634 {% endcomment %}'
|
||||
- 'Packages have been updated to the latest security versions. {% comment %} https://github.com/github/enterprise2/pull/21679, https://github.com/github/enterprise2/pull/21542, https://github.com/github/enterprise2/pull/21812, https://github.com/github/enterprise2/pull/21700 {% endcomment %}'
|
||||
bugs:
|
||||
- 'A Consul configuration error prevented some background jobs from being processed on standalone instances. {% comment %} https://github.com/github/enterprise2/pull/21463 {% endcomment %}'
|
||||
|
||||
@@ -2,9 +2,9 @@ date: '2020-08-26'
|
||||
sections:
|
||||
security_fixes:
|
||||
- >-
|
||||
**CRITICAL:** A remote code execution vulnerability was identified in GitHub Pages that could be exploited when building a GitHub Pages site. User-controlled configuration of the underlying parsers used by GitHub Pages were not sufficiently restricted and made it possible to execute commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. The underlying issues contributing to this vulnerability were identified both internally and through the GitHub Security Bug Bounty program. We have issued CVE-2020-10518. {% comment %} https://github.com/github/pages/pull/2882, https://github.com/github/pages/pull/2902, https://github.com/github/pages/pull/2894, https://github.com/github/pages/pull/2877, https://github.com/github/pages-gem/pull/700,
|
||||
{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability was identified in GitHub Pages that could be exploited when building a GitHub Pages site. User-controlled configuration of the underlying parsers used by GitHub Pages were not sufficiently restricted and made it possible to execute commands on the GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the GitHub Enterprise Server instance. This vulnerability affected all versions of GitHub Enterprise Server. The underlying issues contributing to this vulnerability were identified both internally and through the GitHub Security Bug Bounty program. We have issued CVE-2020-10518. {% comment %} https://github.com/github/pages/pull/2882, https://github.com/github/pages/pull/2902, https://github.com/github/pages/pull/2894, https://github.com/github/pages/pull/2877, https://github.com/github/pages-gem/pull/700,
|
||||
https://github.com/github/pages/pull/2889, https://github.com/github/pages/pull/2899, https://github.com/github/pages/pull/2903, https://github.com/github/pages/pull/2890, https://github.com/github/pages/pull/2891, https://github.com/github/pages/pull/2884 {% endcomment %}
|
||||
- '**MEDIUM:** An improper access control vulnerability was identified that allowed authenticated users of the instance to determine the names of unauthorized private repositories given their numerical IDs. This vulnerability did not allow unauthorized access to any repository content besides the name. This vulnerability affected all versions of GitHub Enterprise Server prior to 2.22 and has been assigned [CVE-2020-10517](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10517). The vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com). {% comment %} https://github.com/github/github/pull/151986, https://github.com/github/github/pull/151713 {% endcomment %}'
|
||||
- '**Medium:** An improper access control vulnerability was identified that allowed authenticated users of the instance to determine the names of unauthorized private repositories given their numerical IDs. This vulnerability did not allow unauthorized access to any repository content besides the name. This vulnerability affected all versions of GitHub Enterprise Server prior to 2.22 and has been assigned [CVE-2020-10517](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10517). The vulnerability was reported via the [GitHub Bug Bounty program](https://bounty.github.com). {% comment %} https://github.com/github/github/pull/151986, https://github.com/github/github/pull/151713 {% endcomment %}'
|
||||
- 'Packages have been updated to the latest security versions. {% comment %} https://github.com/github/enterprise2/pull/21853, https://github.com/github/enterprise2/pull/21828, https://github.com/github/enterprise2/pull/22154, https://github.com/github/enterprise2/pull/21920, https://github.com/github/enterprise2/pull/22216, https://github.com/github/enterprise2/pull/22190 {% endcomment %}'
|
||||
bugs:
|
||||
- 'A message was not logged when the ghe-config-apply process had finished running ghe-es-auto-expand. {% comment %} https://github.com/github/enterprise2/pull/22178, https://github.com/github/enterprise2/pull/22171 {% endcomment %}'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
date: '2021-12-13'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '**December 17, 2021 update**: The fixes in place for this release also mitigate [CVE-2021-45046](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046), which was published after this release. No additional upgrade for {% data variables.product.prodname_ghe_server %} is required to mitigate both CVE-2021-44228 and CVE-2021-45046.'
|
||||
known_issues:
|
||||
- On a freshly set up {% data variables.product.prodname_ghe_server %} without any users, an attacker could create the first admin user.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
date: '2021-12-13'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '**December 17, 2021 update**: The fixes in place for this release also mitigate [CVE-2021-45046](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046), which was published after this release. No additional upgrade for {% data variables.product.prodname_ghe_server %} is required to mitigate both CVE-2021-44228 and CVE-2021-45046.'
|
||||
known_issues:
|
||||
- The {% data variables.product.prodname_registry %} npm registry no longer returns a time value in metadata responses. This was done to allow for substantial performance improvements. We continue to have all the data necessary to return a time value as part of the metadata response and will resume returning this value in the future once we have solved the existing performance issues.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
date: '2021-12-13'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '**December 17, 2021 update**: The fixes in place for this release also mitigate [CVE-2021-45046](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046), which was published after this release. No additional upgrade for {% data variables.product.prodname_ghe_server %} is required to mitigate both CVE-2021-44228 and CVE-2021-45046.'
|
||||
known_issues:
|
||||
- On a freshly set up {% data variables.product.prodname_ghe_server %} without any users, an attacker could create the first admin user.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
date: '2021-12-13'
|
||||
sections:
|
||||
security_fixes:
|
||||
- '**CRITICAL:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '{% octicon "alert" aria-label="The alert icon" %} **Critical:** A remote code execution vulnerability in the Log4j library, identified as [CVE-2021-44228](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228), affected all versions of {% data variables.product.prodname_ghe_server %} prior to 3.3.1. The Log4j library is used in an open source service running on the {% data variables.product.prodname_ghe_server %} instance. This vulnerability was fixed in {% data variables.product.prodname_ghe_server %} versions 3.0.22, 3.1.14, 3.2.6, and 3.3.1. For more information, please see [this post](https://github.blog/2021-12-13-githubs-response-to-log4j-vulnerability-cve-2021-44228/) on the GitHub Blog.'
|
||||
- '**December 17, 2021 update**: The fixes in place for this release also mitigate [CVE-2021-45046](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45046), which was published after this release. No additional upgrade for {% data variables.product.prodname_ghe_server %} is required to mitigate both CVE-2021-44228 and CVE-2021-45046.'
|
||||
known_issues:
|
||||
- After upgrading to {% data variables.product.prodname_ghe_server %} 3.3, {% data variables.product.prodname_actions %} may fail to start automatically. To resolve this issue, connect to the appliance via SSH and run the `ghe-actions-start` command.
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
|
||||
{% else %}
|
||||
1. In the Settings sidebar, click **Audit log**.
|
||||

|
||||
{% endif %}
|
||||
|
||||
@@ -1,2 +1,6 @@
|
||||
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
|
||||
3. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
|
||||
{% else %}
|
||||
3. In the left sidebar, click **Audit log**.
|
||||

|
||||
{% endif %}
|
||||
|
||||
6
data/reusables/billing/license-statuses.md
Normal file
@@ -0,0 +1,6 @@
|
||||
{% ifversion ghec %}
|
||||
If your license includes {% data variables.product.prodname_vss_ghe %}, you can identify whether a user account on {% data variables.product.prodname_dotcom_the_website %} has successfully matched with a {% data variables.product.prodname_vs %} subscriber by downloading the CSV file that contains additional license details. The license status will be one of the following.
|
||||
- "Matched": The user account on {% data variables.product.prodname_dotcom_the_website %} is linked with a {% data variables.product.prodname_vs %} subscriber.
|
||||
- "Pending Invitation": An invitation was sent to a {% data variables.product.prodname_vs %} subscriber, but the subscriber has not accepted the invitation.
|
||||
- Blank: There is no {% data variables.product.prodname_vs %} association to consider for the user account on {% data variables.product.prodname_dotcom_the_website %}.
|
||||
{% endif %}
|
||||