Jon Rumsey

An online markdown blog and knowledge repository.


Project maintained by nojronatron Hosted on GitHub Pages — Theme by mattgraham

GitHub Foundations Certification Training Notes

These will be limited reference notes related to the GitHub Foundations Certification learning topics, leading to an exam by the same name.

Table of Contents

Search and Organize Repo History using GitHub

Searching GitHub

Use GitHub "Sidebar" (the search box next to the Octocat icon) for results:

Use Filter Clauses:

Context Search:

Git Blame:

Cross Linking:

Manage Repo Changes With Pull Requests

Branches and Pull Requests

Branch:

Merging Branches:

Pull Requests (PRs)

Can be done:

What they do:

PR States:

Type Of Merges:

Notes:

AuthN and AuthZ User IDs on GitHub

User ID and Access Management

User Authentication:

Supported IdPs:

GitHub has limited support for SAML 2.0 IdPs. Not all SAML ID Providers are supported by GitHub for SCIM.

Repository Administrator Capabilities:

Common Administrator Tasks:

PATs, SSH keys, and OAuth Apps:

GitHub Support Out-of-scope Topics:

Usage Limits:

Terminology:

Communication Using Markdown

Overview

Provides convenient way to style text without the overhead of full HTML.

Allows Inline HTML Anyway

Want to use HTML anyway? Do it! <b>Hello</b> <em>World</em>! renders as: Hello World!

Note: Your linter might not like this.

Details

Slash Commands

GitHub Projects

Overview: Create Issues to drive Task creation and completion, relate work items and PRs, customize Fields, and enable Conversations.

Note: Projects can be Closed and Deleted.

Projects vs. Classic

Category/Feature Projects Classic
Boards Yes Yes
Lists Yes No
Timeline Layout Yes No
Sort, Rank, Group tabular data Yes Columns and Cards
Create visuals and charts Yes No, just a progress bar
GraphQL API Yes No
GitHub Actions Yes No
Column Presets Yes Yes

Tables and Boards

Data

Insight

Automation

Common Automation Tasks:

Ways to automate:

Create a Project

Org-level Creation:

  1. Your Organizations
  2. Overview
  3. Projects :arrow_right: New Project
  4. Select template (or not)
  5. Select Table
  6. Click Create Project

Project Properties

Common Props:

Common Tasks

Overall: Use the "+" sign to add new things within the Table including Fields:

Organize Your Project

Field Types: Text, Number, Date, "Single select", and Iteration

Project Visibility and Access:

Invite Collaborators: Invite individuals via Search then update their Role to supply the correct access permissions.

Add Project To A Team

Teams are granted REad Permissions on any Project they are added to.

  1. Open Your Organizations and select the target Org.
  2. Open Teams tab and select the Team to grant access to.
  3. Select Projects and choose "Link a project" to search for and select the target Project.

Add Project To A Repository

Can only list Projects if same User or Organization owns both the Projects and the Repository.

How to (Visibility is required):

  1. Main repository page select Projects tab.
  2. Click "Link a project" to search for Projects owned by the same User or Organization as the Repo Owner.
  3. Select the Project.

Project Insights

View, create, and customize charts based on Project Items:

Create: Within the Project "Insights" label, select new Chart and pick a chart type using the filter.

Customize:

  1. Select the chart to edit.
  2. Select Configure.
  3. Select Layout to pick a new Chart Type.
  4. Select X-axis to select appropriate Field.
  5. Select Group-by for the select Field, or None.

Github Codespaces

Codespaces Overview

Codespaces in a cloud-based IDE with all the tools and functionality of VS Code and the ability to interop with GitHub Repositories and JetBrains IDEs. A GitHub account is required and a billing account is necessary to enable Codespace usage.

Monthly Included Storage and Core Hours for Personal Accounts:

Codespaces Lifecycle

Designed to create a repeatable develpment enviornment configured for a project.

Create a Codespace

Create via GitHub.com, VS Code, or GitHub CLI.

Launch Codespace from:

