diff --git a/assets/images/help/classroom/classroom-settings-enable-codespaces-button.png b/assets/images/help/classroom/classroom-settings-enable-codespaces-button.png new file mode 100644 index 0000000000..14b19122dc Binary files /dev/null and b/assets/images/help/classroom/classroom-settings-enable-codespaces-button.png differ diff --git a/assets/images/help/classroom/org-view-codespaces-eligibility.png b/assets/images/help/classroom/org-view-codespaces-eligibility.png new file mode 100644 index 0000000000..6cb57e991b Binary files /dev/null and b/assets/images/help/classroom/org-view-codespaces-eligibility.png differ diff --git a/assets/images/help/classroom/select-supported-editor-including-codespaces.png b/assets/images/help/classroom/select-supported-editor-including-codespaces.png new file mode 100644 index 0000000000..f80c2ee0ff Binary files /dev/null and b/assets/images/help/classroom/select-supported-editor-including-codespaces.png differ diff --git a/assets/images/help/classroom/setup-classroom-enable-codespaces-button.png b/assets/images/help/classroom/setup-classroom-enable-codespaces-button.png new file mode 100644 index 0000000000..5e099aa9b1 Binary files /dev/null and b/assets/images/help/classroom/setup-classroom-enable-codespaces-button.png differ diff --git a/assets/images/help/classroom/student-codespaces-readme-link.png b/assets/images/help/classroom/student-codespaces-readme-link.png new file mode 100644 index 0000000000..c69faa7290 Binary files /dev/null and b/assets/images/help/classroom/student-codespaces-readme-link.png differ diff --git a/assets/images/help/classroom/student-launch-new-codespace.png b/assets/images/help/classroom/student-launch-new-codespace.png new file mode 100644 index 0000000000..b7c4755f07 Binary files /dev/null and b/assets/images/help/classroom/student-launch-new-codespace.png differ diff --git a/assets/images/help/classroom/teacher-assignment-view-with-codespaces.png b/assets/images/help/classroom/teacher-assignment-view-with-codespaces.png new file mode 100644 index 0000000000..c89c57d15c Binary files /dev/null and b/assets/images/help/classroom/teacher-assignment-view-with-codespaces.png differ diff --git a/content/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization.md b/content/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization.md index 5f87b31532..ec7e936c7e 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization.md +++ b/content/codespaces/managing-codespaces-for-your-organization/enabling-codespaces-for-your-organization.md @@ -32,6 +32,13 @@ By default, a codespace can only access the repository from which it was created ## Enable {% data variables.product.prodname_codespaces %} for users in your organization +{% ifversion fpt %} +{% note %} + +**Note:** If you are a verified educator or a teacher, you must enable {% data variables.product.prodname_codespaces %} from a {% data variables.product.prodname_classroom %} to use your {% data variables.product.prodname_codespaces %} Education benefit. For more information, see "[Using GitHub Codespaces with GitHub Classroom](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom#about-the-codespaces-education-benefit-for-verified-teachers)." + +{% endnote %} +{% endif %} {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} {% data reusables.organizations.click-codespaces %} diff --git a/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/index.md b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/index.md index 629def9b30..a6d2dee5c7 100644 --- a/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/index.md +++ b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/index.md @@ -6,6 +6,7 @@ versions: fpt: '*' children: - /integrate-github-classroom-with-an-ide + - /using-github-codespaces-with-github-classroom - /about-using-visual-studio-code-with-github-classroom - /about-using-makecode-arcade-with-github-classroom - /replit-with-github-classroom diff --git a/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/integrate-github-classroom-with-an-ide.md b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/integrate-github-classroom-with-an-ide.md index 455c28008b..b623657437 100644 --- a/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/integrate-github-classroom-with-an-ide.md +++ b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/integrate-github-classroom-with-an-ide.md @@ -22,6 +22,7 @@ After a student accepts an assignment with an IDE, the README file in the studen | IDE | More information | | :- | :- | +| {% data variables.product.prodname_github_codespaces %} | "[Using {% data variables.product.prodname_github_codespaces %} with {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom)" | | Microsoft MakeCode Arcade | "[About using MakeCode Arcade with {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/about-using-makecode-arcade-with-github-classroom)" | | Visual Studio Code | [{% data variables.product.prodname_classroom %} extension](http://aka.ms/classroom-vscode-ext) in the Visual Studio Marketplace | @@ -31,11 +32,13 @@ We know cloud IDE integrations are important to your classroom and are working t You can choose the IDE you'd like to use for an assignment when you create an assignment. To learn how to create a new assignment that uses an IDE, see "[Create an individual assignment](/education/manage-coursework-with-github-classroom/create-an-individual-assignment)" or "[Create a group assignment](/education/manage-coursework-with-github-classroom/create-a-group-assignment)." -## Authorizing the OAuth app for an IDE +## Setting up an assignment in a new IDE -The first time you configure an assignment with an IDE, you must authorize the OAuth app for the IDE for your organization. +The first time you configure an assignment using a different IDE, you must ensure that it is set up correctly. -For all repositories, grant the app **read** access to metadata, administration, and code, and **write** access to administration and code. For more information, see "[Authorizing OAuth Apps](/github/authenticating-to-github/authorizing-oauth-apps)." +Unless you use {% data variables.product.prodname_github_codespaces %}, you must authorize the OAuth app for the IDE for your organization. For all repositories, grant the app **read** access to metadata, administration, and code, and **write** access to administration and code. For more information, see "[Authorizing OAuth Apps](/github/authenticating-to-github/authorizing-oauth-apps)." + +{% data variables.product.prodname_github_codespaces %} does not require an OAuth app, but you need to enable {% data variables.product.prodname_github_codespaces %} for your organization to be able to configure an assignment with {% data variables.product.prodname_codespaces %}. For more information, see "[Using {% data variables.product.prodname_github_codespaces %} with {% data variables.product.prodname_classroom %}](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom#enabling-codespaces-for-your-organization)." ## Further reading diff --git a/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom.md b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom.md new file mode 100644 index 0000000000..a029e8fe34 --- /dev/null +++ b/content/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide/using-github-codespaces-with-github-classroom.md @@ -0,0 +1,84 @@ +--- +title: Using GitHub Codespaces with GitHub Classroom +shortTitle: Using Codespaces with GitHub Classroom +product: '{% data reusables.gated-features.codespaces-classroom-articles %}' +intro: 'You can use {% data variables.product.prodname_github_codespaces %} as the preferred editor in your assignments to give students access to a browser-based Visual Studio Code environment with one-click setup.' +versions: + fpt: '*' +permissions: 'Organization owners who are admins for a classroom can enable {% data variables.product.prodname_github_codespaces %} for their organization and integrate {% data variables.product.prodname_github_codespaces %} as the supported editor for an assignment. {% data reusables.classroom.classroom-admins-link %}' +--- +## About {% data variables.product.prodname_codespaces %} + +{% data variables.product.prodname_github_codespaces %} is an instant, cloud-based development environment that uses a container to provide you with common languages, tools, and utilities for development. {% data variables.product.prodname_codespaces %} is also configurable, allowing you to create a customized development environment that is the same for all users of your project. For more information, see "[{% data variables.product.prodname_github_codespaces %} overview](/codespaces/overview)." + +Once {% data variables.product.prodname_codespaces %} is enabled in an organization or enterprise, users can create a codespace from any branch or commit in an organization or enterprise repository and begin developing using cloud-based compute resources. You can connect to a codespace from the browser or locally using Visual Studio Code. {% data reusables.codespaces.links-to-get-started %} + +Setting {% data variables.product.prodname_codespaces %} as the preferred editor for an assignment in GitHub Classroom assignments, is beneficial for both students and teachers. {% data variables.product.prodname_codespaces %} is a good option for students using loaned devices or without access to a local IDE setup, since each codespace is cloud-based and requires no local setup. Students can launch a codespace for an assignment repository in Visual Studio Code directly in their browser, and begin developing right away without needing any further configuration. + +For assignments with complex setup environments, teachers can customize the dev container configuration for a repository's codespaces. This ensures that when a student creates a codespace, it automatically opens with the development environment configured by the teacher. For more information on dev containers, see "[Introduction to dev containers](/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers)." + +## About the {% data variables.product.prodname_codespaces %} Education benefit for verified teachers + +The {% data variables.product.prodname_codespaces %} Education benefit gives verified teachers a free monthly allowance of {% data variables.product.prodname_codespaces %} hours to use in {% data variables.product.prodname_classroom %}. The free allowance is estimated to be enough for a class of 50 with 5 assignments per month, on a 2 core machine with 1 codespace stored per student. + +{% data reusables.classroom.free-limited-codespaces-for-verified-teachers-beta-note %} + +To become a verified teacher, you need to be approved for an educator or teacher benefit. For more information, see "[Applying for an educator or teacher benefit](/education/explore-the-benefits-of-teaching-and-learning-with-github-education/use-github-in-your-classroom-and-research/apply-for-an-educator-or-researcher-discount#applying-for-an-educator-or-researcher-discount)." + +If you are eligible for the {% data variables.product.prodname_codespaces %} Education benefit, when you enable {% data variables.product.prodname_codespaces %} in {% data variables.product.prodname_classroom %} for your organization, GitHub automatically adds a Codespace policy to restrict machine types for all codespaces in the organization to 2 core machines. This helps you make the most of the free {% data variables.product.prodname_codespaces %} usage. However, you can change or remove these policies in your organization settings. For more information, see "[Restricting access to machine types](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)." + +When the {% data variables.product.prodname_codespaces %} Education benefit moves out of beta, if your organization exceeds their free allowance for {% data variables.product.prodname_codespaces %} usage, your organization will be billed for additional usage. For more information, see "[About billing for {% data variables.product.prodname_codespaces %}](/billing/managing-billing-for-github-codespaces/about-billing-for-codespaces#about-billing-for-codespaces)." + +## Enabling {% data variables.product.prodname_codespaces %} for your organization + +{% data variables.product.prodname_codespaces %} is available to use with {% data variables.product.prodname_classroom %} for organizations that use {% data variables.product.prodname_team %}. If you are eligible for the {% data variables.product.prodname_codespaces %} Education benefit, you must enable {% data variables.product.prodname_codespaces %} through {% data variables.product.prodname_classroom %}, instead of enabling it directly in your organization settings. Otherwise, your organization will be billed directly for all usage of {% data variables.product.prodname_codespaces %}. + +### Enabling Codespaces for an organization when creating a new classroom +{% data reusables.classroom.sign-into-github-classroom %} +1. Click **New classroom**. + +  + +1. In the list of organizations, click the organization you'd like to use for your classroom. Organizations that are eligible for {% data variables.product.prodname_codespaces %} will have a note showing that they are eligible. Optionally, you can create a new organization. For more information, see "[Creating a new organization from scratch](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)." + +  + +1. In the "Name your classroom" page, under "{% data variables.product.prodname_codespaces %} in your Classroom", click **Enable**. Note that this will enable {% data variables.product.prodname_codespaces %} for all repositories and users in the organization. + +  + +1. When you are ready to create the new classroom, click **Create classroom**. + +### Enabling Codespaces for an organization via an existing classroom + +{% data reusables.classroom.sign-into-github-classroom %} +{% data reusables.classroom.click-classroom-in-list %} +{% data reusables.classroom.click-settings %} +1. Under "{% data variables.product.prodname_github_codespaces %}", click **Enable**. This will enable {% data variables.product.prodname_codespaces %} for all repositories and users in the organization. A new Codespace policy is also added to restrict machine types for all codespaces in the organization to 2 core machines. + +  + +You can use the same methods as above to disable {% data variables.product.prodname_codespaces %} for your organization as well. Note that this will disable {% data variables.product.prodname_codespaces %} for all users and repositories in the organization. + +## Configuring an assignment to use {% data variables.product.prodname_codespaces %} +To make {% data variables.product.prodname_codespaces %} available to students for an assignment, you can choose {% data variables.product.prodname_codespaces %} as the supported editor for the assignment. When creating a new assignment, in the "Add your starter code and choose your optional online IDE" page, under "Add a supported editor", select **{% data variables.product.prodname_github_codespaces %}** from the dropdown menu. + + + +If you use a template repository for an assignment, you can define a dev container in the repository to customize the tools and runtimes available to students when they launch a codespace to work on the assignment. If you do not define a dev container, {% data variables.product.prodname_github_codespaces %} will use a default configuration, which contains many of the common tools that your students might need for development. For more information on defining a dev container, see "[Add a dev container configuration to your repository](/codespaces/setting-up-your-project-for-codespaces/setting-up-your-project-for-codespaces)." + +## Launching an assignment using {% data variables.product.prodname_codespaces %} + +When a student opens an assignment, the repository's README file includes their teacher's recommendation of the IDE they should use for the work. + + + +Students can launch a new or existing codespace by clicking the **{% octicon "code" aria-label="The code icon" %} Code** button on the main page of the assignment repository, then selecting the **Codespaces** tab. For more information, see "[Creating a codespace](/codespaces/developing-in-codespaces/creating-a-codespace#creating-a-codespace)." + + + +Teachers can view each student's codespace for an assignment in the assignment overview page. You can click on the Codespaces icon on the right side of each student row to launch the codespace. + + + +When you connect to a codespace through a browser, auto-save is enabled automatically. If you want to save changes to the repository, you will need to commit the changes and push them to a remote branch. If you leave your codespace running without interaction for 30 minutes by default, the codespace will timeout and stop running. Your data will be preserved from the last time you made a change. For more information on the lifecycle of a codespace, see "[Codespaces lifecycle](/codespaces/developing-in-codespaces/codespaces-lifecycle)." \ No newline at end of file diff --git a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-a-group-assignment.md b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-a-group-assignment.md index 025e73446e..4e54ce5e5a 100644 --- a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-a-group-assignment.md +++ b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-a-group-assignment.md @@ -95,6 +95,8 @@ By default, a new assignment will create an empty repository for each team that {% data reusables.classroom.about-online-ides %} For more information, see "[Integrate {% data variables.product.prodname_classroom %} with an IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide)." +{% data reusables.classroom.classroom-codespaces-link %} + {% data reusables.classroom.assignments-guide-choose-an-online-ide %} {% data reusables.classroom.assignments-guide-click-continue-after-starter-code-and-feedback %} diff --git a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-an-individual-assignment.md b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-an-individual-assignment.md index 58d41b99bb..daf1714d4f 100644 --- a/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-an-individual-assignment.md +++ b/content/education/manage-coursework-with-github-classroom/teach-with-github-classroom/create-an-individual-assignment.md @@ -77,6 +77,8 @@ By default, a new assignment will create an empty repository for each student on {% data reusables.classroom.about-online-ides %} For more information, see "[Integrate {% data variables.product.prodname_classroom %} with an IDE](/education/manage-coursework-with-github-classroom/integrate-github-classroom-with-an-ide)." +{% data reusables.classroom.classroom-codespaces-link %} + {% data reusables.classroom.assignments-guide-choose-an-online-ide %} ## Providing feedback for an assignment diff --git a/data/reusables/classroom/assignments-guide-choose-an-online-ide.md b/data/reusables/classroom/assignments-guide-choose-an-online-ide.md index 8f6dd4888d..8c1f357c84 100644 --- a/data/reusables/classroom/assignments-guide-choose-an-online-ide.md +++ b/data/reusables/classroom/assignments-guide-choose-an-online-ide.md @@ -1,5 +1,5 @@ To choose an IDE for the assignment, select the Add an editor drop-down menu and click the IDE you'd like your students to use.
+