Git 101

By 增廣建文

Agenda

  • Git Intro
  • Git Tools
  • Azure DevOps

Git Intro

Part 01

Use VScode to Control Git

  • Pull/ Push
  • Checkout
  • Stash

Use Intellij to Control Git

  • Shelve Changes
  • Smart Checkout
  • Cherry-Pick
  • Diff
  • Undo Commit
  • Partial Commit & Change List

Git Commands

Azure DevOps

Part 02

Features

Create an Account

如果有Github帳號的話可以直接用Github帳號來創建Azure DevOps的帳號

沒有Github帳號的話就會需要先有微軟帳號或是Azure的帳號

Organization


由於是面向企業的DevOps服務,自然系統架構的最上層會是Organization

Project

Repo


不像Github能直接看到一個User下的所有Repo,需要使用Navber的下拉選單

Wiki

PR

Boards - Work Item


可以用來規劃專案內有那些項目需要進行

CI Pipeline


CI Pipeline可以協助我們在commit後自動達成一些原本需手動執行的任務

像是build docker image或是binary以及跑unit test

First Simple Pipeline

使用Pipeline來自動打包docker image

trigger:
- main

pool:
  vmImage: 'ubuntu-latest' # or 'windows-latest'

variables:
  imageName: 'MERN-docker'

steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: Dockerfile

Self-hosted CI Agent


由於免費的CI是有執行時間的限制,因此通常會需要自己用docker建

Test Plans

Artifacts


存放Pipeline產生的檔案,包含前面的test report, docker image或是執行檔

免費方案只有給到2GB,因此非常容易就用滿了

Publish Docker Image from CI to Artifacts

簡單的範例讓任何CI產的檔案能夠被放到artifacts去

- stage: Build
  displayName: Build DevOps base image
  jobs:
  - job: Build_and_Push
    steps:
    - task: Docker@2
      displayName: Build
      inputs:
        containerRegistry: ''
        repository: 'MY_REPO/IMAGE'
        command: 'build'
        Dockerfile: 'PATH_TO_MY_DOCKERFILE'
        tags: $(tag)
    - task: Bash@3
      displayName: Save Docker Image
      inputs:
        targetType: 'inline'
        script: |
          docker save MY_DOCKER_REPO_IMAGE_NAME:$(tag) -o $(Pipeline.Workspace)/MY_IMAGE_FILE.tar
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Pipeline.Workspace)/MY_IMAGE_FILE.tar'
        artifact: 'MY_ARTIFACT'
        publishLocation: 'pipeline'

CD/ Release


通常是直接佈署到Azure上居多