diff --git a/.github/ISSUE_TEMPLATE/partner-contributed-documentation.md b/.github/ISSUE_TEMPLATE/partner-contributed-documentation.md new file mode 100644 index 000000000000..bcc8053160e2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/partner-contributed-documentation.md @@ -0,0 +1,45 @@ +--- +name: Partner-owned product documentation +about: Initiate a set of tasks to be completed by a GitHub partner wishing to document how their product works with GitHub +title: '' +labels: +- partner +assignees: '' +--- + + + +## Pre-requisites + +- [ ] Prior to submitting documentation, please apply to join the GitHub Technology Partner Program: [partner.github.com/apply](https://partner.github.com/apply?partnershipType=Technology+Partner). Please feel free to proceed once your application is approved. + +## Tasks + +Please be sure to complete each of the following: + +**Third-party product documentation:** + +- [ ] MUST follow our [general contributing guidelines](CONTRIBUTING.md) for voice and markup format. +- [ ] MUST emphasize how the third-party product works with GitHub. +- [ ] MUST be written in Markdown format, using [one of the templates provided](contributing/github-partners/README.md#templates) +- [ ] MUST include the name and URL of the GitHub technology partner responsible for maintenance of the documentation being contributed. This should be added via the `contributor.name` and `contributor.URL` properties in the template's YAML frontmatter. +- [ ] MUST be proposed via a pull request to this repo following [the GitHub Flow](https://guides.github.com/introduction/flow/). +- [ ] MUST be located in the root of [the `content` folder](content). Your filename MUST match the GitHub technology partner name, and use the `.md` file extension. + +**The `Pull Request`:** + +- [ ] MUST reference this issue, e.g. via `closes #` +- [ ] MUST pass the automated CI checks +- [ ] MUST include links to supporting material demonstrating the functionality being documented (this can be a link to a public GitHub repo, _or_ a video / screencast walkthrough) + +Once all tasks are completed, please mention `@github/docs-content` for next steps. + +/cc @github/partner-engineering for :eyes: diff --git a/assets/images/help/repository/code-scanning-branch-dropdown.png b/assets/images/help/repository/code-scanning-branch-dropdown.png index c78415529f37..9671a8c89125 100644 Binary files a/assets/images/help/repository/code-scanning-branch-dropdown.png and b/assets/images/help/repository/code-scanning-branch-dropdown.png differ diff --git a/assets/images/help/repository/code-scanning-click-alert.png b/assets/images/help/repository/code-scanning-click-alert.png index b546930cfdca..f62f131530bd 100644 Binary files a/assets/images/help/repository/code-scanning-click-alert.png and b/assets/images/help/repository/code-scanning-click-alert.png differ diff --git a/content/README.md b/content/README.md index 5659f2928a0b..79aa0fca8b3f 100644 --- a/content/README.md +++ b/content/README.md @@ -25,6 +25,7 @@ See the [contributing docs](/CONTRIBUTING.md) for general information about work - [`includeGuides`](#includeGuides) - [`type`](#type) - [`topics`](#topics) + - [`contributor`](#contributor) - [Escaping single quotes](#escaping-single-quotes) - [Autogenerated mini TOCs](#autogenerated-mini-tocs) - [Versioning](#versioning) @@ -231,6 +232,18 @@ includeGuides: - Type: `String` - Optional. +### `contributor` +- Purpose: Indicate an article is contributed and maintained by a third-party organization, typically a GitHub Technology Partner. +- Type: `Object`. Properties are `name` and `URL`. +- Optional. + +Example: + +```yml +contributor: + name: ACME, inc. + URL: https://acme.example.com/ +``` ### Escaping single quotes diff --git a/content/admin/enterprise-management/upgrading-github-enterprise-server.md b/content/admin/enterprise-management/upgrading-github-enterprise-server.md index 5557910fe17f..daefc6db50fb 100644 --- a/content/admin/enterprise-management/upgrading-github-enterprise-server.md +++ b/content/admin/enterprise-management/upgrading-github-enterprise-server.md @@ -45,8 +45,12 @@ Increased requirements for {% data variables.product.prodname_ghe_server %} 3.0 | 5,000 to 8000 | **16**
_Up from 12_ | 96 GB | 750 GB | 200 GB | | 8,000 to 10,000+ | **20**
_Up from 16_ | **160 GB**
_Up from 128 GB_ | 1000 GB | 200 GB | +{% if currentVersion ver_gt "enterprise-server@2.21" %} + For more information about hardware requirements for {% data variables.product.prodname_actions %}, see "[Getting started with {% data variables.product.prodname_actions %} for {% data variables.product.prodname_ghe_server %}](/admin/github-actions/getting-started-with-github-actions-for-github-enterprise-server#review-hardware-considerations)." +{% endif %} + {% data reusables.enterprise_installation.about-adjusting-resources %} {% endif %} diff --git a/content/github/administering-a-repository/about-dependabot-version-updates.md b/content/github/administering-a-repository/about-dependabot-version-updates.md index 1ade8a1acb09..11f5a21c948e 100644 --- a/content/github/administering-a-repository/about-dependabot-version-updates.md +++ b/content/github/administering-a-repository/about-dependabot-version-updates.md @@ -22,6 +22,8 @@ When {% data variables.product.prodname_dependabot %} identifies an outdated dep If you enable security updates, {% data variables.product.prodname_dependabot %} also raises pull requests to update vulnerable dependencies. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/github/managing-security-vulnerabilities/about-dependabot-security-updates)." +{% data reusables.dependabot.pull-request-security-vs-version-updates %} + {% data reusables.dependabot.dependabot-tos %} ### Frequency of {% data variables.product.prodname_dependabot %} pull requests diff --git a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md index 0b834acdcaff..efb5609671d9 100644 --- a/content/github/administering-a-repository/configuration-options-for-dependency-updates.md +++ b/content/github/administering-a-repository/configuration-options-for-dependency-updates.md @@ -551,7 +551,7 @@ updates: ### `vendor` -Use the `vendor` option to tell {% data variables.product.prodname_dependabot %} to vendor dependencies when updating them. +Use the `vendor` option to tell {% data variables.product.prodname_dependabot %} to vendor dependencies when updating them. Don't use this option if you're using `gomod` as {% data variables.product.prodname_dependabot %} automatically detects vendoring for this tool. ```yaml # Configure version updates for both dependencies defined in manifests and vendored dependencies diff --git a/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md b/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md index 45755b6c02fa..932ce92e86ff 100644 --- a/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md +++ b/content/github/managing-security-vulnerabilities/about-dependabot-security-updates.md @@ -22,6 +22,10 @@ The {% data variables.product.prodname_dependabot_security_updates %} feature is {% endnote %} +You can enable a related feature, {% data variables.product.prodname_dependabot_version_updates %}, so that {% data variables.product.prodname_dependabot %} raises pull requests to update the manifest to the latest version of the dependency, whenever it detects an outdated dependency. For more information, see "[About {% data variables.product.prodname_dependabot %} version updates](/github/administering-a-repository/about-dependabot-version-updates)." + +{% data reusables.dependabot.pull-request-security-vs-version-updates %} + ### About pull requests for security updates Each pull request contains everything you need to quickly and safely review and merge a proposed fix into your project. This includes information about the vulnerability like release notes, changelog entries, and commit details. Details of which vulnerability a pull request resolves are hidden from anyone who does not have access to {% data variables.product.prodname_dependabot_alerts %} for the repository. diff --git a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md b/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md index 35b5b20eb774..fb2dfb5b825d 100644 --- a/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md +++ b/content/github/setting-up-and-managing-organizations-and-teams/managing-security-and-analysis-settings-for-your-organization.md @@ -76,6 +76,8 @@ You can enable or disable features for all repositories. {% if currentVersion == ![Button to enable feature for all the eligible repositories in the organization](/assets/images/enterprise/github-ae/organizations/security-and-analysis-enable-secret-scanning-existing-repos-ghae.png) {% endif %} + {% data reusables.security.displayed-information %} + ### Enabling or disabling a feature automatically when new repositories are added 1. Go to the security and analysis settings for your organization. For more information, see "[Displaying the security and analysis settings](#displaying-the-security-and-analysis-settings)." diff --git a/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md b/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md index d7d17817c245..442ab7153d07 100644 --- a/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md +++ b/content/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account.md @@ -28,6 +28,8 @@ For an overview of repository-level security, see "[About securing your reposito 7. Click **Disable FEATURE** or **Enable FEATURE** to disable or enable the feature for all the repositories you own. ![Button to disable or enable feature](/assets/images/help/settings/security-and-analysis-enable-dependency-graph.png) +{% data reusables.security.displayed-information %} + ### Enabling or disabling features for new repositories {% data reusables.user_settings.access_settings %} diff --git a/content/graphql/guides/managing-enterprise-accounts.md b/content/graphql/guides/managing-enterprise-accounts.md index f77eb302657e..4f61114914ea 100644 --- a/content/graphql/guides/managing-enterprise-accounts.md +++ b/content/graphql/guides/managing-enterprise-accounts.md @@ -66,7 +66,7 @@ For some example queries, see "[An example query using the Enterprise Accounts A We recommend you use GraphiQL or another standalone GraphQL client that lets you configure the base URL. You may also consider using these GraphQL clients: - - [Insomnia](https://insomnia.rest/graphql/) + - [Insomnia](https://support.insomnia.rest/article/176-graphql-queries) - [GraphiQL](https://www.gatsbyjs.org/docs/running-queries-with-graphiql/) - [Postman](https://learning.getpostman.com/docs/postman/sending_api_requests/graphql/) diff --git a/contributing/github-partners/README.md b/contributing/github-partners/README.md new file mode 100644 index 000000000000..598ad251487f --- /dev/null +++ b/contributing/github-partners/README.md @@ -0,0 +1,19 @@ +# GitHub Partners + +This folder contains templates to be used by GitHub's technology partners when contributing documentation, such as guides. + +To get started, please [open an issue using this link](https://github.com/github/docs/issues/new?template=partner-contributed-documentation.md). + +## Templates + +### Tutorial template +Tutorials guide the reader through an entire workflow to complete a task. + +You should consider creating a tutorial when: + +- The user has a basic understanding of the product and is interested in extending their use and understanding to solve a specific problem. +- The user is looking for expert advice and a detailed discussion on best practices related their problem. +- The user may have implemented a similar solution in the past using a different product. +- The user wants to validate whether the solution is appropriate for their needs. + +Get started with this template [here](tutorial.md). diff --git a/contributing/github-partners/tutorial.md b/contributing/github-partners/tutorial.md new file mode 100644 index 000000000000..e18d0c9a7679 --- /dev/null +++ b/contributing/github-partners/tutorial.md @@ -0,0 +1,56 @@ +--- +title: Tutorial title +intro: 'Article intro. See tips for a great intro below' +product: '{{ optional product callout }}' +productVersions: +contributor: + name: + URL: +--- + + + + +### Introduction + + + +### Step 1: Action the user will take + + + + + +#### Task chunk + + + + + + +#### Another task chunk + + + +### Step 2: Do the next thing + + + +```yaml +on: + schedule: + - cron: "40 19 * * *" +``` + +### Further reading + + + +- "[Article title](article-URL)" diff --git a/data/reusables/dependabot/pull-request-security-vs-version-updates.md b/data/reusables/dependabot/pull-request-security-vs-version-updates.md new file mode 100644 index 000000000000..94bfc388d91b --- /dev/null +++ b/data/reusables/dependabot/pull-request-security-vs-version-updates.md @@ -0,0 +1,4 @@ +When {% data variables.product.prodname_dependabot %} raises pull requests, these pull requests could be for _security_ or _version_ updates: + +- {% data variables.product.prodname_dependabot_security_updates %} are automated pull requests that help you update dependencies with known vulnerabilities. +- {% data variables.product.prodname_dependabot_version_updates %} are automated pull requests that keep your dependencies updated, even when they don’t have any vulnerabilities. To check the status of version updates, navigate to the Insights tab of your repository, then Dependency Graph, and {% data variables.product.prodname_dependabot %}. diff --git a/data/reusables/secret-scanning/partner-secret-list-private-repo.md b/data/reusables/secret-scanning/partner-secret-list-private-repo.md index d5701ad58fd3..36d8331ce553 100644 --- a/data/reusables/secret-scanning/partner-secret-list-private-repo.md +++ b/data/reusables/secret-scanning/partner-secret-list-private-repo.md @@ -1,5 +1,5 @@ -Partner | Supported secret | API slug ---- | --- | --- +Partner | Supported secret | API slug +--- | --- | --- n/a | JSON Web Token | json_web_token n/a | OAuth Client Credential | api_credential_assignment Adafruit IO | Adafruit IO Key | adafruit_io_key @@ -51,6 +51,7 @@ Proctorio | Proctorio Secret Key | proctorio_secret_key Pulumi | Pulumi Access Token | pulumi_access_token Samsara | Samsara API Token | samsara_api_token Samsara | Samsara OAuth Access Token | samsara_oauth_access_token +SendGrid | SendGrid API Key | sendgrid_api_key Shopify | Shopify App Shared Secret | shopify_app_shared_secret Shopify | Shopify Access Token | shopify_access_token Shopify | Shopify Custom App Access Token | shopify_custom_app_access_token diff --git a/data/reusables/security/displayed-information.md b/data/reusables/security/displayed-information.md new file mode 100644 index 000000000000..02f38c36dbb9 --- /dev/null +++ b/data/reusables/security/displayed-information.md @@ -0,0 +1,7 @@ +When you enable one or more security and analysis features for existing repositories, you will see any results displayed on {% data variables.product.prodname_dotcom %} within minutes: + +- All the existing repositories will have the selected configuration. +- New repositories will follow the selected configuration if you've enabled the checkbox for new repositories.{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" %} +- We use the permissions to scan for manifest files to apply the relevant services. +- You'll see information on your dependency graph. +- {% data variables.product.prodname_dotcom %} will generate {% data variables.product.prodname_dependabot_alerts %}{% endif %}{% if currentVersion == "free-pro-team@latest" %} and raise pull requests{% endif %}. diff --git a/data/ui.yml b/data/ui.yml index 1979c0563eb2..7f1d5f57d360 100644 --- a/data/ui.yml +++ b/data/ui.yml @@ -158,3 +158,4 @@ product_sublanding: learning_track_nav: prevGuide: Previous guide nextGuide: Next guide +contributor_callout: This article is contributed and maintained by diff --git a/includes/article.html b/includes/article.html index fe8f4c89ee96..27d916ec04f3 100644 --- a/includes/article.html +++ b/includes/article.html @@ -20,6 +20,12 @@

{{ page.title }}

+ {% if page.contributor %} +
+

{% octicon "info" %}{% data ui.contributor_callout %} {{ page.contributor.name }}.

+
+ {% endif %} + {% if page.intro %}
{{ page.intro }}
{% endif %} diff --git a/lib/frontmatter.js b/lib/frontmatter.js index 9a0f390f1d5f..c875db25152b 100644 --- a/lib/frontmatter.js +++ b/lib/frontmatter.js @@ -119,6 +119,14 @@ const schema = { defaultPlatform: { type: 'string', enum: ['mac', 'windows', 'linux'] + }, + // Documentation contributed by a third party, such as a GitHub Partner + contributor: { + type: 'object', + properties: { + name: { type: 'string' }, + URL: { type: 'string' } + } } } } diff --git a/lib/webhooks/static/dotcom/code_scanning_alert.reopened.payload.json b/lib/webhooks/static/dotcom/code_scanning_alert.reopened.payload.json index 6f56c67b0487..4acbc806be01 100644 --- a/lib/webhooks/static/dotcom/code_scanning_alert.reopened.payload.json +++ b/lib/webhooks/static/dotcom/code_scanning_alert.reopened.payload.json @@ -7,7 +7,7 @@ "html_url": "https://github.com/Codertocat/Hello-World/security/code-scanning/10", "instances": [ { - "ref": "refs/heads/master", + "ref": "refs/heads/main", "analysis_key": ".github/workflows/workflow.yml:upload", "environment": "{}", "state": "open" @@ -27,7 +27,7 @@ "version": null } }, - "ref": "refs/heads/master", + "ref": "refs/heads/main", "commit_oid": "d6e4c75c141dbacecc279b721b8b9393d5405795", "repository": { "id": 186853002, @@ -121,7 +121,7 @@ "forks": 0, "open_issues": 2, "watchers": 0, - "default_branch": "master" + "default_branch": "main" }, "organization": { "login": "Octocoders", diff --git a/lib/webhooks/static/ghae/code_scanning_alert.reopened.payload.json b/lib/webhooks/static/ghae/code_scanning_alert.reopened.payload.json index f2271f33d48c..1789c8ac9bc8 100644 --- a/lib/webhooks/static/ghae/code_scanning_alert.reopened.payload.json +++ b/lib/webhooks/static/ghae/code_scanning_alert.reopened.payload.json @@ -7,7 +7,7 @@ "html_url": "https://octocoders.github.io/Codertocat/Hello-World/security/code-scanning/10", "instances": [ { - "ref": "refs/heads/master", + "ref": "refs/heads/main", "analysis_key": ".github/workflows/workflow.yml:upload", "environment": "{}", "state": "open" @@ -27,7 +27,7 @@ "version": null } }, - "ref": "refs/heads/master", + "ref": "refs/heads/main", "commit_oid": "d6e4c75c141dbacecc279b721b8b9393d5405795", "repository": { "id": 186853002, @@ -121,7 +121,7 @@ "forks": 0, "open_issues": 2, "watchers": 0, - "default_branch": "master" + "default_branch": "main" }, "organization": { "login": "Octocoders", diff --git a/lib/webhooks/static/ghes-2.22/code_scanning_alert.reopened.payload.json b/lib/webhooks/static/ghes-2.22/code_scanning_alert.reopened.payload.json index f2271f33d48c..1789c8ac9bc8 100644 --- a/lib/webhooks/static/ghes-2.22/code_scanning_alert.reopened.payload.json +++ b/lib/webhooks/static/ghes-2.22/code_scanning_alert.reopened.payload.json @@ -7,7 +7,7 @@ "html_url": "https://octocoders.github.io/Codertocat/Hello-World/security/code-scanning/10", "instances": [ { - "ref": "refs/heads/master", + "ref": "refs/heads/main", "analysis_key": ".github/workflows/workflow.yml:upload", "environment": "{}", "state": "open" @@ -27,7 +27,7 @@ "version": null } }, - "ref": "refs/heads/master", + "ref": "refs/heads/main", "commit_oid": "d6e4c75c141dbacecc279b721b8b9393d5405795", "repository": { "id": 186853002, @@ -121,7 +121,7 @@ "forks": 0, "open_issues": 2, "watchers": 0, - "default_branch": "master" + "default_branch": "main" }, "organization": { "login": "Octocoders", diff --git a/lib/webhooks/static/ghes-3.0/code_scanning_alert.reopened.payload.json b/lib/webhooks/static/ghes-3.0/code_scanning_alert.reopened.payload.json index f2271f33d48c..1789c8ac9bc8 100644 --- a/lib/webhooks/static/ghes-3.0/code_scanning_alert.reopened.payload.json +++ b/lib/webhooks/static/ghes-3.0/code_scanning_alert.reopened.payload.json @@ -7,7 +7,7 @@ "html_url": "https://octocoders.github.io/Codertocat/Hello-World/security/code-scanning/10", "instances": [ { - "ref": "refs/heads/master", + "ref": "refs/heads/main", "analysis_key": ".github/workflows/workflow.yml:upload", "environment": "{}", "state": "open" @@ -27,7 +27,7 @@ "version": null } }, - "ref": "refs/heads/master", + "ref": "refs/heads/main", "commit_oid": "d6e4c75c141dbacecc279b721b8b9393d5405795", "repository": { "id": 186853002, @@ -121,7 +121,7 @@ "forks": 0, "open_issues": 2, "watchers": 0, - "default_branch": "master" + "default_branch": "main" }, "organization": { "login": "Octocoders", diff --git a/script/content-migrations/add-tags-to-articles.js b/script/content-migrations/add-tags-to-articles.js index e4d226ba2c2e..9a6f43138c20 100755 --- a/script/content-migrations/add-tags-to-articles.js +++ b/script/content-migrations/add-tags-to-articles.js @@ -33,30 +33,29 @@ XlsxPopulate.fromFileAsync('./SanitizedInformationArchitecture.xlsx') fileName = fileName + '/index.md' } - const topicsArray = topics.replace(', ', ',').split(',') || [] + const topicsArray = topics.split(',').map(topic => topic.trim()) || [] updateFrontmatter(path.join(process.cwd(), fileName), topicsArray) } }) function updateFrontmatter (filePath, newTopics) { - try { - const articleContents = fs.readFileSync(filePath, 'utf8') - const { content, data } = readFrontmatter(articleContents) - - let topics = [] - if (typeof data.topics === 'string') { - topics = [data.topics] - } else if (Array.isArray(data.topics)) { - topics = topics.concat(data.topics) - } - newTopics.forEach(topic => { - topics.push(topic) - }) - data.topics = topics - - const newContents = readFrontmatter.stringify(content, data, { lineWidth: 10000 }) - fs.writeFileSync(filePath, newContents) - } catch (error) { - console.log(`This file is not valid: ${filePath}`) + const articleContents = fs.readFileSync(filePath, 'utf8') + const { content, data } = readFrontmatter(articleContents) + + let topics = [] + if (typeof data.topics === 'string') { + topics = [data.topics] + } else if (Array.isArray(data.topics)) { + topics = topics.concat(data.topics) } + newTopics.forEach(topic => { + topics.push(topic) + }) + + // remove any duplicates + const uniqueTopics = [...new Set(topics)] + data.topics = uniqueTopics + + const newContents = readFrontmatter.stringify(content, data, { lineWidth: 10000 }) + fs.writeFileSync(filePath, newContents) } diff --git a/stylesheets/overrides.scss b/stylesheets/overrides.scss index 056b5eeff023..5657740df560 100644 --- a/stylesheets/overrides.scss +++ b/stylesheets/overrides.scss @@ -65,7 +65,7 @@ color: $text-gray-dark; } -.product-callout p { +.product-callout p, .contributor-callout p { margin: 0; }