Codespace Creation Process:

  1. VM and storage are spun-up.
  2. Container is created.
  3. Connection to Codespace is initialized.
  4. Post-creation steps are executed.

Saving Changes:

Supported Apps:

Inactivity Timeouts:

Internet Connectivity Required:

Close or Stop a Codespace

Rebuild Codespace

Delete a Codespace

After pushing changes (or you are ready to abandon them), delete the Codespace.

Codespace Personalization

A dedicated environment that is configurable:

Extensions and Plugins:

What About GitHub.Dev Editor?

Both Codespaces and GitHub.Dev do basic branch viewing and code editing.

Codespaces has these additional features:

Configure Code Scanning on GitHub

Code Scanning Purpose

Find security vulnerabilities and coding errors.

Code QL

The engine behind Code Scanning.

Setup CodeQL Analysis:

Supported Languages:

CodeQL Default Setup:

GitHub Actions Billing:

Enable CodeQL with 3rd Party Tools

Perform analysis elsewhere, then upload the results separately:

Code Scanning API

CodeQL CLI

Standalone code analysis product:

CodeQL Tools Bundle:

The Bundle is more effecient than using separate downloads and repo cloning.

Code Scanning with GH Actions

  1. Create a GitHub Actions workflow.
  2. Set a trigger to automate execution on either push or scheduled events.
  3. Store in .github/workflows directory.
  4. Use the upload-sarif action from the github/codeql-action repo.
  5. Configure upload-sarif action with input parameters as necessary, such as sarif-file: A file or directory where SARIF file(s) will be uploaded (relative to root).

SARIF Upload Limitations

3rd Party SARIF Generation And Usage

SARIF File generation can be done via other tools besides GH Actions or the CodeQL CLI:

Upload SARIF File As Part of CI Workflow

Example: Running an ESLINT static analysis tool can be output to a SARIF file which can then be uploaded via the upload-sarif action!

Configure Code Scanning

Configure Default or Advanced Code Scanning:

Remember: Editing a Workflow requires a Git Commit to set the changes in the repo.

Scanning Frequency:

on:
  push:
    branches: [main, protected]
  pull_request:
    branches: [main]
  schedule:
    - cron: '20 14 * * 1'
  ...

Define Severities:

Avoid Unnecessary PR Scanning:

on:
  push:
    branches: [main, protected]
  pull_request:
    branches: [main]
    paths-ignore:
      - '**/*.md'
      - '**/*.txt'
      ...  

Lab Notes

GitHub Administration

Team Level Administration

Users:

Teams:

Identity Provider Compatibility:

Permissions:

Team Level Administration Best Practices:

Admin at Organization Level:

Org Best Practices:

Enterprise Level Administration:

The Most Common Administrative Task: Setup and Control User Authentication to GitHub.

Repository Permission Level:

Team Permission Levels:

Organization Permission Levels:

Enterprise Permission Levels:

Repository Security Management:

CODEOWNERS File:

Insights:

Intro to GitHub Products

Remember: Git is used locally to track and store changes and GitHub can act as a remote repository in a DVCS. GitHub provides additional features around Git and project management, useful to individuals and groups.

Personal, Organizational, and Enterprise Accounts

Personal:

Free vs. Pro:

Organizations:

Enterprise:

GitHub Plans

GitHub Free:

Free Personal:

Free for Orgs:

GitHub Pro:

GitHub Team:

GitHub Enterprise:

GitHub Mobile and GitHub Desktop

Mobile:

Desktop:

GitHub Billing and Payments

Bills are specific to each account: Personal, Organization, Enterprise.

Billing Charges:

Intro to Git

Version Control is:

Note: Git was created by Linus Torvals (creator of Linux).

Distributed Version Control Systems:

Differences between Git and GitHub:

The roles Git and GitHub play in SDLC:

Git Repo Startup on Command Line

Set the following:

List existing Git configuration:

Create repo:

  1. Make a new directory
  2. Init git with a default branch named 'main': git init -b main

Common Commands

References

Return to ContEd Index

Return to Root README