Merge branch 'main' into patch-2
This commit is contained in:
@@ -21,15 +21,16 @@
|
||||
"davidanson.vscode-markdownlint",
|
||||
"bierner.markdown-preview-github-styles",
|
||||
"yzhang.markdown-all-in-one",
|
||||
"streetsidesoftware.code-spell-checker"
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
"hubwriter.open-reusable"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
"forwardPorts": [4000],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "npm ci && npm run build",
|
||||
|
||||
"postCreateCommand": "npm ci && npm run build",
|
||||
|
||||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "node"
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ async function run() {
|
||||
const featureID = findFieldID('Feature', data)
|
||||
const contributorTypeID = findFieldID('Contributor type', data)
|
||||
const sizeTypeID = findFieldID('Size', data)
|
||||
const authorID = findFieldID('Author', data)
|
||||
const authorID = findFieldID('Contributor', data)
|
||||
|
||||
// Get the ID of the single select values that we want to set
|
||||
const readyForReviewID = findSingleSelectID('Ready for review', 'Status', data)
|
||||
|
||||
@@ -60,7 +60,7 @@ async function run() {
|
||||
const featureID = findFieldID('Feature', data)
|
||||
const contributorTypeID = findFieldID('Contributor type', data)
|
||||
const sizeTypeID = findFieldID('Size', data)
|
||||
const authorID = findFieldID('Author', data)
|
||||
const authorID = findFieldID('Contributor', data)
|
||||
|
||||
// Get the ID of the single select values that we want to set
|
||||
const readyForReviewID = findSingleSelectID('Ready for review', 'Status', data)
|
||||
|
||||
BIN
.vscode/open-reusable-1.3.0.vsix
vendored
Normal file
BIN
.vscode/open-reusable-1.3.0.vsix
vendored
Normal file
Binary file not shown.
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -2,4 +2,6 @@
|
||||
"files.exclude": {
|
||||
"**/translations": true
|
||||
}
|
||||
}
|
||||
"workbench.editor.enablePreview": false,
|
||||
"workbench.editor.enablePreviewFromQuickOpen": false
|
||||
}
|
||||
|
||||
BIN
assets/images/help/projects/unsaved-changes.png
Normal file
BIN
assets/images/help/projects/unsaved-changes.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 122 KiB |
BIN
assets/images/help/repository/PR-required-check-skipped.png
Normal file
BIN
assets/images/help/repository/PR-required-check-skipped.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 110 KiB |
@@ -24,6 +24,22 @@ const interactiveAlternatives: Record<string, { href: string }> = {
|
||||
'/actions/automating-builds-and-tests/building-and-testing-python': {
|
||||
href: '/actions/automating-builds-and-tests/building-and-testing-nodejs-or-python?langId=python',
|
||||
},
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-nodejs-project-for-codespaces':
|
||||
{
|
||||
href: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces?langId=nodejs',
|
||||
},
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-dotnet-project-for-codespaces':
|
||||
{
|
||||
href: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces?langId=dotnet',
|
||||
},
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-java-project-for-codespaces':
|
||||
{
|
||||
href: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces?langId=java',
|
||||
},
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-python-project-for-codespaces':
|
||||
{
|
||||
href: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces?langId=py',
|
||||
},
|
||||
}
|
||||
|
||||
export const ArticlePage = () => {
|
||||
|
||||
@@ -2,14 +2,21 @@ import React, { createContext, useContext, useState } from 'react'
|
||||
import { CodeLanguage, PlaygroundArticleT } from 'components/playground/types'
|
||||
import { useRouter } from 'next/router'
|
||||
|
||||
import jsArticle from 'components/playground/content/building-and-testing/nodejs'
|
||||
import pyArticle from 'components/playground/content/building-and-testing/python'
|
||||
import actionsJsArticle from 'components/playground/content/actions/guides/building-and-testing-nodejs-or-python/nodejs'
|
||||
import actionsPyArticle from 'components/playground/content/actions/guides/building-and-testing-nodejs-or-python/python'
|
||||
import codespacesJsArticle from 'components/playground/content/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces/nodejs'
|
||||
import codespacesPyArticle from 'components/playground/content/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces/python'
|
||||
import codespacesNetArticle from 'components/playground/content/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces/dotnet'
|
||||
import codespacesJavaArticle from 'components/playground/content/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces/java'
|
||||
|
||||
const articles = [jsArticle, pyArticle]
|
||||
const articlesByLangId = articles.reduce((obj, item) => {
|
||||
obj[item.codeLanguageId] = item
|
||||
return obj
|
||||
}, {} as Record<string, PlaygroundArticleT | undefined>)
|
||||
const articles = [
|
||||
actionsJsArticle,
|
||||
actionsPyArticle,
|
||||
codespacesJsArticle,
|
||||
codespacesPyArticle,
|
||||
codespacesJavaArticle,
|
||||
codespacesNetArticle,
|
||||
]
|
||||
|
||||
const codeLanguages: Array<CodeLanguage> = [
|
||||
{
|
||||
@@ -20,6 +27,14 @@ const codeLanguages: Array<CodeLanguage> = [
|
||||
id: 'py',
|
||||
label: 'Python',
|
||||
},
|
||||
{
|
||||
id: 'dotnet',
|
||||
label: 'C#',
|
||||
},
|
||||
{
|
||||
id: 'java',
|
||||
label: 'Java',
|
||||
},
|
||||
]
|
||||
|
||||
type PlaygroundContextT = {
|
||||
@@ -48,11 +63,18 @@ export const PlaygroundContextProvider = (props: { children: React.ReactNode })
|
||||
const router = useRouter()
|
||||
const [activeSectionIndex, setActiveSectionIndex] = useState(0)
|
||||
const [scrollToSection, setScrollToSection] = useState<number>()
|
||||
const { langId } = router.query
|
||||
const currentLanguage = codeLanguages.find(({ id }) => id === langId) || codeLanguages[0]
|
||||
const availableLanguages = codeLanguages.filter(({ id }) => !!articlesByLangId[id])
|
||||
const path = router.asPath.split('?')[0]
|
||||
const relevantArticles = articles.filter(({ slug }) => slug === path)
|
||||
|
||||
const article = articlesByLangId[currentLanguage.id]
|
||||
const { langId } = router.query
|
||||
const availableLanguageIds = relevantArticles.map(({ codeLanguageId }) => codeLanguageId)
|
||||
const currentLanguage =
|
||||
codeLanguages.find(({ id }) => id === langId) ||
|
||||
(codeLanguages.find(({ id }) => id === availableLanguageIds[0]) as CodeLanguage)
|
||||
|
||||
const article = relevantArticles.find(
|
||||
({ codeLanguageId }) => codeLanguageId === currentLanguage?.id
|
||||
)
|
||||
|
||||
const context = {
|
||||
activeSectionIndex,
|
||||
@@ -60,7 +82,7 @@ export const PlaygroundContextProvider = (props: { children: React.ReactNode })
|
||||
scrollToSection,
|
||||
setScrollToSection,
|
||||
currentLanguage,
|
||||
codeLanguages: availableLanguages,
|
||||
codeLanguages: codeLanguages.filter(({ id }) => availableLanguageIds.includes(id)),
|
||||
article,
|
||||
}
|
||||
|
||||
|
||||
94
components/playground/PlaygroundArticlePage.tsx
Normal file
94
components/playground/PlaygroundArticlePage.tsx
Normal file
@@ -0,0 +1,94 @@
|
||||
import { GetServerSideProps } from 'next'
|
||||
import { BeakerIcon, ZapIcon } from '@primer/octicons-react'
|
||||
|
||||
import { MainContextT, MainContext, getMainContext } from 'components/context/MainContext'
|
||||
|
||||
import {
|
||||
PlaygroundContextProvider,
|
||||
usePlaygroundContext,
|
||||
} from 'components/context/PlaygroundContext'
|
||||
import { PlaygroundArticle } from 'components/playground/PlaygroundArticle'
|
||||
|
||||
import { Editor } from 'components/playground/editor/Editor'
|
||||
import { DefaultLayout } from 'components/DefaultLayout'
|
||||
import { CodeLanguagePicker } from 'components/playground/CodeLanguagePicker'
|
||||
import { Link } from 'components/Link'
|
||||
import { useRouter } from 'next/router'
|
||||
import { Callout } from 'components/ui/Callout'
|
||||
import { GenericError } from 'components/GenericError'
|
||||
|
||||
type Props = {
|
||||
mainContext: MainContextT
|
||||
}
|
||||
export default function PlaygroundArticlePage({ mainContext }: Props) {
|
||||
return (
|
||||
<MainContext.Provider value={mainContext}>
|
||||
<DefaultLayout>
|
||||
<PlaygroundContextProvider>
|
||||
<PageInner />
|
||||
</PlaygroundContextProvider>
|
||||
</DefaultLayout>
|
||||
</MainContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
function PageInner() {
|
||||
const router = useRouter()
|
||||
const { article } = usePlaygroundContext()
|
||||
|
||||
if (!article) {
|
||||
return <GenericError />
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="p-responsive my-5 mx-auto" style={{ maxWidth: 1600, minWidth: 768 }}>
|
||||
<div className="d-flex">
|
||||
<article className="col-6 ml-lg-3 mr-3">
|
||||
<Callout variant="info">
|
||||
<p className="d-flex">
|
||||
<span className="mr-3 mt-1">
|
||||
<BeakerIcon size={18} />
|
||||
</span>
|
||||
<span>
|
||||
You've found one of our experimental articles! Have ideas or feedback for how we can
|
||||
further improve this article? Let us know{' '}
|
||||
<Link href="https://github.com/github/docs/discussions/9369" target="_blank">
|
||||
in the discussion
|
||||
</Link>
|
||||
.
|
||||
</span>
|
||||
</p>
|
||||
</Callout>
|
||||
<PlaygroundArticle />
|
||||
</article>
|
||||
|
||||
<div className="col-6">
|
||||
<div className="fix position-sticky mt-3" style={{ top: '6.5em' }}>
|
||||
<div className="d-flex flex-justify-between flex-items-center mb-3">
|
||||
<CodeLanguagePicker variant="tabs" />
|
||||
<div className="flash">
|
||||
<ZapIcon className="mr-2" />
|
||||
<Link href={`/${router.locale}${article.originalArticle}`}>
|
||||
Switch to non-interactive article
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Editor article={article} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export const getServerSideProps: GetServerSideProps<Props> = async (context) => {
|
||||
const req = context.req as any
|
||||
const res = context.res as any
|
||||
|
||||
return {
|
||||
props: {
|
||||
mainContext: getMainContext(req, res),
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ const article: PlaygroundArticleT = {
|
||||
shortTitle: 'Build & test Node.js',
|
||||
topics: ['CI', 'Node', 'JavaScript'],
|
||||
type: 'tutorial',
|
||||
slug: 'building-and-testing-nodejs',
|
||||
slug: '/actions/automating-builds-and-tests/building-and-testing-nodejs-or-python',
|
||||
originalArticle: '/actions/automating-builds-and-tests/building-and-testing-nodejs',
|
||||
codeLanguageId: 'nodejs',
|
||||
intro: dedent`
|
||||
@@ -6,7 +6,7 @@ const article: PlaygroundArticleT = {
|
||||
shortTitle: 'Build & test Python',
|
||||
topics: ['CI', 'Python'],
|
||||
type: 'tutorial',
|
||||
slug: 'building-and-testing-python',
|
||||
slug: '/actions/automating-builds-and-tests/building-and-testing-nodejs-or-python',
|
||||
originalArticle: '/actions/automating-builds-and-tests/building-and-testing-python',
|
||||
codeLanguageId: 'py',
|
||||
intro: dedent`
|
||||
@@ -0,0 +1,304 @@
|
||||
import dedent from 'ts-dedent'
|
||||
import { PlaygroundArticleT } from 'components/playground/types'
|
||||
|
||||
const article: PlaygroundArticleT = {
|
||||
title: 'Add a dev container to your project',
|
||||
shortTitle: 'C# Codespaces',
|
||||
topics: ['Codespaces', 'Developer', 'Organization'],
|
||||
type: 'tutorial',
|
||||
slug: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces',
|
||||
originalArticle:
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-dotnet-project-for-codespaces',
|
||||
codeLanguageId: 'dotnet',
|
||||
intro: dedent`
|
||||
This guide shows you how to add a [dev container](/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project) to define the Codespaces configuration for your **C# (.NET)** project. For other project languages, click the language button to the right.
|
||||
`,
|
||||
prerequisites: dedent`
|
||||
- You should have an existing C# (.NET) project in a repository on GitHub.com. If you don't have a project, you can try this tutorial with the following example: https://github.com/2percentsilk/python-quickstart.
|
||||
- Codespaces must be enabled for your organization. For more information, see "[Enabling Codespaces for your organization](/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization)."
|
||||
`,
|
||||
contentBlocks: [
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 1: Open your project in a codespace',
|
||||
content: dedent`
|
||||
1. Under the repository name, use the **Code** drop-down menu, and in the **Codespaces** tab, click **New codespace**.
|
||||
|
||||

|
||||
|
||||
If you don’t see this option, Codespaces isn't available for your project. See [Access to Codespaces](/codespaces/developing-in-codespaces/creating-a-codespace#access-to-codespaces) for more information.
|
||||
|
||||
When you create a codespace, your project is created on a remote VM that is dedicated to you. By default, the container for your codespace has many languages and runtimes including .NET. It also includes a common set of tools like git, wget, rsync, openssh, and nano.
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
Codespaces uses a file called \`devcontainer.json\` to store configurations. On launch Codespaces uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 2: Add a dev container to your codespace from a template',
|
||||
content: dedent`
|
||||
The default codespaces container comes with the latest .NET version and common tools preinstalled. However, we recommend that you set up a custom container to define the tools and scripts that your project needs. This will ensure a fully reproducible environment for all Codespaces users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a \`devcontainer.json\` file to define the environment. In Codespaces you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
1. Access the Command Palette (\`Shift + Command + P\` / \`Ctrl + Shift + P\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
|
||||

|
||||
2. For this example, click **C# (.NET)**. If you need additional features you can select any container that’s specific to C# (.NET) or a combination of tools such as C# (.NET) and MS SQL.
|
||||
|
||||

|
||||
3. Click the recommended version of .NET.
|
||||

|
||||
4. Accept the default option to add Node.js to your customization.
|
||||

|
||||
5. Select any additional features to install and click **OK**.
|
||||
6. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Anatomy of your dev container',
|
||||
content: dedent`
|
||||
Adding the C# (.NET) dev container template adds a \`.devcontainer\` folder to the root of your project's repository with the following files:
|
||||
|
||||
- \`devcontainer.json\`
|
||||
- Dockerfile
|
||||
|
||||
The newly added \`devcontainer.json\` file defines a few properties that are described below.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section-2',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 2,
|
||||
},
|
||||
content: dedent`
|
||||
**\`name\`** - You can name your dev container anything, this is just the default.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [3, 13],
|
||||
},
|
||||
content: dedent`
|
||||
**\`build\`** - The build properties.
|
||||
- **\`dockerfil\`e** - In the build object, dockerfile is a reference to the Dockerfile that was also added from the template.
|
||||
- **\`args\`**
|
||||
- **\`VARIANT\`**: This file only contains one build argument, which is the .NET Core version that we want to use.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [16, 18],
|
||||
},
|
||||
content: dedent`
|
||||
**\`settings\`** - These are Visual Studio Code settings that you can set.
|
||||
- **\`terminal.integrated.shell.linux\`** - While bash is the default here, you could use other terminal shells by modifying this.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [20, 23],
|
||||
},
|
||||
content: dedent`
|
||||
**\`extensions\`** - These are extensions included by default.
|
||||
- **\`ms-dotnettools.csharp\`** - The Microsoft C# extension provides rich support for developing in C#, including features such as IntelliSense, linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 26,
|
||||
},
|
||||
content: dedent`
|
||||
**\`forwardPorts\`** - Any ports listed here will be forwarded automatically.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 29,
|
||||
},
|
||||
content: dedent`
|
||||
**\`postCreateCommand\`** - If you want to run anything after you land in your codespace that’s not defined in the Dockerfile, like \`dotnet restore\`, you can do that here.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 32,
|
||||
},
|
||||
content: dedent`
|
||||
**\`remoteUser\`** - By default, you’re running as the vscode user, but you can optionally set this to root.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '1',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Dockerfile',
|
||||
content: dedent`
|
||||
You can use the Dockerfile to add additional container layers to specify OS packages, node versions, or global packages we want included in our Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [21, 29],
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 3: Modify your devcontainer.json file',
|
||||
content: dedent`
|
||||
With your dev container added and a basic understanding of what everything does, you can now make changes to configure it for your environment. In this example, you'll add properties to install extensions and your project dependencies when your codespace launches.
|
||||
|
||||
1. In the Explorer, expand the \`.devcontainer\` folder and select the \`devcontainer.json\` file from the tree to open it.
|
||||
|
||||

|
||||
|
||||
2. Update your the \`extensions\` list in your \`devcontainer.json\` file to add a few extensions that are useful when working with your project.
|
||||
|
||||
\`\`\`json{:copy}
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
],
|
||||
\`\`\`
|
||||
|
||||
3. Uncomment the \`postCreateCommand\` to restore dependencies as part of the codespace setup process.
|
||||
|
||||
\`\`\`json{:copy}
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "dotnet restore",
|
||||
\`\`\`
|
||||
|
||||
4. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
Rebuilding inside your codespace ensures your changes work as expected before you commit the changes to the repository. If something does result in a failure, you’ll be placed in a codespace with a recovery container that you can rebuild from to keep adjusting your container.
|
||||
|
||||
5. Check your changes were successfully applied by verifying the "Code Spell Checker" extension was installed.
|
||||
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 4: Run your application',
|
||||
content: dedent`
|
||||
In the previous section, you used the \`postCreateCommand\` to install a set of packages via the \`dotnet restore\` command. With our dependencies now installed, we can run our application.
|
||||
|
||||
1. Run your application by pressing \`F5\` or entering \`dotnet watch run\` in your terminal.
|
||||
|
||||
2. When your project starts, you should see a message in the bottom right corner with a prompt to connect to the port your project uses.
|
||||
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 5: Commit your changes',
|
||||
content: dedent`
|
||||
Once you've made changes to your codespace, either new code or configuration changes, you'll want to commit your changes. Committing changes to your repository ensures that anyone else who creates a codespace from this repository has the same configuration. This also means that any customization you do, such as adding Visual Studio Code extensions, will appear for all users.
|
||||
|
||||
For information, see "[Using source control in your codespace](/codespaces/developing-in-codespaces/using-source-control-in-your-codespace#committing-your-changes)."
|
||||
`,
|
||||
},
|
||||
],
|
||||
codeBlocks: {
|
||||
'0': {
|
||||
fileName: '.devcontainer/devcontainer.json',
|
||||
language: 'json',
|
||||
code: dedent`
|
||||
{
|
||||
"name": "C# (.NET)",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
// Update 'VARIANT' to pick a .NET Core version: 2.1, 3.1, 5.0
|
||||
"VARIANT": "5.0",
|
||||
// Options
|
||||
"INSTALL_NODE": "true",
|
||||
"NODE_VERSION": "lts/*",
|
||||
"INSTALL_AZURE_CLI": "false"
|
||||
}
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"ms-dotnettools.csharp"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [5000, 5001],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "dotnet restore",
|
||||
|
||||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode"
|
||||
}
|
||||
`,
|
||||
},
|
||||
'1': {
|
||||
fileName: '.devcontainer/Dockerfile',
|
||||
language: 'bash',
|
||||
code: dedent`
|
||||
# [Choice] .NET version: 5.0, 3.1, 2.1
|
||||
ARG VARIANT="5.0"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/dotnetcore:0-\${VARIANT}
|
||||
|
||||
# [Option] Install Node.js
|
||||
ARG INSTALL_NODE="true"
|
||||
ARG NODE_VERSION="lts/*"
|
||||
RUN if [ "\${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install \${NODE_VERSION} 2>&1"; fi
|
||||
|
||||
# [Option] Install Azure CLI
|
||||
ARG INSTALL_AZURE_CLI="false"
|
||||
COPY library-scripts/azcli-debian.sh /tmp/library-scripts/
|
||||
RUN if [ "$INSTALL_AZURE_CLI" = "true" ]; then bash /tmp/library-scripts/azcli-debian.sh; fi \
|
||||
&& apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts
|
||||
|
||||
# [Optional] Uncomment this section to install additional OS packages.
|
||||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||
# && apt-get -y install --no-install-recommends <your-package-list-here>
|
||||
|
||||
# [Optional] Uncomment this line to install global node packages.
|
||||
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
|
||||
`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default article
|
||||
@@ -0,0 +1,294 @@
|
||||
import dedent from 'ts-dedent'
|
||||
import { PlaygroundArticleT } from 'components/playground/types'
|
||||
|
||||
const article: PlaygroundArticleT = {
|
||||
title: 'Add a dev container to your project',
|
||||
shortTitle: 'Add a dev container to your project',
|
||||
topics: ['Codespaces', 'Developer', 'Organization', 'Java'],
|
||||
type: 'tutorial',
|
||||
slug: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces',
|
||||
originalArticle:
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-java-project-for-codespaces',
|
||||
codeLanguageId: 'java',
|
||||
intro: dedent`
|
||||
This guide shows you how to add a [dev container](/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project) to define the Codespaces configuration for your **Java** project. For other project languages, click the language button to the right.
|
||||
`,
|
||||
prerequisites: dedent`
|
||||
- You should have an existing Java project in a repository on GitHub.com. If you don't have a project, you can try this tutorial with the following example: https://github.com/microsoft/vscode-remote-try-java
|
||||
- Codespaces must be enabled for your organization. For more information, see "[Enabling Codespaces for your organization](/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization)."
|
||||
`,
|
||||
contentBlocks: [
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 1: Open your project in a codespace',
|
||||
content: dedent`
|
||||
1. Under the repository name, use the **Code** drop-down menu, and in the **Codespaces** tab, click **New codespace**.
|
||||
|
||||

|
||||
|
||||
If you don’t see this option, Codespaces isn't available for your project. See [Access to Codespaces](/codespaces/developing-in-codespaces/creating-a-codespace#access-to-codespaces) for more information.
|
||||
|
||||
When you create a codespace, your project is created on a remote VM that is dedicated to you. By default, the container for your codespace has many languages and runtimes including Java, nvm, npm, and yarn. It also includes a common set of tools like git, wget, rsync, openssh, and nano.
|
||||
|
||||
Codespaces uses a file called \`devcontainer.json\` to store configurations. On launch Codespaces uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 2: Add a dev container to your codespace from a template',
|
||||
content: dedent`
|
||||
The default codespaces container comes with the latest Java version, package managers (Maven, Gradle), and other common tools preinstalled. However, we recommend that you set up a custom container to define the tools and scripts that your project needs. This will ensure a fully reproducible environment for all Codespaces users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a \`devcontainer.json\` file to define the environment. In Codespaces you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
1. Access the Command Palette (\`Shift + Command + P\` / \`Ctrl + Shift + P\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
|
||||

|
||||
2. For this example, click **Java**. In practice, you could select any container that’s specific to Java or a combination of tools such as Java and Azure Functions.
|
||||

|
||||
3. Click the recommended version of Java.
|
||||

|
||||
4. Select any additional features to install and click **OK**.
|
||||
5. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Anatomy of your dev container',
|
||||
content: dedent`
|
||||
Adding the Java dev container template adds a .devcontainer folder to the root of your project's repository with the following files:
|
||||
|
||||
- \`devcontainer.json\`
|
||||
- Dockerfile
|
||||
|
||||
The newly added \`devcontainer.json\` file defines a few properties that are described below.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section-2',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 4,
|
||||
},
|
||||
content: dedent`
|
||||
**\`name\`** - You can name your dev container anything, this is just the default.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [5, 16],
|
||||
},
|
||||
content: dedent`
|
||||
**\`build\`** - The build properties.
|
||||
- **\`dockerfile\`** - In the build object, dockerfile is a reference to the Dockerfile that was also added from the template.
|
||||
- **\`args\`**
|
||||
- **\`VARIANT\`**: This file only contains one build argument, which is the Java version that is passed into the Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [19, 23],
|
||||
},
|
||||
content: dedent`
|
||||
**\`settings\`** - These are Visual Studio Code settings that you can set.
|
||||
- **\`terminal.integrated.shell.linux\`** - While bash is the default here, you could use other terminal shells by modifying this.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [26, 28],
|
||||
},
|
||||
content: dedent`
|
||||
**\`extensions\`** - These are extensions included by default.
|
||||
- **\`vscjava.vscode-java-pack\`** - The Java Extension Pack provides popular extensions for Java development to get you started.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 31,
|
||||
},
|
||||
content: dedent`
|
||||
**\`forwardPorts\`** - Any ports listed here will be forwarded automatically.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 34,
|
||||
},
|
||||
content: dedent`
|
||||
**\`postCreateCommand\`** - If you want to run anything after you land in your codespace that’s not defined in the Dockerfile, you can do that here.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 37,
|
||||
},
|
||||
content: dedent`
|
||||
**\`remoteUser\`** - By default, you’re running as the vscode user, but you can optionally set this to root.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '1',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Dockerfile',
|
||||
content: dedent`
|
||||
You can use the Dockerfile to add additional container layers to specify OS packages, node versions, or global packages we want included in our Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [30, 34],
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 3: Modify your devcontainer.json file',
|
||||
content: dedent`
|
||||
With your dev container added and a basic understanding of what everything does, you can now make changes to configure it for your environment. In this example, you'll add properties to install extensions and your project dependencies when your codespace launches.
|
||||
|
||||
1. In the Explorer, expand the \`.devcontainer\` folder and select the \`devcontainer.json\` file from the tree to open it.
|
||||
|
||||

|
||||
|
||||
2. Add the following lines to your \`devcontainer.json\` file after \`extensions\`.
|
||||
|
||||
\`\`\`json{:copy}
|
||||
"postCreateCommand": "java -version",
|
||||
"forwardPorts": [4000],
|
||||
\`\`\`
|
||||
|
||||
For more information on \`devcontainer.json\` properties, see the [devcontainer.json reference](https://code.visualstudio.com/docs/remote/devcontainerjson-reference) on the Visual Studio Code docs.
|
||||
|
||||
4. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
Rebuilding inside your codespace ensures your changes work as expected before you commit the changes to the repository. If something does result in a failure, you’ll be placed in a codespace with a recovery container that you can rebuild from to keep adjusting your container.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 4: Run your application',
|
||||
content: dedent`
|
||||
In the previous section, you used the \`postCreateCommand\` to install a set of packages via npm. You can now use this to run our application with npm.
|
||||
|
||||
1. Run your application by pressing \`F5\`.
|
||||
|
||||
2. When your project starts, you should see a message in the bottom right corner with a prompt to connect to the port your project uses.
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 5: Commit your changes',
|
||||
content: dedent`
|
||||
Once you've made changes to your codespace, either new code or configuration changes, you'll want to commit your changes. Committing changes to your repository ensures that anyone else who creates a codespace from this repository has the same configuration. This also means that any customization you do, such as adding Visual Studio Code extensions, will appear for all users.
|
||||
|
||||
For information, see "[Using source control in your codespace](/codespaces/developing-in-codespaces/using-source-control-in-your-codespace#committing-your-changes)."
|
||||
`,
|
||||
},
|
||||
],
|
||||
codeBlocks: {
|
||||
'0': {
|
||||
fileName: '.devcontainer/devcontainer.json',
|
||||
language: 'json',
|
||||
code: dedent`
|
||||
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
|
||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.159.0/containers/java
|
||||
{
|
||||
"name": "Java",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
// Update the VARIANT arg to pick a Java version: 11, 14
|
||||
"VARIANT": "11",
|
||||
// Options
|
||||
"INSTALL_MAVEN": "true",
|
||||
"INSTALL_GRADLE": "false",
|
||||
"INSTALL_NODE": "false",
|
||||
"NODE_VERSION": "lts/*"
|
||||
}
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash",
|
||||
"java.home": "/docker-java-home",
|
||||
"maven.executable.path": "/usr/local/sdkman/candidates/maven/current/bin/mvn"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"vscjava.vscode-java-pack"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "java -version",
|
||||
|
||||
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode"
|
||||
}
|
||||
`,
|
||||
},
|
||||
'1': {
|
||||
fileName: '.devcontainer/Dockerfile',
|
||||
language: 'bash',
|
||||
code: dedent`
|
||||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.159.0/containers/java/.devcontainer/base.Dockerfile
|
||||
ARG VARIANT="14"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/java:0-\${VARIANT}
|
||||
|
||||
# [Optional] Install Maven or Gradle
|
||||
ARG INSTALL_MAVEN="false"
|
||||
ARG MAVEN_VERSION=3.6.3
|
||||
ARG INSTALL_GRADLE="false"
|
||||
ARG GRADLE_VERSION=5.4.1
|
||||
RUN if [ "\${INSTALL_MAVEN}" = "true" ]; then su vscode -c "source /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"\${MAVEN_VERSION}\""; fi \
|
||||
&& if [ "\${INSTALL_GRADLE}" = "true" ]; then su vscode -c "source /usr/local/sdkman/bin/sdkman-init.sh && sdk install gradle \"\${GRADLE_VERSION}\""; fi
|
||||
|
||||
# [Optional] Install a version of Node.js using nvm for front end dev
|
||||
ARG INSTALL_NODE="true"
|
||||
ARG NODE_VERSION="lts/*"
|
||||
RUN if [ "\${INSTALL_NODE}" = "true" ]; then su vscode -c "source /usr/local/share/nvm/nvm.sh && nvm install \${NODE_VERSION} 2>&1"; fi
|
||||
|
||||
# [Optional] Uncomment this section to install additional OS packages.
|
||||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||
# && apt-get -y install --no-install-recommends <your-package-list-here>
|
||||
|
||||
# [Optional] Uncomment this line to install global node packages.
|
||||
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
|
||||
`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default article
|
||||
@@ -0,0 +1,278 @@
|
||||
import dedent from 'ts-dedent'
|
||||
import { PlaygroundArticleT } from 'components/playground/types'
|
||||
|
||||
const article: PlaygroundArticleT = {
|
||||
title: 'Add a dev container to your project',
|
||||
shortTitle: 'Node.js Codespaces',
|
||||
topics: ['Codespaces', 'Developer', 'Organization', 'Node', 'JavaScript'],
|
||||
type: 'tutorial',
|
||||
slug: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces',
|
||||
originalArticle:
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-nodejs-project-for-codespaces',
|
||||
codeLanguageId: 'nodejs',
|
||||
intro: dedent`
|
||||
This guide shows you how to add a [dev container](/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project) to define the Codespaces configuration for your **JavaScript**, **Node.js**, or **TypeScript** project. For other project languages, click the language button to the right.
|
||||
`,
|
||||
prerequisites: dedent`
|
||||
- You should have an existing JavaScript, Node.js, or TypeScript project in a repository on GitHub.com. If you don't have a project, you can try this tutorial with the following example: https://github.com/microsoft/vscode-remote-try-node
|
||||
- Codespaces must be enabled for your organization. For more information, see "[Enabling Codespaces for your organization](/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization)."
|
||||
`,
|
||||
contentBlocks: [
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 1: Open your project in a codespace',
|
||||
content: dedent`
|
||||
1. Under the repository name, use the **Code** drop-down menu, and in the **Codespaces** tab, click **New codespace**.
|
||||
|
||||

|
||||
|
||||
If you don’t see this option, Codespaces isn't available for your project. See [Access to Codespaces](/codespaces/developing-in-codespaces/creating-a-codespace#access-to-codespaces) for more information.
|
||||
|
||||
When you create a codespace, your project is created on a remote VM that is dedicated to you. By default, the container for your codespace has many languages and runtimes including Node.js, JavaScript, Typescript, nvm, npm, and yarn. It also includes a common set of tools like git, wget, rsync, openssh, and nano.
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
Codespaces uses a file called \`devcontainer.json\` to store configurations. On launch, Codespaces uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 2: Add a dev container to your codespace from a template',
|
||||
content: dedent`
|
||||
The default codespaces container will support running Node.js projects like [vscode-remote-try-node](https://github.com/microsoft/vscode-remote-try-node) out of the box. By setting up a custom container you can customize the tools and scripts that run as part of codespace creation and ensure a fully reproducible environment for all Codespaces users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a \`devcontainer.json\` file to define the environment. In Codespaces you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
1. Access the Command Palette (\`Shift + Command + P\` / \`Ctrl + Shift + P\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
|
||||

|
||||
2. For this example, click **Node.js**. If you need additional features you can select any container that’s specific to Node or a combination of tools such as Node and MongoDB.
|
||||

|
||||
3. Click the recommended version of Node.js.
|
||||

|
||||
4. Select any additional features to install and click **OK**.
|
||||
5. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Anatomy of your dev container',
|
||||
content: dedent`
|
||||
Adding the Node.js dev container template adds a \`.devcontainer\` folder to the root of your project's repository with the following files:
|
||||
|
||||
- \`devcontainer.json\`
|
||||
- Dockerfile
|
||||
|
||||
The newly added \`devcontainer.json\` file defines a few properties that are described below.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section-2',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 4,
|
||||
},
|
||||
content: dedent`
|
||||
**\`name\`** - You can name your dev container anything, this is just the default.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [5, 9],
|
||||
},
|
||||
content: dedent`
|
||||
**\`build\`** - The build properties.
|
||||
- **\`dockerfile\`** - In the build object, dockerfile is a reference to the Dockerfile that was also added from the template.
|
||||
- **\`args\`**
|
||||
- **\`VARIANT\`**: This file only contains one build argument, which is the node variant we want to use that is passed into the Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [12, 14],
|
||||
},
|
||||
content: dedent`
|
||||
**\`settings\`** - These are Visual Studio Code settings that you can set.
|
||||
- **\`terminal.integrated.shell.linux\`** - While bash is the default here, you could use other terminal shells by modifying this.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [17, 19],
|
||||
},
|
||||
content: dedent`
|
||||
**\`extensions\`** - These are extensions included by default.
|
||||
- **\`dbaeumer.vscode-eslint\`** - ES lint is a great extension for linting, but for JavaScript there are a number of great Marketplace extensions you could also include.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 22,
|
||||
},
|
||||
content: dedent`
|
||||
**\`forwardPorts\`** - Any ports listed here will be forwarded automatically.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 25,
|
||||
},
|
||||
content: dedent`
|
||||
**\`postCreateCommand\`** - If you want to run anything after you land in your codespace that’s not defined in the Dockerfile, you can do that here.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 28,
|
||||
},
|
||||
content: dedent`
|
||||
**\`remoteUser\`** - By default, you’re running as the vscode user, but you can optionally set this to root.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '1',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Dockerfile',
|
||||
content: dedent`
|
||||
You can use the Dockerfile to add additional container layers to specify OS packages, node versions, or global packages we want included in our Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [21, 25],
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 3: Modify your devcontainer.json file',
|
||||
content: dedent`
|
||||
With your dev container added and a basic understanding of what everything does, you can now make changes to configure it for your environment. In this example, you'll add properties to install npm when your codespace launches and make a list of ports inside the container available locally.
|
||||
|
||||
1. In the Explorer, select the \`devcontainer.json\` file from the tree to open it. You might have to expand the \`.devcontainer\` folder to see it.
|
||||

|
||||
2. Add the following lines to your \`devcontainer.json\` file after \`extensions\`:
|
||||
|
||||
\`\`\`js{:copy}
|
||||
"postCreateCommand": "npm install",
|
||||
"forwardPorts": [4000],
|
||||
\`\`\`
|
||||
For more information on \`devcontainer.json\` properties, see the [devcontainer.json reference](https://code.visualstudio.com/docs/remote/devcontainerjson-reference) in the Visual Studio Code docs.
|
||||
|
||||
1. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
|
||||
Rebuilding inside your codespace ensures your changes work as expected before you commit the changes to the repository. If something does result in a failure, you’ll be placed in a codespace with a recovery container that you can rebuild from to keep adjusting your container.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 4: Run your application',
|
||||
content: dedent`
|
||||
In the previous section, you used the \`postCreateCommand\` to installing a set of packages via npm. You can now use this to run our application with npm.
|
||||
|
||||
1. Run your start command in the terminal with \`npm start\`.
|
||||
|
||||

|
||||
|
||||
2. When your project starts, you should see a message in the bottom right corner with a prompt to connect to the port your project uses.
|
||||
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 5: Commit your changes',
|
||||
content: dedent`
|
||||
Once you've made changes to your codespace, either new code or configuration changes, you'll want to commit your changes. Committing changes to your repository ensures that anyone else who creates a codespace from this repository has the same configuration. This also means that any customization you do, such as adding Visual Studio Code extensions, will appear for all users.
|
||||
|
||||
For information, see "[Using source control in your codespace](/codespaces/developing-in-codespaces/using-source-control-in-your-codespace#committing-your-changes)."
|
||||
`,
|
||||
},
|
||||
],
|
||||
codeBlocks: {
|
||||
'0': {
|
||||
fileName: '.devcontainer/devcontainer.json',
|
||||
language: 'json',
|
||||
code: dedent`
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
||||
// https://github.com/microsoft/vscode-dev-containers/tree/v0.162.0/containers/javascript-node
|
||||
{
|
||||
"name": "Node.js",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
// Update 'VARIANT' to pick a Node version: 10, 12, 14
|
||||
"args": { "VARIANT": "14" }
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"dbaeumer.vscode-eslint"
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "yarn install",
|
||||
|
||||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "node"
|
||||
}
|
||||
`,
|
||||
},
|
||||
'1': {
|
||||
fileName: '.devcontainer/Dockerfile',
|
||||
language: 'bash',
|
||||
code: dedent`
|
||||
# [Choice] Node.js version: 14, 12, 10
|
||||
ARG VARIANT="14-buster"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-\${VARIANT}
|
||||
|
||||
# [Optional] Uncomment this section to install additional OS packages.
|
||||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get -y install --no-install-recommends <your-package-list-here>
|
||||
|
||||
# [Optional] Uncomment if you want to install an additional version of node using nvm
|
||||
# ARG EXTRA_NODE_VERSION=10
|
||||
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install \${EXTRA_NODE_VERSION}"
|
||||
|
||||
# [Optional] Uncomment if you want to install more global node modules
|
||||
# RUN su node -c "npm install -g <your-package-list-here>"
|
||||
`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default article
|
||||
@@ -0,0 +1,318 @@
|
||||
import dedent from 'ts-dedent'
|
||||
import { PlaygroundArticleT } from 'components/playground/types'
|
||||
|
||||
const article: PlaygroundArticleT = {
|
||||
title: 'Add a dev container to your repository',
|
||||
shortTitle: 'Python Codespaces',
|
||||
topics: ['Codespaces', 'Developer', 'Organization', 'Python'],
|
||||
type: 'tutorial',
|
||||
slug: '/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces',
|
||||
originalArticle:
|
||||
'/codespaces/setting-up-your-project-for-codespaces/setting-up-your-python-project-for-codespaces',
|
||||
codeLanguageId: 'py',
|
||||
intro: dedent`
|
||||
This guide shows you how to add a [dev container](/codespaces/setting-up-your-project-for-codespaces/configuring-codespaces-for-your-project) to define the Codespaces configuration for your **Python** project. For other project languages, click the language button to the right.
|
||||
`,
|
||||
prerequisites: dedent`
|
||||
- You should have an existing Python project in a repository on GitHub.com. If you don't have a project, you can try this tutorial with the following example: https://github.com/2percentsilk/python-quickstart.
|
||||
- Codespaces must be enabled for your organization. For more information, see "[Enabling Codespaces for your organization](/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization)."
|
||||
`,
|
||||
contentBlocks: [
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 1: Open your project in a codespace',
|
||||
content: dedent`
|
||||
1. Under the repository name, use the **Code** drop-down menu, and in the **Codespaces** tab, click **New codespace**.
|
||||
|
||||

|
||||
|
||||
If you don’t see this option, Codespaces isn't available for your project. See [Access to Codespaces](/codespaces/developing-in-codespaces/creating-a-codespace#access-to-codespaces) for more information.
|
||||
|
||||
When you create a codespace, your project is created on a remote VM that is dedicated to you. By default, the container for your codespace has many languages and runtimes including Python, pip, and Miniconda. It also includes a common set of tools like git, wget, rsync, openssh, and nano.
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
Codespaces uses a file called \`devcontainer.json\` to store configurations. On launch Codespaces uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 2: Add a dev container to your codespace from a template',
|
||||
content: dedent`
|
||||
The default codespaces container comes with the latest Python version, package managers (pip, Miniconda), and other common tools preinstalled. However, we recommend that you set up a custom container to define the tools and scripts that your project needs. This will ensure a fully reproducible environment for all Codespaces users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a \`devcontainer.json\` file to define the environment. In Codespaces you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
1. Access the Command Palette (\`Shift + Command + P\` / \`Ctrl + Shift + P\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
|
||||

|
||||
2. For this example, click **Python 3**. If you need additional features you can select any container that’s specific to Python or a combination of tools such as Python 3 and PostgreSQL.
|
||||

|
||||
3. Click the recommended version of Python.
|
||||

|
||||
4. Accept the default option to add Node.js to your customization.
|
||||

|
||||
5. Select any additional features to install and click **OK**.
|
||||
6. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Anatomy of your dev container',
|
||||
content: dedent`
|
||||
Adding the Python dev container template adds a .devcontainer folder to the root of your project's repository with the following files:
|
||||
|
||||
- \`devcontainer.json\`
|
||||
- Dockerfile
|
||||
|
||||
The newly added \`devcontainer.json\` file defines a few properties that are described below.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section-2',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 2,
|
||||
},
|
||||
content: dedent`
|
||||
**\`name\`** - You can name your dev container anything, this is just the default.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [3, 12],
|
||||
},
|
||||
content: dedent`
|
||||
**\`build\`** - The build properties.
|
||||
- **\`dockerfile\`** - In the build object, dockerfile is a reference to the Dockerfile that was also added from the template.
|
||||
- **\`args\`**
|
||||
- **\`VARIANT\`**: This is the node variant we want to use that is passed into the Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [16, 30],
|
||||
},
|
||||
content: dedent`
|
||||
**\`settings\`** - These are Visual Studio Code settings that you can set.
|
||||
- **\`terminal.integrated.shell.linux\`** - While bash is the default here, you could use other terminal shells by modifying this.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [33, 35],
|
||||
},
|
||||
content: dedent`
|
||||
**\`extensions\`** - These are extensions included by default.
|
||||
- **\`ms-python.python\`** - The Microsoft Python extension provides rich support for the Python language (for all actively supported versions of the language: >=3.6), including features such as IntelliSense, linting, debugging, code navigation, code formatting, refactoring, variable explorer, test explorer, and more.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 38,
|
||||
},
|
||||
content: dedent`
|
||||
**\`forwardPorts\`** - Any ports listed here will be forwarded automatically.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 41,
|
||||
},
|
||||
content: dedent`
|
||||
**\`postCreateCommand\`** - If you want to run anything after you land in your codespace that’s not defined in the Dockerfile, like pip3 install -r requirements, you can do that here.
|
||||
`,
|
||||
},
|
||||
{
|
||||
type: 'sub-section',
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: 44,
|
||||
},
|
||||
content: dedent`
|
||||
**\`remoteUser\`** - By default, you’re running as the vscode user, but you can optionally set this to root.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '1',
|
||||
},
|
||||
type: 'sub-section',
|
||||
title: 'Dockerfile',
|
||||
content: dedent`
|
||||
You can use the Dockerfile to add additional container layers to specify OS packages, node versions, or global packages we want included in our Dockerfile.
|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
highlight: [32, 41],
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 3: Modify your devcontainer.json file',
|
||||
content: dedent`
|
||||
With your dev container added and a basic understanding of what everything does, you can now make changes to configure it for your environment. In this example, you'll add properties to install extensions and your project dependencies when your codespace launches.
|
||||
|
||||
1. In the Explorer, expand the \`.devcontainer\` folder and select the \`devcontainer.json\` file from the tree to open it.
|
||||
|
||||

|
||||
|
||||
2. Update the extensions list in your \`devcontainer.json\` file to add a few extensions that are useful when working with your project.
|
||||
|
||||
\`\`\`json{:copy}
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
"cstrap.flask-snippets",
|
||||
"streetsidesoftware.code-spell-checker",
|
||||
],
|
||||
\`\`\`
|
||||
|
||||
3. Uncomment the \`postCreateCommand\` to auto-install requirements as part of the codespaces setup process.
|
||||
|
||||
\`\`\`json{:copy}
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "pip3 install --user -r requirements.txt",
|
||||
\`\`\`
|
||||
|
||||
4. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
|
||||
|
||||

|
||||
|
||||
Rebuilding inside your codespace ensures your changes work as expected before you commit the changes to the repository. If something does result in a failure, you’ll be placed in a codespace with a recovery container that you can rebuild from to keep adjusting your container.
|
||||
|
||||
5. Check your changes were successfully applied by verifying the Code Spell Checker and Flask Snippet extensions were installed.
|
||||
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 4: Run your application',
|
||||
content: dedent`
|
||||
In the previous section, you used the \`postCreateCommand\` to install a set of packages with pip3. With your dependencies now installed, you can run your application.
|
||||
|
||||
1. Run your application by pressing F5 or entering \`python -m flask run\` in the codespace terminal.
|
||||
|
||||
2. When your project starts, you should see a message in the bottom right corner with a prompt to connect to the port your project uses.
|
||||
|
||||

|
||||
`,
|
||||
},
|
||||
{
|
||||
codeBlock: {
|
||||
id: '0',
|
||||
},
|
||||
type: 'default',
|
||||
title: 'Step 5: Commit your changes',
|
||||
content: dedent`
|
||||
Once you've made changes to your codespace, either new code or configuration changes, you'll want to commit your changes. Committing changes to your repository ensures that anyone else who creates a codespace from this repository has the same configuration. This also means that any customization you do, such as adding Visual Studio Code extensions, will appear for all users.
|
||||
|
||||
For information, see "[Using source control in your codespace](/codespaces/developing-in-codespaces/using-source-control-in-your-codespace#committing-your-changes)."
|
||||
`,
|
||||
},
|
||||
],
|
||||
codeBlocks: {
|
||||
'0': {
|
||||
fileName: '.devcontainer/devcontainer.json',
|
||||
language: 'json',
|
||||
code: dedent`
|
||||
{
|
||||
"name": "Python 3",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"context": "..",
|
||||
"args": {
|
||||
// Update 'VARIANT' to pick a Python version: 3, 3.6, 3.7, 3.8, 3.9
|
||||
"VARIANT": "3",
|
||||
// Options
|
||||
"INSTALL_NODE": "true",
|
||||
"NODE_VERSION": "lts/*"
|
||||
}
|
||||
},
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.shell.linux": "/bin/bash",
|
||||
"python.pythonPath": "/usr/local/bin/python",
|
||||
"python.linting.enabled": true,
|
||||
"python.linting.pylintEnabled": true,
|
||||
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
|
||||
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
|
||||
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
|
||||
"python.linting.banditPath": "/usr/local/py-utils/bin/bandit",
|
||||
"python.linting.flake8Path": "/usr/local/py-utils/bin/flake8",
|
||||
"python.linting.mypyPath": "/usr/local/py-utils/bin/mypy",
|
||||
"python.linting.pycodestylePath": "/usr/local/py-utils/bin/pycodestyle",
|
||||
"python.linting.pydocstylePath": "/usr/local/py-utils/bin/pydocstyle",
|
||||
"python.linting.pylintPath": "/usr/local/py-utils/bin/pylint"
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "pip3 install --user -r requirements.txt",
|
||||
|
||||
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode"
|
||||
}
|
||||
`,
|
||||
},
|
||||
'1': {
|
||||
fileName: '.devcontainer/Dockerfile',
|
||||
language: 'bash',
|
||||
code: dedent`
|
||||
# [Choice] Python version: 3, 3.9, 3.8, 3.7, 3.6
|
||||
ARG VARIANT="3"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/python:0-\${VARIANT}
|
||||
|
||||
# [Option] Install Node.js
|
||||
ARG INSTALL_NODE="true"
|
||||
ARG NODE_VERSION="lts/*"
|
||||
RUN if [ "\${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install \${NODE_VERSION} 2>&1"; fi
|
||||
|
||||
# [Optional] If your pip requirements rarely change, uncomment this section to add them to the image.
|
||||
# COPY requirements.txt /tmp/pip-tmp/
|
||||
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
|
||||
# && rm -rf /tmp/pip-tmp
|
||||
|
||||
# [Optional] Uncomment this section to install additional OS packages.
|
||||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||
# && apt-get -y install --no-install-recommends <your-package-list-here>
|
||||
|
||||
# [Optional] Uncomment this line to install global node packages.
|
||||
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
|
||||
|
||||
`,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default article
|
||||
@@ -70,6 +70,7 @@ This example has a job called `Get_OIDC_ID_token` that uses actions to request a
|
||||
|
||||
This action exchanges a {% data variables.product.prodname_dotcom %} OIDC token for a Google Cloud access token, using [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).
|
||||
|
||||
{% raw %}
|
||||
```yaml{:copy}
|
||||
name: List services in GCP
|
||||
on:
|
||||
@@ -97,3 +98,4 @@ jobs:
|
||||
gcloud auth login --brief --cred-file="${{ steps.auth.outputs.credentials_file_path }}"
|
||||
gcloud config list
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
@@ -48,9 +48,10 @@ When you have configured {% data variables.product.product_location %} to use {%
|
||||
Any VM that you use for {% data variables.product.prodname_dependabot %} runners must meet the requirements for self-hosted runners. In addition, they must meet the following requirements.
|
||||
|
||||
- Linux operating system
|
||||
- The following dependencies installed:
|
||||
- Docker running as the same user as the self-hosted runner application
|
||||
- Git
|
||||
- Git installed
|
||||
- Docker installed with access for the runner users:
|
||||
- We recommend installing Docker in rootless mode and configuring the runners to access Docker without `root` privileges.
|
||||
- Alternatively, install Docker and give the runner users raised privileges to run Docker.
|
||||
|
||||
The CPU and memory requirements will depend on the number of concurrent runners you deploy on a given VM. As guidance, we have successfully set up 20 runners on a single 2 CPU 8GB machine, but ultimately, your CPU and memory requirements will heavily depend on the repositories being updated. Some ecosystems will require more resources than others.
|
||||
|
||||
@@ -72,6 +73,15 @@ If you specify more than 14 concurrent runners on a VM, you must also update the
|
||||
|
||||
1. Provision self-hosted runners, at the repository, organization, or enterprise account level. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)."
|
||||
|
||||
2. Verify that the self-hosted runners meet the requirements for {% data variables.product.prodname_dependabot %} before assigning a `dependabot` label to each runner you want {% data variables.product.prodname_dependabot %} to use. For more information, see "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners#assigning-a-label-to-a-self-hosted-runner)."
|
||||
2. Set up the self-hosted runners with the requirements described above. For example, on a VM running Ubuntu 20.04 you would:
|
||||
|
||||
3. Optionally, enable workflows triggered by {% data variables.product.prodname_dependabot %} to use more than read-only permissions and to have access to any secrets that are normally available. For more information, see "[Troubleshooting {% data variables.product.prodname_actions %} for your enterprise](/admin/github-actions/advanced-configuration-and-troubleshooting/troubleshooting-github-actions-for-your-enterprise#enabling-workflows-triggered-by-dependabot-access-to-dependabot-secrets-and-increased-permissions)."
|
||||
- Verify that Git is installed: `command -v git`
|
||||
- Install Docker and ensure that the runner users have access to Docker. For more information, see the Docker documentation.
|
||||
- [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
|
||||
- Recommended approach: [Run the Docker daemon as a non-root user (Rootless mode)](https://docs.docker.com/engine/security/rootless/)
|
||||
- Alternative approach: [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)
|
||||
- Verify that the runners have access to the public internet and can only access the internal networks that {% data variables.product.prodname_dependabot %} needs.
|
||||
|
||||
3. Assign a `dependabot` label to each runner you want {% data variables.product.prodname_dependabot %} to use. For more information, see "[Using labels with self-hosted runners](/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners#assigning-a-label-to-a-self-hosted-runner)."
|
||||
|
||||
4. Optionally, enable workflows triggered by {% data variables.product.prodname_dependabot %} to use more than read-only permissions and to have access to any secrets that are normally available. For more information, see "[Troubleshooting {% data variables.product.prodname_actions %} for your enterprise](/admin/github-actions/advanced-configuration-and-troubleshooting/troubleshooting-github-actions-for-your-enterprise#enabling-workflows-triggered-by-dependabot-access-to-dependabot-secrets-and-increased-permissions)."
|
||||
|
||||
@@ -22,7 +22,7 @@ Before you introduce {% data variables.product.prodname_actions %} to a large en
|
||||
|
||||
## Governance and compliance
|
||||
|
||||
Your should create a plan to govern your enterprise's use of {% data variables.product.prodname_actions %} and meet your compliance obligations.
|
||||
Your should create a plan to govern your enterprise's use of {% data variables.product.prodname_actions %} and meet your compliance obligations.
|
||||
|
||||
Determine which actions your developers will be allowed to use. {% ifversion ghes %}First, decide whether you'll enable access to actions from outside your instance. {% data reusables.actions.access-actions-on-dotcom %} For more information, see "[About using actions in your enterprise](/admin/github-actions/managing-access-to-actions-from-githubcom/about-using-actions-in-your-enterprise)."
|
||||
|
||||
@@ -55,8 +55,8 @@ You should plan where you'll store your secrets. We recommend storing secrets in
|
||||
In {% data variables.product.prodname_dotcom %}, you can store secrets at the repository or organization level. Secrets at the repository level can be limited to workflows in certain environments, such as production or testing. For more information, see "[Encrypted secrets](/actions/security-guides/encrypted-secrets)."
|
||||
|
||||

|
||||
|
||||
You should consider adding manual approval protection for sensitive environments, so that workflows must be approved before getting access to the environments' secrets. For more information, see "[Using environments for deployments](/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
|
||||
{% ifversion fpt or ghes > 3.0 or ghec or ghae %}
|
||||
You should consider adding manual approval protection for sensitive environments, so that workflows must be approved before getting access to the environments' secrets. For more information, see "[Using environments for deployments](/actions/deployment/targeting-different-environments/using-environments-for-deployment)."{% endif %}
|
||||
|
||||
### Security considerations for third-party actions
|
||||
|
||||
@@ -121,4 +121,4 @@ For more detailed usage data, you{% else %}You{% endif %} can use webhooks to su
|
||||
|
||||
Make a plan for how your enterprise can pass the information from these webhooks into a data archiving system. You can consider using "CEDAR.GitHub.Collector", an open source tool that collects and processes webhook data from {% data variables.product.prodname_dotcom %}. For more information, see the [`Microsoft/CEDAR.GitHub.Collector` repository](https://github.com/microsoft/CEDAR.GitHub.Collector/).
|
||||
|
||||
You should also plan how you'll enable your teams to get the data they need from your archiving system.
|
||||
You should also plan how you'll enable your teams to get the data they need from your archiving system.
|
||||
|
||||
@@ -15,7 +15,7 @@ shortTitle: Change 2FA delivery method
|
||||
---
|
||||
{% note %}
|
||||
|
||||
**Note:** Changing your two-factor authentication method invalidates your current two-factor method setup. However, this doesn't affect your recovery codes or fallback SMS configuration. You can update your recovery codes or fallback SMS configuration on in your personal account's security settings page if desired.
|
||||
**Note:** Changing your primary method for two-factor authentication invalidates your current two-factor authentication setup, including your recovery codes. Keep your new set of recovery codes safe. Changing your primary method for two-factor authentication does not affect your fallback SMS configuration, if configured. For more information, see "[Configuring two-factor authentication recovery methods](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication-recovery-methods#setting-a-fallback-authentication-number)."
|
||||
|
||||
{% endnote %}
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ topics:
|
||||
- Actions
|
||||
- Repositories
|
||||
---
|
||||
<!--For this article in earlier GHES versions, see /content/github/finding-security-vulnerabilities-and-errors-in-your-code-->
|
||||
|
||||
{% data reusables.code-scanning.beta %}
|
||||
{% data reusables.code-scanning.enterprise-enable-code-scanning-actions %}
|
||||
@@ -34,13 +33,21 @@ You decide how to generate {% data variables.product.prodname_code_scanning %} a
|
||||
|
||||
{% data reusables.code-scanning.enabling-options %}
|
||||
|
||||
{% ifversion ghae %}
|
||||
## Prerequisites
|
||||
|
||||
Before setting up {% data variables.product.prodname_code_scanning %} for a repository, you must ensure that there is at least one self-hosted {% data variables.product.prodname_actions %} runner available to the repository.
|
||||
|
||||
Enterprise owners, organization and repository administrators can add self-hosted runners. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[Adding self-hosted runners](/actions/hosting-your-own-runners/adding-self-hosted-runners)."
|
||||
{% endif %}
|
||||
|
||||
## Setting up {% data variables.product.prodname_code_scanning %} using actions
|
||||
|
||||
{% ifversion fpt or ghec %}Using actions to run {% data variables.product.prodname_code_scanning %} will use minutes. For more information, see "[About billing for {% data variables.product.prodname_actions %}](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)."{% endif %}
|
||||
|
||||
{% data reusables.repositories.navigate-to-repo %}
|
||||
{% data reusables.repositories.sidebar-security %}
|
||||
3. To the right of "{% data variables.product.prodname_code_scanning_capc %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**. {% ifversion fpt or ghes > 3.0 or ghae-next or ghec %}If {% data variables.product.prodname_code_scanning %} is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[Managing security and analysis settings for your organization](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization)" or "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %}
|
||||
1. To the right of "{% data variables.product.prodname_code_scanning_capc %} alerts", click **Set up {% data variables.product.prodname_code_scanning %}**. {% ifversion fpt or ghes > 3.0 or ghae-next or ghec %}If {% data variables.product.prodname_code_scanning %} is missing, you need to ask an organization owner or repository administrator to enable {% data variables.product.prodname_GH_advanced_security %}. For more information, see "[Managing security and analysis settings for your organization](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization)" or "[Managing security and analysis settings for your repository](/github/administering-a-repository/managing-security-and-analysis-settings-for-your-repository)."{% endif %}
|
||||

|
||||
4. Under "Get started with {% data variables.product.prodname_code_scanning %}", click **Set up this workflow** on the {% data variables.product.prodname_codeql_workflow %} or on a third-party workflow.
|
||||
Workflows are only displayed if they are relevant for the programming languages detected in the repository. The {% data variables.product.prodname_codeql_workflow %} is always displayed, but the "Set up this workflow" button is only enabled if {% data variables.product.prodname_codeql %} analysis supports the languages present in the repository.
|
||||
|
||||
@@ -26,7 +26,7 @@ The following guidance provides options on how to handle service disruption to t
|
||||
|
||||
In the case of a regional outage, we suggest you recreate your codespace in an unaffected region to continue working. This new codespace will have all of the changes as of your last push to {% data variables.product.prodname_dotcom %}. For information on manually setting another region, see "[Setting your default region for Codespaces](/codespaces/managing-your-codespaces/setting-your-default-region-for-codespaces)."
|
||||
|
||||
You can optimize recovery time by configuring a `devcontainer.json` in the project's repository, which allows you to define the tools, runtimes, frameworks, editor settings, extensions, and other configuration necessary to restore the development environment automatically. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
You can optimize recovery time by configuring a `devcontainer.json` in the project's repository, which allows you to define the tools, runtimes, frameworks, editor settings, extensions, and other configuration necessary to restore the development environment automatically. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
## Option 2: Wait for recovery
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
---
|
||||
title: Changing the machine type for your codespace
|
||||
shortTitle: Changing the machine type
|
||||
shortTitle: Change the machine type
|
||||
intro: 'You can change the type of machine that''s running your codespace, so that you''re using resources appropriate for work you''re doing.'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
redirect_from:
|
||||
- /codespaces/developing-in-codespaces/changing-the-machine-type-for-your-codespace
|
||||
topics:
|
||||
- Codespaces
|
||||
---
|
||||
@@ -10,8 +10,10 @@ redirect_from:
|
||||
topics:
|
||||
- Codespaces
|
||||
children:
|
||||
- /configuring-codespaces-for-your-project
|
||||
- /personalizing-codespaces-for-your-account
|
||||
- /changing-the-machine-type-for-your-codespace
|
||||
- /setting-your-default-editor-for-codespaces
|
||||
- /setting-your-default-region-for-codespaces
|
||||
- /prebuilding-codespaces-for-your-project
|
||||
---
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ topics:
|
||||
- Set up
|
||||
- Fundamentals
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
shortTitle: Prebuilding Codespaces
|
||||
shortTitle: Prebuild Codespaces
|
||||
---
|
||||
|
||||
{% note %}
|
||||
|
||||
@@ -5,6 +5,8 @@ product: '{% data reusables.gated-features.codespaces %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
redirect_from:
|
||||
- /codespaces/managing-your-codespaces/setting-your-default-editor-for-codespaces
|
||||
topics:
|
||||
- Codespaces
|
||||
shortTitle: Set the default editor
|
||||
@@ -5,6 +5,8 @@ product: '{% data reusables.gated-features.codespaces %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
redirect_from:
|
||||
- /codespaces/managing-your-codespaces/setting-your-default-region-for-codespaces
|
||||
topics:
|
||||
- Codespaces
|
||||
shortTitle: Set the default region
|
||||
@@ -14,6 +14,7 @@ topics:
|
||||
- Codespaces
|
||||
- Fundamentals
|
||||
- Developer
|
||||
shortTitle: Create a codespace
|
||||
---
|
||||
|
||||
## About codespace creation
|
||||
|
||||
@@ -13,6 +13,7 @@ topics:
|
||||
- Codespaces
|
||||
- Fundamentals
|
||||
- Developer
|
||||
shortTitle: Delete a codespace
|
||||
---
|
||||
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ topics:
|
||||
- Codespaces
|
||||
- Fundamentals
|
||||
- Developer
|
||||
shortTitle: Develop in a codespace
|
||||
---
|
||||
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ children:
|
||||
- /using-codespaces-for-pull-requests
|
||||
- /deleting-a-codespace
|
||||
- /forwarding-ports-in-your-codespace
|
||||
- /changing-the-machine-type-for-your-codespace
|
||||
- /using-codespaces-in-visual-studio-code
|
||||
- /using-codespaces-with-github-cli
|
||||
---
|
||||
|
||||
@@ -48,7 +48,7 @@ You can pull changes from the remote repository into your codespace at any time.
|
||||

|
||||
1. In the drop-down menu, click **Pull**.
|
||||
|
||||
If the dev container configuration has been changed since you created the codespace, you can apply the changes by rebuilding the container for the codespace. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project#applying-changes-to-your-configuration)."
|
||||
If the dev container configuration has been changed since you created the codespace, you can apply the changes by rebuilding the container for the codespace. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project#applying-changes-to-your-configuration)."
|
||||
|
||||
## Setting your codespace to automatically fetch new changes
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Enabling Codespaces for your organization
|
||||
shortTitle: Enabling Codespaces
|
||||
shortTitle: Enable Codespaces
|
||||
intro: 'You can control which users in your organization can use {% data variables.product.prodname_codespaces %}.'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
permissions: 'To manage user permissions for {% data variables.product.prodname_codespaces %} for an organization, you must be an organization owner.'
|
||||
@@ -26,6 +26,7 @@ To use codespaces in your organization, you must do the following:
|
||||
- Ensure that users have [at least write access](/organizations/managing-access-to-your-organizations-repositories/repository-permission-levels-for-an-organization) to the repositories where they want to use a codespace.
|
||||
- [Enable {% data variables.product.prodname_codespaces %} for users in your organization](#configuring-which-users-in-your-organization-can-use-codespaces). You can choose allow {% data variables.product.prodname_codespaces %} for selected users or only for specific users.
|
||||
- [Set a spending limit](/billing/managing-billing-for-github-codespaces/managing-spending-limits-for-codespaces)
|
||||
- Ensure that your organization does not have an IP address allow list enabled. For more information, see "[Managing allowed IP addresses for your organization](/organizations/keeping-your-organization-secure/managing-allowed-ip-addresses-for-your-organization)."
|
||||
|
||||
By default, a codespace can only access the repository from which it was created. If you want codespaces in your organization to be able to access other organization repositories that the codespace creator can access, see "[Managing access and security for {% data variables.product.prodname_codespaces %}](/codespaces/managing-codespaces-for-your-organization/managing-access-and-security-for-your-organizations-codespaces)."
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Managing billing for Codespaces in your organization
|
||||
shortTitle: Managing billing for Codespaces
|
||||
shortTitle: Manage billing
|
||||
intro: 'You can check your {% data variables.product.prodname_codespaces %} usage and set usage limits.'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
permissions: 'To manage billing for Codespaces for an organization, you must be an organization owner or a billing manager.'
|
||||
|
||||
@@ -14,7 +14,5 @@ children:
|
||||
- /managing-repository-access-for-your-codespaces
|
||||
- /reviewing-your-security-logs-for-codespaces
|
||||
- /managing-gpg-verification-for-codespaces
|
||||
- /setting-your-default-editor-for-codespaces
|
||||
- /setting-your-default-region-for-codespaces
|
||||
---
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ You can create a codespace from any branch or commit in your repository and begi
|
||||
|
||||
To customize the runtimes and tools in your codespace, you can create a custom configuration to define an environment (or _dev container_) that is specific for your repository. Using a dev container allows you to specify a Docker environment for development with a well-defined tool and runtime stack that can reference an image, Dockerfile, or docker-compose. This means that anyone using the repository will have the same tools available to them when they create a codespace.
|
||||
|
||||
If you don't do any custom configuration, {% data variables.product.prodname_codespaces %} will clone your repository into an environment with the default codespace image that includes many tools, languages, and runtime environments. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
If you don't do any custom configuration, {% data variables.product.prodname_codespaces %} will clone your repository into an environment with the default codespace image that includes many tools, languages, and runtime environments. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
You can also personalize aspects of your codespace environment by using a public [dotfiles](https://dotfiles.github.io/tutorials/) repository and [Settings Sync](https://code.visualstudio.com/docs/editor/settings-sync). Personalization can include shell preferences, additional tools, editor settings, and VS Code extensions. For more information, see "[Customizing your codespace](/codespaces/customizing-your-codespace)".
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
---
|
||||
title: Configuring Codespaces for your project
|
||||
title: Introduction to dev containers
|
||||
intro: 'You can use a `devcontainer.json` file to define a {% data variables.product.prodname_codespaces %} environment for your repository.'
|
||||
allowTitleToDifferFromFilename: true
|
||||
permissions: People with write permissions to a repository can create or edit the codespace configuration.
|
||||
redirect_from:
|
||||
- /github/developing-online-with-github-codespaces/configuring-github-codespaces-for-your-project
|
||||
- /codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project
|
||||
- /github/developing-online-with-codespaces/configuring-codespaces-for-your-project
|
||||
- /codespaces/customizing-your-codespace/configuring-codespaces-for-your-project
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghec: '*'
|
||||
@@ -15,7 +17,6 @@ topics:
|
||||
- Set up
|
||||
- Fundamentals
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
shortTitle: Configure your project
|
||||
---
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: 'Setting up your project for {% data variables.product.prodname_codespaces %}'
|
||||
title: 'Setting up your repository for {% data variables.product.prodname_codespaces %}'
|
||||
allowTitleToDifferFromFilename: true
|
||||
intro: 'Learn how to get started with {% data variables.product.prodname_codespaces %}, including set up and configuration for specific languages.'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
versions:
|
||||
@@ -8,6 +9,8 @@ versions:
|
||||
redirect_from:
|
||||
- /codespaces/getting-started-with-codespaces
|
||||
children:
|
||||
- /configuring-codespaces-for-your-project
|
||||
- /setting-up-your-project-for-codespaces
|
||||
- /setting-up-your-nodejs-project-for-codespaces
|
||||
- /setting-up-your-dotnet-project-for-codespaces
|
||||
- /setting-up-your-java-project-for-codespaces
|
||||
|
||||
@@ -11,6 +11,8 @@ versions:
|
||||
ghec: '*'
|
||||
topics:
|
||||
- Codespaces
|
||||
hasExperimentalAlternative: true
|
||||
hidden: true
|
||||
---
|
||||
|
||||
|
||||
@@ -36,14 +38,14 @@ When you create a codespace, your project is created on a remote VM that is dedi
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
## Step 2: Add a dev container to your codespace from a template
|
||||
|
||||
The default codespaces container comes with the latest .NET version and common tools preinstalled. However, we encourage you to set up a custom container so you can tailor the tools and scripts that run as part of codespace creation to your project's needs and ensure a fully reproducible environment for all {% data variables.product.prodname_codespaces %} users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Configuring Codespaces for your project
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers
|
||||
](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ versions:
|
||||
ghec: '*'
|
||||
topics:
|
||||
- Codespaces
|
||||
hasExperimentalAlternative: true
|
||||
hidden: true
|
||||
---
|
||||
|
||||
|
||||
@@ -35,14 +37,14 @@ When you create a codespace, your project is created on a remote VM that is dedi
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
## Step 2: Add a dev container to your codespace from a template
|
||||
|
||||
The default codespaces container comes with the latest Java version, package managers (Maven, Gradle), and other common tools preinstalled. However, we recommend that you set up a custom container to define the tools and scripts that your project needs. This will ensure a fully reproducible environment for all {% data variables.product.prodname_codespaces %} users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
{% data reusables.codespaces.command-palette-container %}
|
||||
|
||||
@@ -14,6 +14,8 @@ topics:
|
||||
- Developer
|
||||
- Node
|
||||
- JavaScript
|
||||
hasExperimentalAlternative: true
|
||||
hidden: true
|
||||
---
|
||||
|
||||
|
||||
@@ -40,13 +42,13 @@ When you create a codespace, your project is created on a remote VM that is dedi
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
## Step 2: Add a dev container to your codespace from a template
|
||||
|
||||
The default codespaces container will support running Node.js projects like [vscode-remote-try-node](https://github.com/microsoft/vscode-remote-try-node) out of the box. By setting up a custom container you can customize the tools and scripts that run as part of codespace creation and ensure a fully reproducible environment for all {% data variables.product.prodname_codespaces %} users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
|
||||
|
||||
{% data reusables.codespaces.command-palette-container %}
|
||||
3. For this example, click **Node.js**. If you need additional features you can select any container that’s specific to Node or a combination of tools such as Node and MongoDB.
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Adding a dev container to your repository
|
||||
shortTitle: Add a dev container to your repository
|
||||
allowTitleToDifferFromFilename: true
|
||||
intro: 'Get started with your Node.js, Python, .NET, or Java project in {% data variables.product.prodname_codespaces %} by creating a custom dev container.'
|
||||
product: '{% data reusables.gated-features.codespaces %}'
|
||||
versions:
|
||||
fpt: '*'
|
||||
type: tutorial
|
||||
topics:
|
||||
- Codespaces
|
||||
- Developer
|
||||
- Node
|
||||
- JavaScript
|
||||
hasExperimentalAlternative: true
|
||||
interactive: true
|
||||
---
|
||||
|
||||
<!-- This article is specially rendered via the pages/ directory -->
|
||||
@@ -13,6 +13,8 @@ topics:
|
||||
- Codespaces
|
||||
- Developer
|
||||
- Python
|
||||
hasExperimentalAlternative: true
|
||||
hidden: true
|
||||
---
|
||||
|
||||
|
||||
@@ -40,14 +42,14 @@ When you create a codespace, your project is created on a remote VM that is dedi
|
||||
|
||||
You can customize your codespace by adjusting the amount of vCPUs and RAM, [adding dotfiles to personalize your environment](/codespaces/setting-up-your-codespace/personalizing-codespaces-for-your-account), or by modifying the tools and scripts installed.
|
||||
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
{% data variables.product.prodname_codespaces %} uses a file called `devcontainer.json` to store configurations. On launch {% data variables.product.prodname_codespaces %} uses the file to install any tools, dependencies, or other set up that might be needed for the project. For more information, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
## Step 2: Add a dev container to your codespace from a template
|
||||
|
||||
The default codespaces container comes with the latest Python version, package managers (pip, Miniconda), and other common tools preinstalled. However, we recommend that you set up a custom container to define the tools and scripts that your project needs. This will ensure a fully reproducible environment for all {% data variables.product.prodname_codespaces %} users in your repository.
|
||||
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Configuring Codespaces for your project](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
To set up your project with a custom container, you will need to use a `devcontainer.json` file to define the environment. In {% data variables.product.prodname_codespaces %} you can add this either from a template or you can create your own. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)."
|
||||
|
||||
|
||||
{% data reusables.codespaces.command-palette-container %}
|
||||
|
||||
@@ -7,7 +7,7 @@ redirect_from:
|
||||
- /github/using-git/caching-your-github-credentials-in-git
|
||||
- /github/getting-started-with-github/caching-your-github-credentials-in-git
|
||||
- /github/getting-started-with-github/getting-started-with-git/caching-your-github-credentials-in-git
|
||||
intro: 'If you''re [cloning {% data variables.product.product_name %} repositories using HTTPS](/github/getting-started-with-github/about-remote-repositories), we recommend you use {% data variables.product.prodname_cli %} or Git Credential Manager Core (GCM Core) to remember your credentials.'
|
||||
intro: 'If you''re [cloning {% data variables.product.product_name %} repositories using HTTPS](/github/getting-started-with-github/about-remote-repositories), we recommend you use {% data variables.product.prodname_cli %} or Git Credential Manager (GCM) to remember your credentials.'
|
||||
versions:
|
||||
fpt: '*'
|
||||
ghes: '*'
|
||||
@@ -33,9 +33,9 @@ shortTitle: Caching credentials
|
||||
|
||||
For more information about authenticating with {% data variables.product.prodname_cli %}, see [`gh auth login`](https://cli.github.com/manual/gh_auth_login).
|
||||
|
||||
## Git Credential Manager Core
|
||||
## Git Credential Manager
|
||||
|
||||
[Git Credential Manager Core](https://github.com/microsoft/Git-Credential-Manager-Core) (GCM Core) is another way to store your credentials securely and connect to GitHub over HTTPS. With GCM Core, you don't have to manually [create and store a PAT](/github/authenticating-to-github/creating-a-personal-access-token), as GCM Core manages authentication on your behalf, including 2FA (two-factor authentication).
|
||||
[Git Credential Manager](https://github.com/GitCredentialManager/git-credential-manager) (GCM) is another way to store your credentials securely and connect to GitHub over HTTPS. With GCM, you don't have to manually [create and store a PAT](/github/authenticating-to-github/creating-a-personal-access-token), as GCM manages authentication on your behalf, including 2FA (two-factor authentication).
|
||||
|
||||
{% mac %}
|
||||
|
||||
@@ -44,12 +44,12 @@ For more information about authenticating with {% data variables.product.prodnam
|
||||
$ brew install git
|
||||
```
|
||||
|
||||
2. Install GCM Core using Homebrew:
|
||||
2. Install GCM using Homebrew:
|
||||
```shell
|
||||
$ brew tap microsoft/git
|
||||
$ brew install --cask git-credential-manager-core
|
||||
```
|
||||
For MacOS, you don't need to run `git config` because GCM Core automatically configures Git for you.
|
||||
For MacOS, you don't need to run `git config` because GCM automatically configures Git for you.
|
||||
|
||||
{% data reusables.gcm-core.next-time-you-clone %}
|
||||
|
||||
@@ -59,7 +59,7 @@ Once you've authenticated successfully, your credentials are stored in the macOS
|
||||
|
||||
{% windows %}
|
||||
|
||||
1. Install Git for Windows, which includes GCM Core. For more information, see "[Git for Windows releases](https://github.com/git-for-windows/git/releases/latest)" from its [releases page](https://github.com/git-for-windows/git/releases/latest).
|
||||
1. Install Git for Windows, which includes GCM. For more information, see "[Git for Windows releases](https://github.com/git-for-windows/git/releases/latest)" from its [releases page](https://github.com/git-for-windows/git/releases/latest).
|
||||
|
||||
We recommend always installing the latest version. At a minimum, install version 2.29 or higher, which is the first version offering OAuth support for GitHub.
|
||||
|
||||
@@ -85,13 +85,13 @@ Once you've authenticated successfully, your credentials are stored in the Windo
|
||||
|
||||
{% linux %}
|
||||
|
||||
For Linux, install Git and GCM Core, then configure Git to use GCM Core.
|
||||
For Linux, install Git and GCM, then configure Git to use GCM.
|
||||
|
||||
1. Install Git from your distro's packaging system. Instructions will vary depending on the flavor of Linux you run.
|
||||
|
||||
2. Install GCM Core. See the [instructions in the GCM Core repo](https://github.com/microsoft/Git-Credential-Manager-Core#linux-install-instructions), as they'll vary depending on the flavor of Linux you run.
|
||||
2. Install GCM. See the [instructions in the GCM repo](https://github.com/GitCredentialManager/git-credential-manager#linux-install-instructions), as they'll vary depending on the flavor of Linux you run.
|
||||
|
||||
3. Configure Git to use GCM Core. There are several backing stores that you may choose from, so see the GCM Core docs to complete your setup. For more information, see "[GCM Core Linux](https://aka.ms/gcmcore-linuxcredstores)."
|
||||
3. Configure Git to use GCM. There are several backing stores that you may choose from, so see the GCM docs to complete your setup. For more information, see "[GCM Linux](https://aka.ms/gcmcore-linuxcredstores)."
|
||||
|
||||
{% data reusables.gcm-core.next-time-you-clone %}
|
||||
|
||||
@@ -103,4 +103,4 @@ For more options for storing your credentials on Linux, see [Credential Storage]
|
||||
|
||||
<br>
|
||||
|
||||
For more information or to report issues with GCM Core, see the official GCM Core docs at "[Git Credential Manager Core](https://github.com/microsoft/Git-Credential-Manager-Core)."
|
||||
For more information or to report issues with GCM, see the official GCM docs at "[Git Credential Manager](https://github.com/GitCredentialManager/git-credential-manager)."
|
||||
|
||||
@@ -18,7 +18,7 @@ shortTitle: macOS Keychain credentials
|
||||
|
||||
**Note:** Updating credentials from the macOS Keychain only applies to users who manually configured a PAT using the `osxkeychain` helper that is built-in to macOS.
|
||||
|
||||
We recommend you either [configure SSH](/articles/generating-an-ssh-key) or upgrade to the [Git Credential Manager Core](/get-started/getting-started-with-git/caching-your-github-credentials-in-git) (GCM Core) instead. GCM Core can manage authentication on your behalf (no more manual PATs) including 2FA (two-factor auth).
|
||||
We recommend you either [configure SSH](/articles/generating-an-ssh-key) or upgrade to the [Git Credential Manager](/get-started/getting-started-with-git/caching-your-github-credentials-in-git) (GCM) instead. GCM can manage authentication on your behalf (no more manual PATs) including 2FA (two-factor auth).
|
||||
|
||||
{% endtip %}
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ git push --set-upstream origin main
|
||||
|
||||
### Example: contribute to an existing branch on {% data variables.product.product_name %}
|
||||
|
||||
This example assumes that you already have a project called `repo` already on the machine and that a new branch has been pushed to {% data variables.product.product_name %} since the last time changes were made locally.
|
||||
This example assumes that you already have a project called `repo` on the machine and that a new branch has been pushed to {% data variables.product.product_name %} since the last time changes were made locally.
|
||||
|
||||
```bash
|
||||
# change into the `repo` directory
|
||||
|
||||
@@ -19,16 +19,16 @@ Use the project command palette to quickly change settings and run commands in y
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing any part of a command or navigate through the command palette window to find a command. See the next sections for more examples of commands.
|
||||
|
||||
## Change layout
|
||||
## Changing the project layout
|
||||
|
||||
You can view your project as a table or as a board.
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Switch layout".
|
||||
3. Select the desired command (for example: "Switch layout: Table").
|
||||
3. Alternatively, select the drop-down menu next to a view name and click **Table** or **Board**.
|
||||
3. Choose the required command. For example, **Switch layout: Table**.
|
||||
3. Alternatively, click the drop-down menu next to a view name and click **Table** or **Board**.
|
||||
|
||||
## Show or hide fields
|
||||
## Showing and hiding fields
|
||||
|
||||
You can show or hide a specific field.
|
||||
|
||||
@@ -36,38 +36,38 @@ In table layout:
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing the action you want to take ("show" or "hide") or the name of the field.
|
||||
3. Select the desired command (for example: "Show: Milestone").
|
||||
3. Choose the required command. For example, **Show: Milestone**.
|
||||
4. Alternatively, click {% octicon "plus" aria-label="the plus icon" %} to the right of the table. In the drop-down menu that appears, indicate which fields to show or hide. A {% octicon "check" aria-label="check icon" %} indicates which fields are displayed.
|
||||
5. Alternatively, select the drop-down menu next to the field name and click **Hide field**.
|
||||
5. Alternatively, click the drop-down menu next to the field name and click **Hide field**.
|
||||
|
||||
In board layout:
|
||||
|
||||
1. Select the drop-down menu next to the view name.
|
||||
1. Click the drop-down menu next to the view name.
|
||||
2. Under **configuration**, click {% octicon "list-unordered" aria-label="the unordered list icon" %}.
|
||||
3. In the menu that appears, select fields to add them and deselect fields to remove them from the view.
|
||||
3. In the menu that's displayed, select fields to add them and deselect fields to remove them from the view.
|
||||
|
||||
## Reorder fields
|
||||
## Reordering fields
|
||||
|
||||
You can change the order of fields.
|
||||
|
||||
1. Click the field header.
|
||||
2. While clicking, drag the field to the desired location.
|
||||
2. While clicking, drag the field to the required location.
|
||||
|
||||
## Reorder rows
|
||||
## Reordering rows
|
||||
|
||||
In table layout, you can change the order of rows.
|
||||
|
||||
1. Click the number at the start of the row.
|
||||
2. While clicking, drag the row to the desired location.
|
||||
2. While clicking, drag the row to the required location.
|
||||
|
||||
## Sort
|
||||
## Sorting by field values
|
||||
|
||||
In table layout, you can sort items by a field value.
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Sort by" or the name of the field you want to sort by.
|
||||
3. Select the desired command (for example: "Sort by: Assignees, asc").
|
||||
4. Alternatively, select the drop-down menu next to the field name that you want to sort by and click **Sort ascending** or **Sort descending**.
|
||||
3. Choose the required command. For example, **Sort by: Assignees, asc**.
|
||||
4. Alternatively, click the drop-down menu next to the field name that you want to sort by and click **Sort ascending** or **Sort descending**.
|
||||
|
||||
{% note %}
|
||||
|
||||
@@ -79,12 +79,12 @@ Follow similar steps to remove a sort.
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Remove sort-by".
|
||||
3. Select the "Remove sort-by" command.
|
||||
4. Alternatively, select the drop-down menu next to the view name and click the menu item that indicates the current sort.
|
||||
3. Choose **Remove sort-by**.
|
||||
4. Alternatively, click the drop-down menu next to the view name and click the menu item that indicates the current sort.
|
||||
|
||||
## Group
|
||||
## Grouping by field values
|
||||
|
||||
In the table layout, you can group items by a custom field value. When items are grouped, if you drag an item to a new group, the value of that group is applied. For example, if you group by `Status` and then drag an item with a status of `In progress` to the `Done` group, the status of the item will switch to `Done`.
|
||||
In the table layout, you can group items by a custom field value. When items are grouped, if you drag an item to a new group, the value of that group is applied. For example, if you group by "Status" and then drag an item with a status of `In progress` to the `Done` group, the status of the item will switch to `Done`.
|
||||
|
||||
{% note %}
|
||||
|
||||
@@ -94,17 +94,17 @@ In the table layout, you can group items by a custom field value. When items are
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Group by" or the name of the field you want to group by.
|
||||
3. Select the desired command (e.g. "Group by: Status").
|
||||
4. Alternatively, select the drop-down menu next to the field name that you want to group by and click **Group by values**.
|
||||
3. Choose the required command. For example, **Group by: Status**.
|
||||
4. Alternatively, click the drop-down menu next to the field name that you want to group by and click **Group by values**.
|
||||
|
||||
Follow similar steps to remove a grouping.
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Remove group-by".
|
||||
3. Select the "Remove group-by" command.
|
||||
4. Alternatively, select the drop-down menu next to the view name and click the menu item that indicates the current grouping.
|
||||
3. Choose **Remove group-by**.
|
||||
4. Alternatively, click the drop-down menu next to the view name and click the menu item that indicates the current grouping.
|
||||
|
||||
## Filter
|
||||
## Filtering rows
|
||||
|
||||
Click {% octicon "search" aria-label="the search icon" %} at the top of the table to show the "Filter by keyword or field" bar. Start typing the field name and value that you want to filter by. As you type, possible values will appear.
|
||||
|
||||
@@ -118,41 +118,66 @@ Alternatively, use the command palette.
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Filter by" or the name of the field you want to filter by.
|
||||
3. Select the desired command (e.g. "Filter by Status").
|
||||
4. Enter the value that you want to filter for (for example: "In progress"). You can also filter for the absence of specific values (for example: "Exclude status") or the absence of all values (for example: "No status").
|
||||
3. Choose the required command. For example, **Filter by Status**.
|
||||
4. Enter the value that you want to filter for. For example: "In progress". You can also filter for the absence of specific values (for example, choose "Exclude status" then choose a status) or the absence of all values (for example, "No status").
|
||||
|
||||
In board layout, you can click on item data to filter for items with that value. For example, click on an assignee to show only items for that assignee. To remove the filter, click the item data again.
|
||||
|
||||
## Save views
|
||||
## Creating a project view
|
||||
|
||||
Saved views allow you to quickly view specific aspects of your project. For example, you could have the following:
|
||||
- a view that shows all un-started items (filter on "Status").
|
||||
- a view that shows the workload for each team member (group by "Asssignee" and filter on "Status").
|
||||
- a view that shows the items with the earliest target ship date (sort by a date field).
|
||||
Project views allow you to quickly view specific aspects of your project. Each view is displayed on a separate tab in your project.
|
||||
|
||||
The following steps demonstrate how to add a new view:
|
||||
For example, you can have:
|
||||
- A view that shows all items not yet started (filter on "Status").
|
||||
- A view that shows the workload for each team member (group by "Assignee" and filter on "Status").
|
||||
- A view that shows the items with the earliest target ship date (sort by a date field).
|
||||
|
||||
To add a new view:
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "New view" (to create a new view) or "Duplicate view" (to duplicate the current view).
|
||||
3. Select the desired command.
|
||||
3. Choose the required command.
|
||||
4. Alternatively, click {% octicon "plus" aria-label="the plus icon" %} **New view** next to the rightmost view.
|
||||
5. Alternatively, select the drop-down menu next to a view name and click **Duplicate view**.
|
||||
5. Alternatively, click the drop-down menu next to a view name and click **Duplicate view**.
|
||||
|
||||
When you make changes to a view, a dot appears next to the view name to indicate that the view has been modified. If you don't want to save the changes, you can ignore this indicator. To save the view for all project members:
|
||||
The new view is automatically saved.
|
||||
|
||||
## Saving changes to a view
|
||||
|
||||
When you make changes to a view - for example, sorting, reordering, filtering, or grouping the data in a view - a dot is displayed next to the view name to indicate that there are unsaved changes.
|
||||
|
||||

|
||||
|
||||
If you don't want to save the changes, you can ignore this indicator. No one else will see your changes.
|
||||
|
||||
To save the current configuration of the view for all project members:
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
1. Start typing "Save view" or "Save changes to new view".
|
||||
1. Select the desired command.
|
||||
1. Alternatively, select the drop-down menu next to a view name and click **Save view** or **Save changes to new view**.
|
||||
1. Choose the required command.
|
||||
1. Alternatively, click the drop-down menu next to a view name and click **Save view** or **Save changes to new view**.
|
||||
|
||||
To rename a view, double click on the view name and type the desired name.
|
||||
## Reordering saved views
|
||||
|
||||
To change the order of the tabs that contain your saved views, click and drag a tab to a new location.
|
||||
|
||||
The new tab order is automatically saved.
|
||||
|
||||
## Renaming a saved view
|
||||
|
||||
To rename a view:
|
||||
1. Double click the name in the project tab.
|
||||
1. Change the name.
|
||||
1. Press Enter, or click outside of the tab.
|
||||
|
||||
The name change is automatically saved.
|
||||
|
||||
## Deleting a saved view
|
||||
|
||||
To delete a view:
|
||||
|
||||
1. {% data reusables.projects.open-command-palette %}
|
||||
2. Start typing "Delete view".
|
||||
3. Select the desired command.
|
||||
4. Alternatively, select the drop-down menu next to a view name and click **Delete view**.
|
||||
3. Choose the required command.
|
||||
4. Alternatively, click the drop-down menu next to a view name and click **Delete view**.
|
||||
|
||||
## Further reading
|
||||
|
||||
|
||||
@@ -15,9 +15,9 @@ topics:
|
||||
|
||||
## About project access
|
||||
|
||||
Admins of organization-level projects can manage access to their organization's projects for everyone in the organization. Organization project admins can also manage access for individual organization members.
|
||||
Admins of organization-level projects can manage access for the entire organization, for teams, and for individual organization members.
|
||||
|
||||
Admins of user-level projects can invite collaborators and manage access for individual collaborators.
|
||||
Admins of user-level projects can invite individual collaborators and manage their access.
|
||||
|
||||
Project admins can also control the visibility of their project for everyone on the internet. For more information, see "[Managing the visibility of your projects](/issues/trying-out-the-new-projects-experience/managing-the-visibility-of-your-projects)."
|
||||
|
||||
@@ -35,17 +35,19 @@ The default base role is `write`, meaning that everyone in the organization can
|
||||
- **Write**: Everyone in the organization can see and edit the project. Organization owners are also admins for the project.
|
||||
- **Admin**: Everyone in the organization is an admin for the project.
|
||||
|
||||
### Managing access for individual members of your organization
|
||||
### Managing access for teams and individual members of your organization
|
||||
|
||||
You can also add individual organization members as collaborators to your project. Only organization members can be added as collaborators to organization projects.
|
||||
You can also add teams, and individual organization members, as collaborators. For more information, see "[About teams](/organizations/organizing-members-into-teams/about-teams)."
|
||||
|
||||
You can only invite an individual user to collaborate on your organization-level project if they are a member of the organization.
|
||||
|
||||
{% data reusables.projects.project-settings %}
|
||||
1. Click **Manage access**.
|
||||
1. Under **Invite collaborators**, search for the organization member that you want to invite.
|
||||
1. Under **Invite collaborators**, search for the team or organization member that you want to invite.
|
||||
1. Select the role for the collaborator.
|
||||
- **Read**: The individual can view the project.
|
||||
- **Write**: The individual can view and edit the project.
|
||||
- **Admin**: The individual can view, edit, and add new collaborators to the project.
|
||||
- **Read**: The team or individual can view the project.
|
||||
- **Write**: The team or individual can view and edit the project.
|
||||
- **Admin**: The team or individual can view, edit, and add new collaborators to the project.
|
||||
1. Click **Invite**.
|
||||
|
||||
### Managing access of an existing collaborator on your project
|
||||
@@ -53,6 +55,9 @@ You can also add individual organization members as collaborators to your projec
|
||||
{% data reusables.projects.project-settings %}
|
||||
1. Click **Manage access**.
|
||||
1. Under **Manage access**, find the collaborator(s) whose permissions you want to modify.
|
||||
|
||||
You can use the **Type** and **Role** drop-down menus to filter the access list.
|
||||
|
||||
1. Edit the role for the collaborator(s) or click {% octicon "trash" aria-label="the trash icon" %} to remove the collaborator(s).
|
||||
|
||||
## Managing access for user-level projects
|
||||
@@ -79,4 +84,7 @@ This only affects collaborators for your project, not for repositories in your p
|
||||
{% data reusables.projects.project-settings %}
|
||||
1. Click **Manage access**.
|
||||
1. Under **Manage access**, find the collaborator(s) whose permissions you want to modify.
|
||||
|
||||
You can use the **Role** drop-down menu to filter the access list.
|
||||
|
||||
1. Edit the role for the collaborator(s) or click {% octicon "trash" aria-label="the trash icon" %} to remove the collaborator(s).
|
||||
|
||||
@@ -38,11 +38,79 @@ remote: error: Required status check "ci-build" is failing
|
||||
|
||||
{% ifversion fpt or ghae or ghes or ghec %}
|
||||
|
||||
## Conflicts between head commit and test merge commit
|
||||
|
||||
Sometimes, the results of the status checks for the test merge commit and head commit will conflict. If the test merge commit has a status, the test merge commit must pass. Otherwise, the status of the head commit must pass before you can merge the branch. For more information about test merge commits, see "[Pulls](/rest/reference/pulls#get-a-pull-request)."
|
||||
|
||||

|
||||
{% endif %}
|
||||
|
||||
## Handling skipped but required checks
|
||||
|
||||
Sometimes a required status check is skipped on pull requests due to path filtering. For example, a Node.JS test will be skipped on a pull request that just fixes a typo in your README file and makes no changes to the JavaScript and TypeScript files in the `scripts` directory.
|
||||
|
||||
If this check is required and it gets skipped, then the check's status is shown as pending, because it's required. In this situation you won't be able to merge the pull request.
|
||||
|
||||
### Example
|
||||
|
||||
In this example you have a workflow that's required to pass.
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'scripts/**'
|
||||
- 'middleware/**'
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [12.x, 14.x, 16.x]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'npm'
|
||||
- run: npm ci
|
||||
- run: npm run build --if-present
|
||||
- run: npm test
|
||||
```
|
||||
|
||||
If someone submits a pull request that changes a markdown file in the root of the repository, then the workflow above won't run at all because of the path filtering. As a result you won't be able to merge the pull request. You would see the following status on the pull request:
|
||||
|
||||

|
||||
|
||||
You can fix this by creating a generic workflow, with the same name, that will return true in any case similar to the workflow below :
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
on:
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'scripts/**'
|
||||
- 'middleware/**'
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- run: 'echo "No build required" '
|
||||
```
|
||||
Now the checks will always pass whenever someone sends a pull request that doesn't change the files listed under `paths` in the first workflow.
|
||||
|
||||

|
||||
|
||||
{% note %}
|
||||
|
||||
**Notes:**
|
||||
* Make sure that the `name` key and required job name in both the workflow files are the same. For more information, see "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/reference/workflow-syntax-for-github-actions)".
|
||||
* The example above uses {% data variables.product.prodname_actions %} but this workaround is also applicable to other CI/CD providers that integrate with {% data variables.product.company_short %}.
|
||||
|
||||
{% endnote %}
|
||||
|
||||
It's also possible for a protected branch to require a status check from a specific {% data variables.product.prodname_github_app %}. If you see a message similar to the following, then you should verify that the check listed in the merge box was set by the expected app.
|
||||
|
||||
```
|
||||
|
||||
@@ -52,13 +52,14 @@ This API is only available to authenticated members of the team's organization.
|
||||
{% if operation.subcategory == 'members' %}{% include rest_operation %}{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% ifversion ghec %}
|
||||
{% ifversion ghec or ghae %}
|
||||
## External groups
|
||||
|
||||
The external groups API allows you to view the external identity provider groups that are available to your organization and manage the connection between external groups and teams in your organization.
|
||||
|
||||
To use this API, the authenticated user must be a team maintainer or an owner of the organization associated with the team.
|
||||
|
||||
{% ifversion ghec %}
|
||||
{% note %}
|
||||
|
||||
**Notes:**
|
||||
@@ -67,6 +68,7 @@ To use this API, the authenticated user must be a team maintainer or an owner of
|
||||
- If your organization uses team synchronization, you can use the Team Synchronization API. For more information, see "[Team synchronization API](#team-synchronization)."
|
||||
|
||||
{% endnote %}
|
||||
{% endif %}
|
||||
|
||||
{% for operation in currentRestOperations %}
|
||||
{% if operation.subcategory == 'external-groups' %}{% include rest_operation %}{% endif %}
|
||||
|
||||
@@ -59,9 +59,9 @@ sections:
|
||||
notes:
|
||||
# https://github.com/github/releases/issues/1406
|
||||
- |
|
||||
Git Credential Manager (GCM) Core versions 2.0.452 and later now provide security-hardened credential storage and multi-factor authentication support for {% data variables.product.product_name %}.
|
||||
Git Credential Manager (GCM) versions 2.0.452 and later now provide security-hardened credential storage and multi-factor authentication support for {% data variables.product.product_name %}.
|
||||
|
||||
GCM Core with support for {% data variables.product.product_name %} is included with [Git for Windows](https://gitforwindows.org) versions 2.32 and later. GCM Core is not included with Git for macOS or Linux, but can be installed separately. For more information, see the [latest release](https://github.com/microsoft/Git-Credential-Manager-Core/releases/) and [installation instructions](https://github.com/microsoft/Git-Credential-Manager-Core/releases/) in the `microsoft/Git-Credential-Manager-Core` repository.
|
||||
GCM with support for {% data variables.product.product_name %} is included with [Git for Windows](https://gitforwindows.org) versions 2.32 and later. GCM is not included with Git for macOS or Linux, but can be installed separately. For more information, see the [latest release](https://github.com/GitCredentialManager/git-credential-manager/releases/) and [installation instructions](https://github.com/GitCredentialManager/git-credential-manager/releases/) in the `GitCredentialManager/git-credential-manager` repository.
|
||||
|
||||
changes:
|
||||
- heading: Administration Changes
|
||||
|
||||
@@ -57,9 +57,9 @@ sections:
|
||||
notes:
|
||||
# https://github.com/github/releases/issues/1406
|
||||
- |
|
||||
Git Credential Manager (GCM) Core versions 2.0.452 and later now provide security-hardened credential storage and multi-factor authentication support for {% data variables.product.product_name %}.
|
||||
Git Credential Manager (GCM) versions 2.0.452 and later now provide security-hardened credential storage and multi-factor authentication support for {% data variables.product.product_name %}.
|
||||
|
||||
GCM Core with support for {% data variables.product.product_name %} is included with [Git for Windows](https://gitforwindows.org) versions 2.32 and later. GCM Core is not included with Git for macOS or Linux, but can be installed separately. For more information, see the [latest release](https://github.com/microsoft/Git-Credential-Manager-Core/releases/) and [installation instructions](https://github.com/microsoft/Git-Credential-Manager-Core/releases/) in the `microsoft/Git-Credential-Manager-Core` repository.
|
||||
GCM with support for {% data variables.product.product_name %} is included with [Git for Windows](https://gitforwindows.org) versions 2.32 and later. GCM is not included with Git for macOS or Linux, but can be installed separately. For more information, see the [latest release](https://github.com/GitCredentialManager/git-credential-manager/releases/) and [installation instructions](https://github.com/GitCredentialManager/git-credential-manager/releases/) in the `GitCredentialManager/git-credential-manager` repository.
|
||||
|
||||
changes:
|
||||
- heading: Administration Changes
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
date: '2021-11-23'
|
||||
intro: Downloads have been disabled due to a major bug affecting multiple customers. A fix will be available in the next patch.
|
||||
sections:
|
||||
security_fixes:
|
||||
- Packages have been updated to the latest security versions.
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
| <nobr>Type of analysis</nobr> | Options for generating alerts |
|
||||
|------------------|-------------------------------|
|
||||
{%- ifversion fpt or ghes > 3.0 or ghae-next %}
|
||||
| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or running {% data variables.product.prodname_codeql %} analysis in a third-party continuous integration (CI) system (see "[About {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/secure-coding/about-codeql-code-scanning-in-your-ci-system)").
|
||||
| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or running {% data variables.product.prodname_codeql %} analysis in a third-party continuous integration (CI) system (see "[About {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} in your CI system](/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/about-codeql-code-scanning-in-your-ci-system)").
|
||||
{%- else %}
|
||||
| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running {% data variables.product.prodname_codeql %} code scanning in your CI system](/github/finding-security-vulnerabilities-and-errors-in-your-code/running-codeql-code-scanning-in-your-ci-system)").
|
||||
| {% data variables.product.prodname_codeql %} | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or using the {% data variables.product.prodname_codeql_runner %} in a third-party continuous integration (CI) system (see "[Running {% data variables.product.prodname_codeql_runner %} in your CI system](/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/running-codeql-runner-in-your-ci-system)").
|
||||
{%- endif %}
|
||||
| Third‑party | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/github/finding-security-vulnerabilities-and-errors-in-your-code/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or generated externally and uploaded to {% data variables.product.product_name %} (see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/github/finding-security-vulnerabilities-and-errors-in-your-code/uploading-a-sarif-file-to-github)").|
|
||||
| Third‑party | Using {% data variables.product.prodname_actions %} (see "[Setting up {% data variables.product.prodname_code_scanning %} using actions](/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/setting-up-code-scanning-for-a-repository#setting-up-code-scanning-using-actions)") or generated externally and uploaded to {% data variables.product.product_name %} (see "[Uploading a SARIF file to {% data variables.product.prodname_dotcom %}](/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github)").|
|
||||
|
||||
@@ -85,6 +85,8 @@ GitHub | GitHub Refresh Token | github_refresh_token{% endif %}
|
||||
{%- ifversion fpt or ghec or ghes > 3.1 or ghae-next %}
|
||||
GitHub | GitHub App Installation Access Token | github_app_installation_access_token{% endif %}
|
||||
GitHub | GitHub SSH Private Key | github_ssh_private_key
|
||||
{%- ifversion fpt or ghec or ghes > 3.3 %}
|
||||
GitLab | GitLab Access Token | gitlab_access_token{% endif %}
|
||||
GoCardless | GoCardless Live Access Token | gocardless_live_access_token
|
||||
GoCardless | GoCardless Sandbox Access Token | gocardless_sandbox_access_token
|
||||
{%- ifversion fpt or ghec or ghes > 3.2 %}
|
||||
@@ -205,6 +207,8 @@ Stripe | Stripe Test API Restricted Key | stripe_test_restricted_key{% endif %}
|
||||
{%- ifversion fpt or ghec or ghes > 3.1 or ghae-next %}
|
||||
Stripe | Stripe Webhook Signing Secret | stripe_webhook_signing_secret{% endif %}
|
||||
{%- ifversion fpt or ghec or ghes > 3.1 or ghae-next %}
|
||||
{%- ifversion fpt or ghec or ghes > 3.3 %}
|
||||
Supabase | Supabase Service Key | supabase_service_key{% endif %}
|
||||
Tableau | Tableau Personal Access Token | tableau_personal_access_token{% endif %}
|
||||
{%- ifversion fpt or ghec or ghes > 3.1 or ghae-next %}
|
||||
Telegram | Telegram Bot Token | telegram_bot_token{% endif %}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:efaefce9ce77966afdccbed24e3cfdeb04508923683450898568b961eeb807bb
|
||||
size 640756
|
||||
oid sha256:4049476895fb239bc51e71ebd336338d41529afc67d2098dce429533dc003237
|
||||
size 641041
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1e737a724e365057b23d4c03627796d0150867f6a1c73f6a3506833c6b579480
|
||||
size 1111738
|
||||
oid sha256:b0b2a1a218d1543eb344ae20b572c55b3e95859c5f6418dca4f7738ea730489c
|
||||
size 1111649
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:861c5657cb55282c9550e9e16a10991040c2ec39b918ec2a3ae5e3446d59b1b2
|
||||
size 945491
|
||||
oid sha256:7166c39064400d935ff68fd4194d024349115b4015d7584f63a14e571b80f113
|
||||
size 944974
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:550c3a59baf406a1838e3e0c996a693d7832a7c20985f26a5854c2bb47ffbd8d
|
||||
size 3861030
|
||||
oid sha256:2ab881358f1b65eafb4780c410dc4cd0252cd02171e3faf47c0d8938e930bbfa
|
||||
size 3858188
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e6eae865768d5e252006bb37bfe98e693ad1bce21f63fe08000b992aeec317ad
|
||||
size 584415
|
||||
oid sha256:2f88d199c16319f387dc7befa2247fdf161a1ff43c149ecb1474f68da324a301
|
||||
size 584420
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ebe6e2590aed86d25f4256aa281f6ec5f567769c057ab690e51cf5ceefd7641f
|
||||
size 2454460
|
||||
oid sha256:2034c5b57c8f2fa0e1c49c827a213b0472109bff6cdf11067bf58912b0698e6a
|
||||
size 2455540
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8c2920e1f86bcc22581f492743dbddf404bbb6142f376aafb318be320ee7c58e
|
||||
size 666671
|
||||
oid sha256:995025c3a0e1fdda18833647304d9eae5b457f3858a8dffa41b47424105b94e1
|
||||
size 666491
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b6b905a5a1425c8d5f781a1655248dd163fd1bb60f55de2de5a998debeb695bd
|
||||
size 3450864
|
||||
oid sha256:a0a5ee449971aad8ba85fb09e59062fee537eaea68340681c2966fb4f41752df
|
||||
size 3450524
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0bb541059dc4bce15e458f99c07b62da02533b3046f3d207d5bebe6ae6c6b917
|
||||
size 545000
|
||||
oid sha256:ea29db113ce85355e408b98557371bd7a31d53f4762a12a5c21e39fc9f305aca
|
||||
size 544965
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:87f3fa648e6383fbfb50d4509f76c21b8fdd84f0838a9d283a2b5630f2df3210
|
||||
size 2231702
|
||||
oid sha256:84c39d3b1c41752c800066cb8a5edcb17958c47a285c55e4ce04640babb70294
|
||||
size 2233851
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3cbcc3c14bab0d2f1384aa20f898a7848ef0fcb77d3d5be4b0bc069b9f830cb6
|
||||
size 655474
|
||||
oid sha256:4cb5ad2c1880cfa82c66379bd78ecb662809dd42df225f42c2ef5fa1a56a3932
|
||||
size 655625
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d669a4b1a0ae427bd7bae5218fab34d6c145781d4468424630602aef709dcb3
|
||||
size 1144107
|
||||
oid sha256:aaaaa5076b294583fae46c0e057558041cb0d804800dc9f18c604f8cabbc02c6
|
||||
size 1144090
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:689ecceb0eba9f40584a1f9155e25db69ec9753891e7f346d77559a0be402587
|
||||
size 969694
|
||||
oid sha256:2a8af3d531106d3f834ec517068786b91dd52cb9caf1c2fb8d06acf50c1d4643
|
||||
size 970024
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:207f65077f115ba4377f8b35cd967d554df478ee5329219fd8d993979740bbee
|
||||
size 3949180
|
||||
oid sha256:a52ee2080910250bde000300baf084993d065171a5591f2b369bf867f31f7bae
|
||||
size 3951668
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0846b0f959486619cd5683e41ca4c85378a3af2556d9d9f972899b82dae19b99
|
||||
size 596853
|
||||
oid sha256:241912f2b98df27791f1aae857b74571e7ef08fb9b745b10ec8ea61f61dc20dd
|
||||
size 597228
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8d1029a04799a059f5f776018ce16b661fba67014b17173c0888deecd9fc4e39
|
||||
size 2514009
|
||||
oid sha256:23d4b5c4f3ed1c7ec69d038c5ca55fd5886d9baf932c00699ccfa995d4595e90
|
||||
size 2514879
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b65cd4a2462bd65d1ac547bfbbc884399d0ba0d9a09ed5752a495929749ec76c
|
||||
size 681289
|
||||
oid sha256:e520026797499331e24221d53fd73c24fcf935225aeb4c548613b366748adfc4
|
||||
size 681223
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dc8f3ef008f7352e7bb59e46316310e69f9742a59303d89f5c056d123504b8de
|
||||
size 3533341
|
||||
oid sha256:77a9b49b1b495ffd78c382b9325ad5d58d819577c4ab14533861826f476de0f6
|
||||
size 3533386
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:93990fab896f7a9dee588381562646364f7df374b4e0307d6e5e82dae1ed72bc
|
||||
size 557189
|
||||
oid sha256:264928ca75f4ac57c795299d25af5ca67d9240baa9918377831f552c33e3eda7
|
||||
size 557069
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4a094382184020427beddb67e54b94f35c0df02b351bbe5b61eb7d534c850b2e
|
||||
size 2287492
|
||||
oid sha256:67aad2a80ed7724c9f58a7daf685a33abbefd97f9f0c2ec21529db1eb1d5a649
|
||||
size 2289490
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4ee1eb1b5a317fa3cc190e39c4cde2a2ebc9f203a4c5418653add5c18128013
|
||||
size 668826
|
||||
oid sha256:4f2aa508681440af8d93fc5b4f10ef5753627be6f80c1c2c08b89c35c40e11b0
|
||||
size 668718
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8940f8b3d22879b2c3462638baf4f828c013bfd1c0c03f13dc9cf82b29fdfd5a
|
||||
size 1168845
|
||||
oid sha256:4d832c1719ed684a7f5b35953d50d7250a5938c021c7829989e5e0393160b908
|
||||
size 1169094
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f3f2f395b55b9a99813fafdc0d8fd54f6fed8aff687258b39aebfca0ca98f86b
|
||||
size 1000656
|
||||
oid sha256:c60fd8d5dce9adf6c582b098427b9509ee3dbf5241d4310ca7fc94ae7fc88483
|
||||
size 1000821
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:21b7f883f93eb78722762706ea659af9d960158557300eac2cc68f911d109261
|
||||
size 4070399
|
||||
oid sha256:ac61b65215de8922fe562b8bd49306d518d11e52c5807b166386716194a67295
|
||||
size 4070323
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb0f7c8c2cefb6610cd1edcbbcbfcef1d1980cb43165b01af1ceba007c506668
|
||||
size 608157
|
||||
oid sha256:f62f8658e0c0c2b0495a1a39bfd342e9159a5653d3e384942b7af8b9971b7ab5
|
||||
size 608258
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:af208e887809de2f88c0edff739ff4ab22a75f9a11f32f858f720242d7ac41aa
|
||||
size 2565217
|
||||
oid sha256:0871545c7f18518daa953bcba6292e5637272ffce62b9bcd681f21688d87fde6
|
||||
size 2565982
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:20caf257ffe121979af2f52b1b853a7f78bed856da6040448be9e12490c47f23
|
||||
size 693828
|
||||
oid sha256:522045dfc163bf0c1c07650b75fec174dc9e51f0171e46a07d4b9a06d91192db
|
||||
size 693703
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9034ac412342d8e390ed3d634c95410251b40ec27182809d23dfa688e5877026
|
||||
size 3604652
|
||||
oid sha256:fd516842b0faff9a784672ae5e3a6b73401d0322260275f0ccb235065bc17b34
|
||||
size 3605119
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:09c1f8141d7cbb101fe369e221d54d16745b8923367aa44f5a0c9dad6269d3d5
|
||||
size 567380
|
||||
oid sha256:e59ad385a800b9a365266e860ccdeae0821ee015aa70c556cbbb7d14119b47c1
|
||||
size 567333
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:85af941b866dabcfe3d275f9f22730fae36085260123157af5f25c2d17bfa41f
|
||||
size 2330406
|
||||
oid sha256:0ef9cf8810cb83d8c70bd329adf8dd6ba7c9524de2a90a1e3390b958b5fa4a37
|
||||
size 2331617
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d09b4b251e81a6f288eca00e204842b411e2cb81fe5a572204795b0ca35a8a84
|
||||
size 691587
|
||||
oid sha256:83d0f55f34c14378cfc55869db81d610e4e82ec44c6e3654a39735f0c69fcef6
|
||||
size 691539
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:013efb1f0749bd44ffe692ae877ceb77e1f9819638286ad50220318418b49fe7
|
||||
size 1227072
|
||||
oid sha256:55918d08e38df87aab5502ae5389233815f720405e90f3d876f7d27fdd47722e
|
||||
size 1226449
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:75a0c47111b22ccf823a8fc640c2c6ebfe4bc72366b718d0dec016a2f03b1007
|
||||
size 1033997
|
||||
oid sha256:14f9c12a3c7ad88c0bf99ac93153af53cb0464b863c78a624064e3c580c4efb2
|
||||
size 1034557
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2299742c4901fb580628ff016cceaea09933bccb7379d42e8aa9ef48ebec506f
|
||||
size 4165089
|
||||
oid sha256:fa363ef21cf719ecef4ba4b13ecf2f6c642fbc4aebdc086640f766c89c5ec171
|
||||
size 4166266
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d0f0cd950022fd2cac58d524270098f61d4fe67c1bc479226b6926241096dbf5
|
||||
size 626699
|
||||
oid sha256:e20a7f3795818920308100b30595796c4c170eba4c62680f4b70d577a3be3765
|
||||
size 626610
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:05bed79d4afe0ae3234d43e0a85ee04ab20d9406f913ceb767c3e465518478b5
|
||||
size 2666575
|
||||
oid sha256:1f9a60b978506e84f321d83607e682bfb86fcbeaea57d74325fb8b16efa0bb8c
|
||||
size 2665818
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1f9c6afe4241853a1d6a319682af84be4447f1c809baa532e1c600987b1e779e
|
||||
size 716530
|
||||
oid sha256:d307f62694f67f388457f9cd9c9c8b81256dfe1d22c0b7eed1a6a3d5f25030d9
|
||||
size 716392
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3663af9e32855ac1c3d9a8403d5577c41ffee0b3d5d866b48538907dae45647d
|
||||
size 3733676
|
||||
oid sha256:b5bd3ae3940aac2a77a39e70e80c63d32c6a014466ac15a0df3be62a0cc152e8
|
||||
size 3733744
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6851b4be92dc5aabb990372383536faee534dd11ff881a8e87d4bdb370051279
|
||||
size 585903
|
||||
oid sha256:6a96cdb2a0f76e6e2d02006795d695e6fa54b98d883bfc0926fafbd18fd7fba3
|
||||
size 585848
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4f3959f600f33724891a8b7da4d4b431dab28aa6bb285e9c80361a1e89686623
|
||||
size 2412387
|
||||
oid sha256:34f9a77a145aded15cfbf0f4bd7ea996e170f89f8111f7524abca045b63ed390
|
||||
size 2415923
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1098fda2f8204a05673f6f7019abc91c13eecdabbbe4e9dffa128777fcd090f7
|
||||
size 906349
|
||||
oid sha256:fd0f19fbb1a0fe94594749382b08227d0720c7fd26f90c1451f567a2b5864968
|
||||
size 903714
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f7da10f73f9304fdd281493be8f06e0bded6428c96c3d39cb7cbb283199c3533
|
||||
size 1453221
|
||||
oid sha256:70d146912a0976fadf6880d4839bcd4a0801703a8584f8599eada139b41911cd
|
||||
size 1446676
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ef6b2951b97a1387a187fa77a538cd84943e2438775cb8b81e47dc55ddbfb553
|
||||
size 1330644
|
||||
oid sha256:ee29a9792b9205015d2e476f547546ddb99228bef87ff7e2c2a7cfccac455fcf
|
||||
size 1328029
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:38c88b9397e011526f4eaf24428c864f3f41f272fda0de28bc4e1e1d54edc128
|
||||
size 5082997
|
||||
oid sha256:251d45bfc7553c51b6b065b102d41a6122bd6590d3ce39d858953658354d2d46
|
||||
size 5057097
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user