<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://partner.github.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://partner.github.com/" rel="alternate" type="text/html" /><updated>2021-09-27T09:59:25+00:00</updated><id>https://partner.github.com/feed.xml</id><title type="html">GitHub Partner Portal</title><subtitle>GitHub is how people build software. Millions of developers and organizations around
the world use GitHub to discover, share and contribute to projects. Together,
we're defining how software is built today.
</subtitle><entry><title type="html">Releasing and maintaining actions</title><link href="https://partner.github.com/integration-resources/2021/03/19/pattern-releasing-and-maintaining-actions.html" rel="alternate" type="text/html" title="Releasing and maintaining actions" /><published>2021-03-19T00:00:00+00:00</published><updated>2021-03-19T00:00:00+00:00</updated><id>https://partner.github.com/integration-resources/2021/03/19/pattern-releasing-and-maintaining-actions</id><content type="html" xml:base="https://partner.github.com/integration-resources/2021/03/19/pattern-releasing-and-maintaining-actions.html">&lt;h3 id=&quot;problem-statement&quot;&gt;Problem statement&lt;/h3&gt;

&lt;p&gt;So you have &lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action&quot;&gt;created an action&lt;/a&gt;…now what? This pattern guide shows a minimal solution to releasing and maintaining actions in open source, favoring automation whenever possible, providing value while keeping overhead at a minimum.&lt;/p&gt;

&lt;p&gt;The solution should:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;Leverage GitHub Actions for continuous integration, dependency updates, release management, and task automation.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Promote discoverability with regular publishing to GitHub Marketplace.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Provide confidence through automated tests and build badges.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Indicate how the action can be used, ideally as part of a broader workflow.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Signal what type of community contributions you welcome, e.g. issues, pull requests, or vulnerability reports.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;

&lt;p&gt;We recommend that &lt;a href=&quot;https://partner.github.com/technology-partners&quot;&gt;Technology Partners&lt;/a&gt; build actions with &lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/about-actions#types-of-actions&quot;&gt;JavaScript instead of in containers&lt;/a&gt; for speed and cross-platform functionality, so this guide will focus on JavaScript actions.&lt;/p&gt;

&lt;p&gt;Though they are “just” Node.js repositories with metadata in an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;action.yml&lt;/code&gt; file, JavaScript actions have a few interesting properties compared to traditional Node.js projects:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Dependent packages are committed alongside the code, typically in a compiled and minified form, so &lt;strong&gt;automated builds&lt;/strong&gt; and &lt;strong&gt;secure community contributions&lt;/strong&gt; are important.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Tagged releases can be published directly to GitHub Marketplace and consumed by workflows across GitHub, making sensible &lt;strong&gt;releasing and tagging&lt;/strong&gt; of special interest.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Many actions make use of the GitHub API &lt;em&gt;and&lt;/em&gt; third party APIs, so we encourage &lt;strong&gt;robust end-to-end testing&lt;/strong&gt;.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We base a solution on &lt;a href=&quot;https://github.com/actions/javascript-action&quot;&gt;actions/javascript-action&lt;/a&gt;, putting special focus on solving the problem areas identified above. We use GitHub Actions to automate releasing the action and publishing to GitHub Marketplace, and open source best practices to increase confidence and usage.&lt;/p&gt;

&lt;h3 id=&quot;implementation&quot;&gt;Implementation&lt;/h3&gt;

&lt;h4 id=&quot;automate-release-management&quot;&gt;Automate release management&lt;/h4&gt;

&lt;p&gt;GitHub &lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/about-actions#using-release-management-for-actions&quot;&gt;recommends&lt;/a&gt; creating releases using &lt;a href=&quot;https://docs.npmjs.com/about-semantic-versioning&quot;&gt;semantically versioned&lt;/a&gt; tags – for example, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1.1.3&lt;/code&gt; – and keeping major (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1&lt;/code&gt;) and minor (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;v1.1&lt;/code&gt;) tags current to the latest appropriate commit. When a release is created, it can be &lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace&quot;&gt;published to GitHub Marketplace&lt;/a&gt; for increased discoverability.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;^
|
|
| * commit 9a4eb0d (tag: v1, tag: v1.1, tag: v1.1.0)
|/  Author: Octocat &amp;lt;octocat@github.com&amp;gt;
|
|      New features!
|
|  
| * commit ac2415 (tag: v1.0, tag: v1.0.3)
|/  Author: Octocat &amp;lt;octocat@github.com&amp;gt;
|
|       Initial release
|
*
|
main
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;We let GitHub Actions do the automation for us to enable this workflow:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Do feature work in branches per &lt;a href=&quot;https://guides.github.com/introduction/flow/&quot;&gt;GitHub flow&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;When a feature branch commit is pushed, GitHub Actions runs a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test&lt;/code&gt; workflow from which you can call unit and integration tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;Create pull requests to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main&lt;/code&gt; branch to initiate discussion and review, merging when ready.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;When a pull request is opened, either from a branch or a fork, GitHub Actions again runs the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;test&lt;/code&gt; workflow, this time with the merge commit. A &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;label&lt;/code&gt; workflow also runs to add appropriate labels to the pull request depending on which file path is being changed.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;Note: for security reasons, workflows triggered by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pull_request&lt;/code&gt; from forks have restricted &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GITHUB_TOKEN&lt;/code&gt; permissions and do not have access to secrets. If your tests or other workflows triggered upon pull request require access to secrets, consider using a different event like a &lt;a href=&quot;https://docs.github.com/en/actions/reference/events-that-trigger-workflows#manual-events&quot;&gt;manual trigger&lt;/a&gt; or a &lt;a href=&quot;https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pull_request_target&lt;/code&gt;&lt;/a&gt;. Read more &lt;a href=&quot;https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-events-for-forked-repositories&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;Create a semantically tagged release &lt;a href=&quot;https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository#creating-a-release&quot;&gt;using the GitHub UI&lt;/a&gt;, also &lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace#publishing-an-action&quot;&gt;publishing to GitHub Marketplace&lt;/a&gt; with a simple checkbox.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
  &lt;li&gt;When the release is created, GitHub Actions runs a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;publish&lt;/code&gt; workflow that uses a community action, &lt;a href=&quot;https://github.com/JasonEtco/build-and-tag-action&quot;&gt;JasonEtco/build-and-tag-action&lt;/a&gt; to compile and bundle the JavaScript and metadata file and force push semantic major, minor, and patch tags as visualized above.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike some other automated release management strategies, we intentionally do not commit dependencies to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;main&lt;/code&gt; branch, only to the tagged release commits. By doing so, we encourage users of our action to reference named tags or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sha&lt;/code&gt;s, and we help ensure the security of third party pull requests by doing the build ourselves during a release.&lt;/p&gt;

&lt;p&gt;Committing to semantic releases means that the users of your actions can pin their workflows to a version and know that they might continue to receive the latest stable, non-breaking features, depending on their comfort level:&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;### A workflow consuming your action

# The latest major release version:
uses: github-developer/javascript-action@v1

# Or, the latest minor release version:
uses: github-developer/javascript-action@v1.1

# Or, the latest patch release version:
uses: github-developer/javascript-action@v1.1.0

# Or, a specific commit sha:
uses: github-developer/javascript-action@ff958b3d4b36abb3d3058e1e866695ce6111d213
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;open-source-like-the-best&quot;&gt;Open source like the best&lt;/h4&gt;

&lt;p&gt;Working in the open can be hard, but fortunately, GitHub provides tools and  &lt;a href=&quot;https://opensource.guide/&quot;&gt;guides&lt;/a&gt;  to make it easier. Here are a few structures we recommend setting up for healthy bidirectional communication.&lt;/p&gt;

&lt;p&gt;By providing the following signals to the community, we encourage use, modification, and contribution to our action:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Maintain a great README with plenty of usage examples, guidance, and badges
    &lt;ul&gt;
      &lt;li&gt;How to add a workflow status badge (&lt;a href=&quot;https://docs.github.com/en/actions/managing-workflow-runs/adding-a-workflow-status-badge&quot;&gt;docs&lt;/a&gt;)&lt;/li&gt;
      &lt;li&gt;Other metadata badges (&lt;a href=&quot;https://shields.io/&quot;&gt;shields.io&lt;/a&gt;)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Set up &lt;a href=&quot;https://docs.github.com/en/github/building-a-strong-community/creating-a-default-community-health-file#supported-file-types&quot;&gt;community health files&lt;/a&gt; like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CODE_OF_CONDUCT&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CONTRIBUTING&lt;/code&gt;, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;SECURITY&lt;/code&gt;, either organization-wide or in your action repository.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Keep issues current by utilizing actions like &lt;a href=&quot;https://github.com/actions/stale&quot;&gt;stale&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out more resources for building in the open &lt;a href=&quot;https://github.com/open-source&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;concrete-implementation&quot;&gt;Concrete implementation&lt;/h3&gt;

&lt;p&gt;Template repository: &lt;a href=&quot;https://github.com/github-developer/javascript-action&quot;&gt;https://github.com/github-developer/javascript-action&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;/h3&gt;

&lt;p&gt;Examples where similar patterns are employed include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/github/super-linter&quot;&gt;https://github.com/github/super-linter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/octokit/request-action&quot;&gt;https://github.com/octokit/request-action&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;related&quot;&gt;Related&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action&quot;&gt;https://docs.github.com/en/actions/creating-actions/creating-a-javascript-action&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace&quot;&gt;https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://opensource.guide/&quot;&gt;https://opensource.guide/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/open-source&quot;&gt;https://github.com/open-source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="Integration-Resources" /><category term="Patterns" /><category term="Actions" /><summary type="html">Problem statement</summary></entry><entry><title type="html">Integrating with Code Scanning</title><link href="https://partner.github.com/integration-resources/2021/03/09/pattern-integrating-with-code-scanning.html" rel="alternate" type="text/html" title="Integrating with Code Scanning" /><published>2021-03-09T00:00:00+00:00</published><updated>2021-03-09T00:00:00+00:00</updated><id>https://partner.github.com/integration-resources/2021/03/09/pattern-integrating-with-code-scanning</id><content type="html" xml:base="https://partner.github.com/integration-resources/2021/03/09/pattern-integrating-with-code-scanning.html">&lt;h3 id=&quot;problem-statement&quot;&gt;Problem statement&lt;/h3&gt;

&lt;p&gt;Many of GitHub’s Technology Partners offering security products in the form of static analysis tooling, wish to surface their tools’ security findings directly in GitHub’s UI, making it easier for developers to adopt their tooling, and adding value to the development workflow by identifying potential vulnerabilities before they reach production. This kind of developer workflow is often associated with DevSecOps and the concept of &lt;em&gt;shifting left&lt;/em&gt;, as security analyses are performed frequently and earlier in the development process.&lt;/p&gt;

&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;

&lt;p&gt;A paved path exists that is tailored for this type of integration in the form of GitHub code scanning, a developer-first, GitHub-native approach to easily find security vulnerabilities before they reach production.&lt;/p&gt;

&lt;p&gt;Technology Partners can integrate their tooling with code scanning by submitting analyses in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Static Analysis Results Interchange Format (SARIF)&lt;/code&gt; (v2.1.0) format to GitHub. This format is specified formally &lt;a href=&quot;https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html&quot;&gt;here&lt;/a&gt;, however GitHub code scanning supports only a subset of the properties, which are listed &lt;a href=&quot;https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning#supported-sarif-output-file-properties&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The analysis is typically triggered by events originating from GitHub, such as developers pushing code (the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;push&lt;/code&gt; event), opening a pull request (the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pull_request&lt;/code&gt; event), or on some pre-determined automated schedule (i.e. once per week).&lt;/p&gt;

&lt;p&gt;Two implementation approaches are available, via GitHub Actions, or via GitHub Apps, each of which are explored further &lt;a href=&quot;#implementation-detail&quot;&gt;below&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Prior to diving in to the implementation detail, it is worth designing how your tool should structure its output using the SARIF format, with consideration for &lt;a href=&quot;https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning#supported-sarif-output-file-properties&quot;&gt;the SARIF properties that are supported by GitHub code scanning&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Commonly, this will be an iterative process:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Generate your SARIF report (potentially by hand, at least initally)&lt;/li&gt;
  &lt;li&gt;Validate your SARIF report, using the online SARIF validator at &lt;a href=&quot;https://sarifweb.azurewebsites.net/Validation&quot;&gt;sarifweb.azurewebsites.net/Validation&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Important&lt;/strong&gt;: It is recommended to &lt;em&gt;enable&lt;/em&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GitHub ingestion rules&lt;/code&gt;, for additional code scanning compatibility validation&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Upload your SARIF report to GitHub code scanning for visual verification. Note: Code scanning is available for all public repositories and for private repositories owned by organizations where GitHub Advanced Security is enabled. For more information, see &lt;a href=&quot;https://docs.github.com/en/github/getting-started-with-github/about-github-advanced-security&quot;&gt;About GitHub Advanced Security&lt;/a&gt;.
    &lt;ul&gt;
      &lt;li&gt;Uploading may be done using &lt;a href=&quot;https://docs.github.com/en/rest/reference/code-scanning&quot;&gt;the REST API&lt;/a&gt;, via a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;curl&lt;/code&gt; command. Note, the SARIF report must be gzipped and base64-encoded prior to being uploaded to GitHub.&lt;/li&gt;
      &lt;li&gt;Alternatively, commit the SARIF report directly to a GitHub repo and upload it to code scanning using &lt;a href=&quot;https://github.com/github/codeql-action/blob/main/upload-sarif/action.yml&quot;&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;github/codeql-action/upload-sarif&lt;/code&gt; action&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Repeat.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;example-sarif-report&quot;&gt;Example SARIF report&lt;/h4&gt;

&lt;p&gt;An example SARIF report (generated by &lt;a href=&quot;https://brakemanscanner.org/&quot;&gt;the Brakeman tool&lt;/a&gt;  for &lt;a href=&quot;https://github.com/presidentbeef/brakeman/tree/aef6253a8b7bcb97116f2af1ed2a561a6ae35bd5/test/apps/rails3.2&quot;&gt;an intentially vulnerable Ruby on Rails application&lt;/a&gt;), whose structure was designed by following the process outlined above, is &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3&quot;&gt;available&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;The following points warrant special mention:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The output conforms to version &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;2.1.0&lt;/code&gt; of the SARIF spec, as indicated by &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L2-L3&quot;&gt;the top-level &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;version&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;schema&lt;/code&gt; properties&lt;/a&gt;, and confirmed by &lt;a href=&quot;https://sarifweb.azurewebsites.net/Validation&quot;&gt;the online SARIF validator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L4&quot;&gt;top-level &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;runs&lt;/code&gt; object&lt;/a&gt; is an array containing a single element, an object representing the &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L8-L10&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tool&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L11-L369&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rules&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L372-L1318&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;results&lt;/code&gt;&lt;/a&gt; of the run.
    &lt;ul&gt;
      &lt;li&gt;The tool’s &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L10&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;semanticVersion&lt;/code&gt;&lt;/a&gt; is useful to include, it’s helpful for ingestion systems to know run-over-run if a tool is updated.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rules&lt;/code&gt; array represents the set of vulnerabilities that the tool scans for, each rule is represnted by an &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L13&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L14&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;name&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L15-L17&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fullDescription&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L18&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;helpUri&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L19-L22&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;help&lt;/code&gt; text&lt;/a&gt;, and an additional &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L23-L27&quot;&gt;&lt;em&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;properties&lt;/code&gt;&lt;/em&gt; bag&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Each rule’s &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L13&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt;&lt;/a&gt; uses a prefix that is representative of the tool name, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BRAKE&lt;/code&gt; in this instance, followed by a numeric identifier. This helps with filtering of rules in the GitHub code scanning UI&lt;/li&gt;
      &lt;li&gt;Each rule’s &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L14&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;name&lt;/code&gt;&lt;/a&gt; is a hierarchical property, this makes sense for this particular tool and othes may also adopt this pattern where it makes sense&lt;/li&gt;
      &lt;li&gt;Each rule’s &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L16&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fullDescription&lt;/code&gt;&lt;/a&gt; ends with a period, which helps facilitate a consistent user experience when the rule is rendered by GitHub code scanning&lt;/li&gt;
      &lt;li&gt;Each rule’s &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L19-L22&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;help&lt;/code&gt;&lt;/a&gt; references an external article via a URL. Generally it is preferred to include the help text inline, within the SARIF report, but for this implementation this was not straightforward, and will hopefully be addressed in a subsequent iteration.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;results&lt;/code&gt; array captures the results of the analysis, with each violation of a rule being captured in a single result entry. For example, rule &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BRAKE0014&lt;/code&gt; is violated five times, as indicated by results on lines &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L437&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;437&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L458&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;458&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L479&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;479&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L500&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;500&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L521&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;521&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Each result’s entry references the rule being violated, via the &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L374-L375&quot;&gt;rule’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;id&lt;/code&gt; and position in the rules array&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Each result’s entry maps onto a source file via &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L380-L392&quot;&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;locations&lt;/code&gt; array&lt;/a&gt;, for portability across systems, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uri&lt;/code&gt; is expressed &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L384-L385&quot;&gt;a path relative to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%SRCROOT%&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The following screenshot shows the GitHub code scanning representation of a violation of rule &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BRAKE0014&lt;/code&gt;, derived from the corresponding result object on &lt;a href=&quot;https://gist.github.com/githubteacher/e8bfcff2c48f3a5814eb71328040c3e3#file-example-sarif-json-L520-L540&quot;&gt;lines &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;520&lt;/code&gt; through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;540&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://user-images.githubusercontent.com/27806/110868071-7c291980-828d-11eb-9423-f48c6af9be02.jpeg&quot; alt=&quot;code-scanning-example&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Note, this is a relatively straightforward SARIF report, more sophisticated constructs are possible. To learn more, it is recommended to follow &lt;a href=&quot;https://github.com/microsoft/sarif-tutorials&quot;&gt;the SARIF tutorials&lt;/a&gt;, and review &lt;a href=&quot;https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html&quot;&gt;the specification&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;implementation-detail&quot;&gt;Implementation detail&lt;/h4&gt;

&lt;p&gt;Once you are satisfied with the structure of the SARIF produced by your tool, there are two primary approaches when integrating it with code scanning:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Via &lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Via &lt;strong&gt;GitHub Apps&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;em&gt;former&lt;/em&gt; is generally applicable where:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The tooling is installable as a CLI tool that can easily execute on GitHub’s compute (e.g. Brakeman, detekt), -or-&lt;/li&gt;
  &lt;li&gt;The tooling may be easily invoked via public or authenticated API calls. Tokens for authentication may be held in GitHub as &lt;a href=&quot;https://docs.github.com/en/actions/reference/encrypted-secrets&quot;&gt;encrypted secrets&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;em&gt;latter&lt;/em&gt; is more suitable for solutions that have unique compute requirements, or that have user-facing elements (such as configuration controls or dashboards), potentially via a dedicated web UI or control panel.&lt;/p&gt;

&lt;p&gt;GitHub Actions and GitHub Apps are both covered in more detail in &lt;a href=&quot;https://docs.google.com/presentation/d/e/2PACX-1vTDcjQIt_TD91ui6_PS9bpazHwzGs1rF7LxS0RUpja8OqwHk6gRN7esLMF7wfnPsGX_iI_xRYRUn9O1/pub?start=false&amp;amp;loop=false&amp;amp;delayms=3000&amp;amp;slide=id.g7b50c989b4_0_0&quot;&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Platform Integration 101&lt;/code&gt; presentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additional resources are also available for both &lt;a href=&quot;https://partner.github.com/resources?filters=Actions&quot;&gt;GitHub Actions&lt;/a&gt; and &lt;a href=&quot;https://partner.github.com/resources?filters=GitHub_Apps&quot;&gt;GitHub Apps&lt;/a&gt;&lt;/p&gt;

&lt;h4 id=&quot;onboarding-your-integration-into-the-github-code-scanning-ui&quot;&gt;Onboarding your integration into the GitHub code scanning UI&lt;/h4&gt;

&lt;p&gt;When complete, the onboarding of your integration into the GitHub code scanning can be initiated by opening a new pull request in &lt;a href=&quot;https://github.com/actions/starter-workflows&quot;&gt;the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;actions/starter-workflows&lt;/code&gt; repo&lt;/a&gt;. Additional instructions are located in the pull request template.&lt;/p&gt;

&lt;h4 id=&quot;publication-to-github-marketplace&quot;&gt;Publication to GitHub Marketplace&lt;/h4&gt;

&lt;p&gt;In addition to onboarding into the code scanning UI, we highly recommend publishing your integration to Marketplace for increased visibility.&lt;/p&gt;

&lt;p&gt;Additional information is available for both &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/publishing-actions-in-github-marketplace&quot;&gt;GitHub Actions&lt;/a&gt; and &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/developers/apps/installing-github-apps#offering-your-app-in-the-github-marketplace&quot;&gt;GitHub Apps&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;/h3&gt;

&lt;p&gt;Existing implementations and examples are available:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Brakeman SARIF implementation: &lt;a href=&quot;https://github.com/presidentbeef/brakeman/pull/1500&quot;&gt;github.com/presidentbeef/brakeman/pull/1500&lt;/a&gt; (Brakeman is an open source statis analysis tool, popular in the Ruby on Rails community)&lt;/li&gt;
  &lt;li&gt;Code Scanning &lt;em&gt;playground&lt;/em&gt;: &lt;a href=&quot;https://github.com/swinton/code-scanning-playground&quot;&gt;github.com/swinton/code-scanning-playground&lt;/a&gt; (a &lt;em&gt;forkable&lt;/em&gt; template repo, showing a simple code scanning workflow leveraging ESlint)&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;related&quot;&gt;Related&lt;/h3&gt;

&lt;h4 id=&quot;resources-for-learning-sarif&quot;&gt;Resources for learning SARIF&lt;/h4&gt;

&lt;p&gt;Useful resources for learning SARIF are available:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;SARIF tutorials from Microsoft: &lt;a href=&quot;https://github.com/microsoft/sarif-tutorials&quot;&gt;github.com/microsoft/sarif-tutorials&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;SARIF Validator web-based tool: &lt;a href=&quot;https://sarifweb.azurewebsites.net/Validation&quot;&gt;sarifweb.azurewebsites.net/Validation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;SARIF specification, v2.1.0: &lt;a href=&quot;https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html&quot;&gt;docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;further-documentation&quot;&gt;Further documentation&lt;/h4&gt;

&lt;p&gt;Further documentation is available on GitHub.com, including:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;SARIF support for code scanning: &lt;a href=&quot;https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/&quot;&gt;docs.github.com/github/finding-security-vulnerabilities-and-errors-in-your-code/sarif-support-for-code-scanning&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Code scanning REST API: &lt;a href=&quot;https://docs.github.com/en/rest/reference/code-scanning&quot;&gt;docs.github.com/rest/reference/code-scanning&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;</content><author><name></name></author><category term="Integration-Resources" /><category term="Patterns" /><category term="Actions" /><category term="Apps" /><category term="DevSecOps" /><category term="CodeScanning" /><summary type="html">Problem statement</summary></entry><entry><title type="html">Welcome to our new Partner Hub</title><link href="https://partner.github.com/2020/12/06/welcome.html" rel="alternate" type="text/html" title="Welcome to our new Partner Hub" /><published>2020-12-06T08:00:52+00:00</published><updated>2020-12-06T08:00:52+00:00</updated><id>https://partner.github.com/2020/12/06/welcome</id><content type="html" xml:base="https://partner.github.com/2020/12/06/welcome.html">&lt;h2 id=&quot;welcome&quot;&gt;Welcome!&lt;/h2&gt;

&lt;p&gt;We’re happy to announce that we have launched our new Partner Hub! 🎉  The Partner Hub provides access to all the resources you need so that we can work together to create incredible experiences for our shared customers.&lt;/p&gt;

&lt;p&gt;As a first step, evaluate which GitHub Partner Program to join. The &lt;strong&gt;Technology Partner program&lt;/strong&gt; is for ISVs, integrators, and cloud service providers that want to extend the GitHub platform and co-market with us, while the &lt;strong&gt;Service and Channel Partner Program&lt;/strong&gt; is for service-oriented and resell partners that want to deliver services to our joint customers and co-sell with us.&lt;/p&gt;

&lt;h3 id=&quot;partner-program-requirements&quot;&gt;Partner Program Requirements&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;For the Technology Partner Program, see the Program Requirements section on the &lt;a href=&quot;https://partner.github.com/technology-partners&quot;&gt;Technology Partners&lt;/a&gt; tab.&lt;/li&gt;
  &lt;li&gt;For the Channel Partner Program, see our &lt;a href=&quot;https://partner.github.com/go-to-market/2020/11/25/GitHub-Services-&amp;amp;-Channel-Partners-Handbook.html&quot;&gt;Services &amp;amp; Channel Partners Handbook&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;where-to-get-started&quot;&gt;Where to get started&lt;/h3&gt;

&lt;p&gt;Get started by browsing through the below articles:&lt;/p&gt;

&lt;h4 id=&quot;technology-partners&quot;&gt;Technology Partners&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/integration-resources/2020/11/05/slides-platform-integration-101.html&quot;&gt;Platform integration 101 slides&lt;/a&gt; - Overview of how to build technical integrations with GitHub&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/integration-resources/2020/11/10/learn-github-actions.html&quot;&gt;Learn GitHub Actions&lt;/a&gt; - Guide to help you use GitHub Actions to accelerate application development workflows&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/integration-resources/2020/11/10/github-apps-101.html&quot;&gt;GitHub Apps 101 slides&lt;/a&gt; - Introduction to GitHub Apps&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/go-to-market/2020/11/25/co-marketing-with-github.html&quot;&gt;GitHub Technology Partner Program: Co-marketing with GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;services--channel-partners&quot;&gt;Services &amp;amp; Channel Partners&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/go-to-market/2020/11/25/GitHub-Services-&amp;amp;-Channel-Partners-Handbook.html&quot;&gt;GitHub Services &amp;amp; Channel Partners Handbook&lt;/a&gt; - Accelerate your business and help your customers reach their full DevOps potential&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://partner.github.com/go-to-market/2020/11/25/Github-Partner-Value-Proposition.html&quot;&gt;GitHub Channel Partner Value Proposition&lt;/a&gt; - Market opportunities, partner growth insights, and GitHub orientated offerings for partners&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;partner-hub-updates&quot;&gt;Partner Hub Updates&lt;/h3&gt;

&lt;p&gt;Check out our new Resources and Newsfeed sections:&lt;/p&gt;

&lt;h4 id=&quot;resources&quot;&gt;Resources&lt;/h4&gt;

&lt;p&gt;The &lt;a href=&quot;https://partner.github.com/resources&quot;&gt;Resources&lt;/a&gt; section contains info on topics such as integration and go-to-market.
&lt;img src=&quot;https://user-images.githubusercontent.com/2547497/101198609-90b79f00-3618-11eb-907b-cd35d7a9dec1.png&quot; alt=&quot;image&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;newsfeed&quot;&gt;Newsfeed&lt;/h4&gt;

&lt;p&gt;We will continuously update the &lt;a href=&quot;https://partner.github.com/newsfeed&quot;&gt;Newsfeed&lt;/a&gt; with key information such as partner-related product updates, events, and more.  Stay tuned for our quarterly newsletter with all of our ecosystem updates.&lt;/p&gt;</content><author><name>Parth Dhingreja:Business Development Manager,Erika Kato:Senior Partner Engineering and Operations Manager</name></author><summary type="html">Welcome!</summary></entry><entry><title type="html">Sponsorship Opportunities</title><link href="https://partner.github.com/go-to-market/2020/11/30/Sponsorship-Opportunities.html" rel="alternate" type="text/html" title="Sponsorship Opportunities" /><published>2020-11-30T08:00:52+00:00</published><updated>2020-11-30T08:00:52+00:00</updated><id>https://partner.github.com/go-to-market/2020/11/30/Sponsorship%20Opportunities</id><content type="html" xml:base="https://partner.github.com/go-to-market/2020/11/30/Sponsorship-Opportunities.html">&lt;p&gt;Leverage the GitHub brand to get in front of 1000’s of developers with our Sponsored opportunities.&lt;/p&gt;</content><author><name></name></author><category term="Go-to-market" /><category term="Technology_Partners" /><category term="Services_and_Channel_Partners" /><summary type="html">Leverage the GitHub brand to get in front of 1000’s of developers with our Sponsored opportunities.</summary></entry><entry><title type="html">GitHub Services &amp;amp; Channel Partners Handbook</title><link href="https://partner.github.com/go-to-market/2020/11/25/GitHub-Services-&-Channel-Partners-Handbook.html" rel="alternate" type="text/html" title="GitHub Services &amp;amp; Channel Partners Handbook" /><published>2020-11-25T16:08:39+00:00</published><updated>2020-11-25T16:08:39+00:00</updated><id>https://partner.github.com/go-to-market/2020/11/25/GitHub%20Services%20&amp;%20Channel%20Partners%20Handbook</id><content type="html" xml:base="https://partner.github.com/go-to-market/2020/11/25/GitHub-Services-&amp;-Channel-Partners-Handbook.html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Welcome to the GitHub Services &amp;amp; Channel Partner Network! By partnering with GitHub, you can
accelerate your business and help your customers reach their full DevOps potential.&lt;/p&gt;

&lt;p&gt;Developers sit at the heart of any organization. And GitHub serves as a catalyst for driving cultural
change within an organization, unifying developers across a single platform and breaking down silos.&lt;/p&gt;

&lt;p&gt;GitHub partners can help customers realize the full value of a true DevOps culture.&lt;/p&gt;

&lt;p&gt;The purpose of this handbook is to provide an overview of our partner programs and resources to help
our partners provide joint value to customers and grow your business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt; &lt;a href=&quot;https://drive.google.com/file/d/1EuP_wrovIWZGqVq2Z603vC-eJ_uwjFso/view&quot;&gt;GitHub Services &amp;amp; Channel Partners Handbook&lt;/a&gt;&lt;/p&gt;</content><author><name></name></author><category term="Go-to-market" /><category term="Co-marketing" /><category term="Services_and_Channel_Partners" /><summary type="html">Overview</summary></entry><entry><title type="html">Github Channel Partner Value Proposition</title><link href="https://partner.github.com/go-to-market/2020/11/25/Github-Partner-Value-Proposition.html" rel="alternate" type="text/html" title="Github Channel Partner Value Proposition" /><published>2020-11-25T16:00:34+00:00</published><updated>2020-11-25T16:00:34+00:00</updated><id>https://partner.github.com/go-to-market/2020/11/25/Github%20Partner%20Value%20Proposition</id><content type="html" xml:base="https://partner.github.com/go-to-market/2020/11/25/Github-Partner-Value-Proposition.html">&lt;p&gt;&lt;strong&gt;Market Opportunity&lt;/strong&gt; - Over 50 million developers use GitHub today. Week by week, we are adding more and more customers across all segments. These customers choose GitHub to unlock the full potential of their development teams to help transform their organisations in a secure and compliant way. They need help to realize this journey. Few customers today are able to unlock the full potential of a mature DevOps approach, they need support from our partners to guide them realize their full potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Partner Growth Insights&lt;/strong&gt; - Our most successful Services &amp;amp; Channel partners are looking to develop a Services practice centered around GitHub. These partners lead with services engagements, which our partners leverage to allow customers to get the most value out of GitHub. As we think about the future opportunities for partners and GitHub, our partners’ long-term success will be enhanced by building out their services capabilities. We see potential for growth around the Advanced Security space, and migration, innersource, app modernization, and digital transformation related services are some of the top partner offerings today.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Orientated Offerings For Partners&lt;/strong&gt; - Build GitHub-orientated offerings and practice to engage customers in clearly defined scenarios.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Driving GitHub Deployment and Adoption&lt;/strong&gt; - GitHub is being increasingly successful with acquiring large customers with large GH footprints. These customers require deep support to help them deploy and drive adoption of the customer base. Triangulating our joint customer lists here may be interesting to explore.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Extend GitHub Workloads in Customers&lt;/strong&gt;:
    &lt;ul&gt;
      &lt;li&gt;Drive Actions Adoption - migrations from other platforms and providing ongoing support for customers CI/CD journey&lt;/li&gt;
      &lt;li&gt;GitHub Advanced Security - enabling customers to develop code that secure by design - move security to the left and leverage GHAS capabilities&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Adding GitHub to existing offerings&lt;/strong&gt;:
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Application Modernization&lt;/strong&gt; - address the underlying root causes that created the need for applications to be modernized. If there was an effective SDLC /DevOps approach applications would be managed more effectively through their lifecycle&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Cloud Native App Development&lt;/strong&gt; - when supporting customers develop new applications, use GitHub as the catalyst and enabler to accelerate the development cycle, write secure code by design and reduce time to deploy.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Digital Transformation&lt;/strong&gt; - Overall Digital Transformation engagement, help customers become software/technology customers. Requires them to invest in the Development capabilities and unlock the potential of their own developers.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;Innersourcing&lt;/strong&gt; - Driving developer productivity, sharing and collaboration, writing a line of code only once, leveraging OpenS Source in secure ways…..&lt;/li&gt;
      &lt;li&gt;**Journey to the Cloud **- Include Infrastructure Migrations (with Infrastructure as Code), moving development to the cloud, deploying applications to the cloud (New/Existing)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name></name></author><category term="Go-to-market" /><category term="Co-marketing" /><category term="Services_and_Channel_Partners" /><summary type="html">Market Opportunity - Over 50 million developers use GitHub today. Week by week, we are adding more and more customers across all segments. These customers choose GitHub to unlock the full potential of their development teams to help transform their organisations in a secure and compliant way. They need help to realize this journey. Few customers today are able to unlock the full potential of a mature DevOps approach, they need support from our partners to guide them realize their full potential.</summary></entry><entry><title type="html">GitHub Technology Partner Program: Co-marketing with GitHub</title><link href="https://partner.github.com/go-to-market/2020/11/25/co-marketing-with-github.html" rel="alternate" type="text/html" title="GitHub Technology Partner Program: Co-marketing with GitHub" /><published>2020-11-25T13:17:15+00:00</published><updated>2020-11-25T13:17:15+00:00</updated><id>https://partner.github.com/go-to-market/2020/11/25/co-marketing-with-github</id><content type="html" xml:base="https://partner.github.com/go-to-market/2020/11/25/co-marketing-with-github.html">&lt;h2 id=&quot;general-guidelines&quot;&gt;General guidelines&lt;/h2&gt;

&lt;p&gt;Before engaging in co-marketing, we ask our partners to have (or be in the process of producing) a &lt;a href=&quot;https://docs.google.com/presentation/d/e/2PACX-1vTDcjQIt_TD91ui6_PS9bpazHwzGs1rF7LxS0RUpja8OqwHk6gRN7esLMF7wfnPsGX_iI_xRYRUn9O1/pub?start=false&amp;amp;loop=false&amp;amp;delayms=3000&amp;amp;slide=id.g7b50c989b4_0_0&quot;&gt;GitHub integration such as a verified Action, Application, or public container image published to GitHub Packages&lt;/a&gt; onto the GitHub Marketplace. Partners must also be a part of the GitHub Technology Partner program.&lt;/p&gt;

&lt;h2 id=&quot;co-marketing&quot;&gt;Co-marketing&lt;/h2&gt;

&lt;p&gt;Joint go-to-market efforts may include co-branding support and social amplification for new integrations or user enablement. For advanced partners, we will consider additional tactics, such as partner-led webcasts, highlights within other GitHub-led content or blog, support for partner public product announcements, joint customer stories, or other items specific to each partner. Please work with your business development manager for more information.&lt;/p&gt;

&lt;h2 id=&quot;branding-assets&quot;&gt;Branding assets&lt;/h2&gt;

&lt;p&gt;Upon completion of a validated integration, partners can request a social card with their logo and an appropriate GitHub property logo based on their particular integration with GitHub (e.g. Actions, Packages, GitHub Application). Your business development manager will connect you with GitHub marketing teams to work with you on appropriate placement.&lt;/p&gt;

&lt;p&gt;Tips on sending brand elements:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;SVG files with transparent background are preferred&lt;/li&gt;
  &lt;li&gt;For flexibility, we request square and longitudinal aspect ratios, as well as dark- and light-colored logos for contrast against light and dark backgrounds&lt;/li&gt;
  &lt;li&gt;Please also send an SVG of your mark (for most companies, this is your logo, minus text of the company or product name)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Alternatively, you can send a URL for your branding guidelines to your GitHub business development manager or other GitHub marketing contact.&lt;/p&gt;

&lt;h2 id=&quot;social-amplification&quot;&gt;Social amplification&lt;/h2&gt;

&lt;p&gt;We love highlighting the work our partners do with us! We use two main social media channels, &lt;strong&gt;&lt;a href=&quot;https://twitter.com/github&quot;&gt;Twitter&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://www.linkedin.com/company/github/&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/strong&gt; We will amplify:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;announcements in which GitHub integrations are included, such as an Action or GitHub App in GitHub Marketplace, or a public container image within GitHub Packages (CTA in the announcement has to include the GitHub Marketplace URL)&lt;/li&gt;
  &lt;li&gt;walkthrough or how-to content on these integrations when they are on partner-led channels&lt;/li&gt;
  &lt;li&gt;virtual events in which both GitHub and the partner are participating, such as a webinar, or conference breakout session&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We reserve the right to choose which channel(s) to use to amplify, based on our judgment of what will be of interest to the audiences on each. Some items may be a better fit for Twitter, some for LinkedIn; some will find a home on both. Posting is also subject to available space in the GitHub editorial calendar.&lt;/p&gt;

&lt;h2 id=&quot;partner-owned-content--supporting-quote-from-github&quot;&gt;Partner-owned content + supporting quote from GitHub&lt;/h2&gt;

&lt;p&gt;Please let us know if you are planning to do any sort of owned content to discuss your GitHub integration, and would benefit from additional support from GiHub. We’ll want to know a few things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Will there be a press release, blog, social content?&lt;/strong&gt; If so, GitHub public relations and marketing will need to review to ensure GitHub and our products are being represented properly.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Are you seeking a supporting quote from GitHub?&lt;/strong&gt; Please note - we can’t promise every partner a quote, and, if we do, we prefer that it be in support of announcements of new GitHub Actions or integrations that are verified within our Marketplace, or significant updates to existing integrations.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Is there any specific timeline you’re working against?&lt;/strong&gt; It’s ideal for GitHub public relations to have at least a week to review partner-owned content, so insight into the timeline for publication of partner-owned content is imperative.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;partner-integration-spotlights&quot;&gt;Partner integration spotlights&lt;/h2&gt;

&lt;p&gt;On occasion, we may highlight GitHub partner integrations through various customer or user communications channels, highlighting new integrations or partnerships. In these instances, we will proactively reach out to you to ask for 100-word summaries from our partners to include. These summaries should include an introduction to the technology partner and the product that is integrating with GitHub, along with a short description of the specific integration itself. GitHub public relations and marketing will need to review and approve the description for accuracy and messaging.&lt;/p&gt;

&lt;p&gt;Potential partner integration spotlight channels include enterprise newsletters, round-up blog posts on partner integrations, or demos through our other online video channels such as &lt;strong&gt;&lt;a href=&quot;https://www.twitch.tv/githubenterprise&quot;&gt;Twitch&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For all other questions&lt;/strong&gt; regarding co-marketing, please reach out through the partner portal, or to your assigned business development manager.&lt;/p&gt;</content><author><name></name></author><category term="Go-to-market" /><category term="Technology_Partners" /><category term="Co-marketing" /><summary type="html">General guidelines</summary></entry><entry><title type="html">Setting up a CLI on GitHub’s hosted runners</title><link href="https://partner.github.com/integration-resources/2020/11/24/pattern-setting-up-a-cli-on-github-s-hosted-runners.html" rel="alternate" type="text/html" title="Setting up a CLI on GitHub’s hosted runners" /><published>2020-11-24T00:00:00+00:00</published><updated>2020-11-24T00:00:00+00:00</updated><id>https://partner.github.com/integration-resources/2020/11/24/pattern-setting-up-a-cli-on-github-s-hosted-runners</id><content type="html" xml:base="https://partner.github.com/integration-resources/2020/11/24/pattern-setting-up-a-cli-on-github-s-hosted-runners.html">&lt;h3 id=&quot;problem-statement&quot;&gt;Problem statement&lt;/h3&gt;

&lt;p&gt;Many of GitHub’s Technology Partners wish to provide a way for developers to easily access their services via a configured CLI environment on GitHub’s hosted runners, for example, so that it is available in a CI/CD workflow.&lt;/p&gt;

&lt;p&gt;The solution should :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Make it simple for developers to precisely describe the version of the CLI to be installed&lt;/li&gt;
  &lt;li&gt;Support multiple operating systems&lt;/li&gt;
  &lt;li&gt;Run in an efficient fashion to minimize run-time and associated costs&lt;/li&gt;
  &lt;li&gt;Work across hosted and self-hosted runners&lt;/li&gt;
  &lt;li&gt;Leverage community tooling when possible&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;solution&quot;&gt;Solution&lt;/h3&gt;

&lt;p&gt;Technology Partners should solve this by providing an action in a repo they maintain, written in, or compiled / transpiled to JavaScript. The action should be responsible for retrieving a specific version of the CLI, installing it, adding it to the path, and (optionally) caching it. Commonly this variety of action that performs some setup of a tool, is named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;**setup-$TOOL**&lt;/code&gt;. Refer to the &lt;a href=&quot;#examples&quot;&gt;examples&lt;/a&gt; below to see how this pattern is already in use in multiple ecosystems.&lt;/p&gt;

&lt;p&gt;GitHub provides the &lt;a href=&quot;https://github.com/actions/toolkit&quot;&gt;actions/toolkit&lt;/a&gt; set of packages, which makes this process more straightforward across all of GitHub’s hosted runners.&lt;/p&gt;

&lt;p&gt;Specifically, the &lt;a href=&quot;https://github.com/actions/toolkit/tree/main/packages/core&quot;&gt;actions/core&lt;/a&gt; and &lt;a href=&quot;https://github.com/actions/toolkit/tree/main/packages/tool-cache&quot;&gt;actions/tool-cache&lt;/a&gt; package expose operations that are commonly required in this scenario, in a cross-platform way.&lt;/p&gt;

&lt;h3 id=&quot;implementation&quot;&gt;Implementation&lt;/h3&gt;

&lt;p&gt;A simple cross-platform implementation in JavaScript follows, note, the implementation for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;getDownloadURL&lt;/code&gt; is intentionally absent, so that the example remains generic:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;core&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@actions/core&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;tc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;require&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@actions/tool-cache&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;async&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;setup&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;// Get version of tool to be installed&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getInput&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;// Download the specific version of the tool, e.g. as a tarball&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pathToTarball&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;tc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;downloadTool&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getDownloadURL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;());&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;// Extract the tarball onto host runner&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;pathToCLI&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;await&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;tc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;extractTar&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pathToTarball&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;// Expose the tool by adding it to the PATH&lt;/span&gt;
  &lt;span class=&quot;nx&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;addPath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;pathToCLI&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nx&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;exports&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;setup&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;concrete-implementation&quot;&gt;Concrete implementation&lt;/h3&gt;

&lt;p&gt;A concrete implementation of this pattern is available &lt;a href=&quot;https://github.com/github-developer/example-setup-gh&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;examples&quot;&gt;Examples&lt;/h3&gt;

&lt;p&gt;Example where this pattern is employed include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ruby/setup-ruby&quot;&gt;ruby/setup-ruby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/google-github-actions/setup-gcloud&quot;&gt;google-github-actions/setup-gcloud&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/hashicorp/setup-terraform&quot;&gt;hashicorp/setup-terraform&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;related&quot;&gt;Related&lt;/h3&gt;

&lt;p&gt;For more information on creating a JavaScript action, refer to &lt;a href=&quot;https://docs.github.com/en/free-pro-team@latest/actions/creating-actions/creating-a-javascript-action&quot;&gt;this guide&lt;/a&gt;.&lt;/p&gt;</content><author><name></name></author><category term="Integration-Resources" /><category term="Patterns" /><category term="Actions" /><summary type="html">Problem statement</summary></entry><entry><title type="html">Building blocks: Creating your own GitHub Actions with JavaScript</title><link href="https://partner.github.com/integration-resources/2020/11/10/building-blocks.html" rel="alternate" type="text/html" title="Building blocks: Creating your own GitHub Actions with JavaScript" /><published>2020-11-10T00:00:00+00:00</published><updated>2020-11-10T00:00:00+00:00</updated><id>https://partner.github.com/integration-resources/2020/11/10/building-blocks</id><content type="html" xml:base="https://partner.github.com/integration-resources/2020/11/10/building-blocks.html">&lt;p&gt;This workshop was originally given at &lt;a href=&quot;https://githubuniverse.com/&quot;&gt;GitHub Universe&lt;/a&gt; 2019 and provides a conceptual overview of GitHub Actions and a guide of how to build your very own action using JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href=&quot;https://github.com/githubuniverseworkshops/building-blocks&quot;&gt;Building Blocks: Creating Your Own GitHub Actions With JavaScript&lt;/a&gt;&lt;/p&gt;</content><author><name></name></author><category term="Integration-Resources" /><category term="Actions" /><summary type="html">This workshop was originally given at GitHub Universe 2019 and provides a conceptual overview of GitHub Actions and a guide of how to build your very own action using JavaScript.</summary></entry><entry><title type="html">Creating a GitHub App - Demo Days</title><link href="https://partner.github.com/integration-resources/2020/11/10/creating-a-github-app.html" rel="alternate" type="text/html" title="Creating a GitHub App - Demo Days" /><published>2020-11-10T00:00:00+00:00</published><updated>2020-11-10T00:00:00+00:00</updated><id>https://partner.github.com/integration-resources/2020/11/10/creating-a-github-app</id><content type="html" xml:base="https://partner.github.com/integration-resources/2020/11/10/creating-a-github-app.html">&lt;p&gt;Steve Winton, Partner Engineer, explains why someone might want to build a GitHub app, then builds one from scratch. Create 3rd party integrations to GitHub via the API and allow them to act autonomously on protected resources. Using the example of OAuth, walk through GitHub Enterprise Server and learn how to build then manage administration, monitoring and installations.&lt;/p&gt;

&lt;p&gt;Once you’ve built your app, consider partnering with GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video:&lt;/strong&gt; &lt;a href=&quot;https://youtu.be/iaBEWB1As0k&quot;&gt;Demo Days - Creating a GitHub App&lt;/a&gt;&lt;/p&gt;</content><author><name></name></author><category term="Integration-Resources" /><category term="GitHub_Apps" /><summary type="html">Steve Winton, Partner Engineer, explains why someone might want to build a GitHub app, then builds one from scratch. Create 3rd party integrations to GitHub via the API and allow them to act autonomously on protected resources. Using the example of OAuth, walk through GitHub Enterprise Server and learn how to build then manage administration, monitoring and installations.</summary></entry></feed>