Github Page

레이블이 SCM-GITHUB인 게시물을 표시합니다. 모든 게시물 표시
레이블이 SCM-GITHUB인 게시물을 표시합니다. 모든 게시물 표시

9/16/2025

VSCode Github 의 계정 2개 설정 (Window)

1. VS Code 의  Github 2개 계정 설정 

Github의 인증은 예전부터 SSH Key기반으로 제공을 해주고 있었으며, 서비스가 강화되면서 더 보안이 높은 인증들이 지원이 되고 있다. 

Linux에서 설정 한다고 하면, 사실 어렵지 않을 거라고 생각되어지며, Window 개발 환경이라면, 매번 제약이 따른다. 
사실 Linux에서 개발하는 게 가장 편하지만, 어쩔 수 없이 Window 기반으로 설정에 대해 정리하다.

  •  Github의 SSH Key 기반 2개 계정 설정 
Github 의 연결되는 거의 기본 인증 방식으로 SSH기반으로 사용하며  크게 어렵지는 않다. 
인터넷에 뒤져 보면 쉽게 가능하며, Github 의 신 기능들을 사용하는데, 많은 제약이 따른다.
SSH 기반으로 한다면, 기본 기능만 사용한다고 생각하면 될 것 같다. 

  •  Github의 SSH Key 추측 과 결론 
Github SSH Key로만 인증하여 할 경우, Github Action 와 Github Project 연결도 되려나 처음 생각했으나, 이것은 나중에 보니 다 나의 멍청한 의심인 것 같다. 
SSH기반으로 하면, Github Action 에 제한 있을 줄 알았는데, 별도 PAT(Personal Acess Tokens) 발급 받아서 하면, 제한된 기능이 동작이 된다.
Github Action (Secret) 
Github Project or Action 에서 관련 관련 정보들이 필요할 경우가 있다. 

  • Github Action 
처음 Github Action 기능 출시 할 때만 해도 영문 Manaul로 삽질 무지 했는데, AI(ChatGPT)가 너무 좋아져서 구지 이걸 작성을 직접 해야 하나 의문이 든다. 


  • Github HTTP PAT(Personal Acess Tokens)
PAT나온 지는 꽤 되었으며, 나도 사용한 지가 꽤 되었는데 매번 사용 설정이 좀 헷갈린다. 
PAT 기반 설정하는 방법은 
          Github 의 우측 프로필 아이콘-> Settings -> Developer Settings

말 그대로 PAT는 Token 이며, Hash 값이며  Password 사용하는 기능이다. 
발행 시 한번 만 복사할 기회가 주며, 그 다음에는 볼 수가 없다. 
그렇다고 너무 겁먹을 필요도 없는 게,  실수를 해도 다시 발행하면 되니 문제 없다. 

PAT 토큰, API Key 값과 비슷하며,  Password 사용되어진다. 

  • PAT(Personal Access Tokens)
  1. Fine-grained tokens  :  보안이 더 강화 되어 일일이 다 설정을 해야 하며 까다롭다.
  2. Tokens( Classic) : 일단 간단하게 쉽게 사용 가능 --> 가능하면, 이걸 선택 
    •  repo : Git 각 Respository 접근 
    •  gist : GIST
    •  project : Project 기능
    •  workflow : Github Action
이외 본인이 더 추가 할게 있다면, 읽어보고 더 선택하자 (추가적으로 변경도 가능하다)
Codespace 같은 경우는, Web broswer에서 직접 VS Code가 실행이 되어진다.
기간은 Custom으로 한 1년 설정하면 될 듯하다.



1.1 Window 의 자격 증명  (PAT 1개 설정) 

일단 HTTPS 기반의 PAT로 1개의 계정을 설정을 해보자.

  • Window 자격 증명 관리자( 실행 후 1개 계정 추가 ) 

  1.   제어판(Control Panel) → 사용자 계정(User Accounts) →자격 증명 관리자(Credential Manager)
  2.   우측 Window 자격 증명 (Credential Manager)
  3.   아래 일반 자격 증명 추가 

    •  인터넷 또는 네트워크 주소: git:https://github.com 
    •  사용자 이름: name
    • 패스워드: Token






1.2 각 Git System 설정(Config) 확인  

상위처럼 설정하고 아래와 같이 설정하면, 상위 1 개로 모두 관리가 되어진다.

  • Repository Git 의 설정 확인 
  1.  Resository Git 설정(config) 확인 : 
    1. gitconfig 분석:  각 아래로 gitconfig 분리되면서, 각 차이 구분 
      1. system : Git 설치되면서 설정  git/etc/gitconfig 
      2. global : 이 계정에 적용되어진 .gitconfig  
      3. local : 각 Respository 설정 .git/config 
    2. user.name
    3. user.email
    4. remote.xxxx 확인 
  2. .gitconfig 위치 확인 :  global 기반으로 확인 
    1. .gitconfig 파일의 위치 파악하고 변경 사항 확인 과 Backup 
    2. 본인이 직접 설정을 하고, 원하는 대로 확장 분리해서 설정  

> git config -h   // git config 관련 명령어들 확인
> git config --list // git config 설정된 것 확인
git config --list --show-origin --show-scope // globla/system 위치 확인


  • .gitconfig 위치 확인 과 각 설정 확인 
>   git config --list --show-origin --show-scope //system 보단 global에서 설정변경
```
system  file:C:/Program Files/Git/etc/gitconfig filter.lfs.required=true
system  file:C:/Program Files/Git/etc/gitconfig http.sslbackend=openssl
system  file:C:/Program Files/Git/etc/gitconfig http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt        
system  file:C:/Program Files/Git/etc/gitconfig core.autocrlf=true
system  file:C:/Program Files/Git/etc/gitconfig core.fscache=true
system  file:C:/Program Files/Git/etc/gitconfig core.symlinks=false
system  file:C:/Program Files/Git/etc/gitconfig pull.rebase=false
system  file:C:/Program Files/Git/etc/gitconfig credential.helper=manager-core
system  file:C:/Program Files/Git/etc/gitconfig credential.https://dev.azure.com.usehttppath=true
system  file:C:/Program Files/Git/etc/gitconfig init.defaultbranch=master
global  file:C:/SPB_Data/.gitconfig     core.autocrlf=true
global  file:C:/SPB_Data/.gitconfig     
...
```


  • Repository Git 의 설정 변경 
global 옵션이 들어가면, 거의 default 사용 생각하면 된다. 

# (중요) 자격 증명 의 Respository 마다 저장되는 것 방지 하고 상위 1개의 기반으로 사용

> git config --global credential.useHttpPath false


# GCM(Git Credential Manager) 통일 (자격증명)

> git config --global credential.helper manager-core




# (Global) 본인 User 설정 

> git config --global user.email "xxxx"

> git config --global user.name  xxxx


# (Global) 본인 User 확인

>  git config user.email

>  git config user.name 




  • Git의 기본 설정 값 (.gitconfig) 확인 과 변경 
.gitconfig  설정확인 (단일구성)
global로 설정되면, .gitconfig에 다 저장되어 관리되어지며, 이곳에서 직접 설정해도 좋다 

```
[user]
    name = xxx
    email = xxxx

[credential]
useHttpPath = false
helper = manager-core
```

  • Remote 정보 확인 및 설정 
> git remote -v
> git remote set-url origin https://github.com/<org>/<repo>
> git remote set-url origin https://github.com/<user>/<repo>


  • 실제 Respository 사용할 경우 
> git fetch 
> git pull origin main
> git clone  ssh:// or https:// 
> git push 



2. Window 의 자격 증명 (PAT 2개 구성 설정) 

일단 HTTPS 기반의 PAT로 2개의 계정을 설정을 해보자.

  • 자격 증명 관리자 2개 추가 

  1.   제어판\사용자 계정\자격 증명 관리자
  2.   우측 Window 자격증명 
  3.   아래 일반 자격 증명 추가 

    •  인터넷 또는 네트워크 주소: git:https://github.com 
    •  사용자 이름: name
    • 패스워드: Token







2.1 Git 의 설정(.gitconfig)  재구성  

나의 경우, 각 Directory 마다 다르게 설정이 되게 원해서 아래와 같이 설정 구성.
우선 상위에서 찾은 global .gitconfig 파일 위치를 찾아서,  
기존 파일(.gitconfig) 1개의 단일 구성이 아니라, 2단계 재구성하자 

  • Git 의 기본 설정(.gitconfig) 값 파일 구성 
  1. .gitconfig  : 전체 설정으로 동일하게 적용 
    1. .gitconfig-personal : 특정 Direcoty 의   나의 프로젝트에만 부분 적용 
    2. .gitconfig-company: 특정 Directory 의  회사 프로젝트에만 부분 적용 

  • .gitconfig 설정 구성 
```
# 공통
[core]
    autocrlf = true

# Github 계정-1  HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project_personal/**"]
    path = C:/SPB_Data/.gitconfig-personal

# Github 계정-2 HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project/**"]
    path = C:/SPB_Data/.gitconfig-company

# useHttpPath False 가 2개의 User를 제공못함
[credential]
useHttpPath = false
helper = manager-core

```

  • .gitconfig-company
```
[user]
    name = xxxx
    email = xxxxx
```

  • .gitconfig-personal
```
[user]
    name = xxxx
    email = xxxxx
```

  • Git의  설정 재 확인 
.gitconfig 위치 와 .gitconfig-company 와 .gitconfig-personal 각 확인 
git config --list --show-origin --show-scope


처음에 상위처럼 하면, 될 줄 알았으며, 될 거라고 생각을 했다. 
하지만, 보안 이슈로 상위처럼 2개의 계정으로만, 쉽게 자격 증명이 되어지지는 않는다.
1개의 계정일 경우는 크게 문제가 없지만, 2개부터는 httppath false 로는 안되어지는 것을 알았다.

즉 상위처럼, 간단히 2개 설정으로 관리 할 수 없다. 

  • HTTPS 통해 SSH 연결 
이 방법도 생각을 해보았으나, Username 분리가 되지 않아 이 부분 포기~


2.2 Git 기본 설정 값 보완 

HTTPS 기반의 PAT로 사용을 2개 이상 사용하고 싶다면, credential.useHttpPath true 옵션설정하면,
HTTPS PAT로 2개의 계정 이용은 가능하지만, 자격 증명 관리하기가 너무 힘들어 이 방법은 그냥 포기했다. 

  • Git의  설정 재 확인 

# "Repo 경로까지 쓰는 저장" true 만

> git config --global credential.useHttpPath true



매번 Repository가 자격 증명에 등록되는 구조로 자격 증명을 보면, 모든 Repository 등록되어, 관리가 힘들다

안 쓰기로 결정함 



3. Window 의 계정 2개 (PAT 1개 + SSH 1개 혼합 구성)

  • 자격 증명 관리자 2개 추가 

  1.   제어판\사용자 계정\자격 증명 관리자
  2.   우측 Window 자격증명 
    1. 기존 2개에서 1개 삭제 







  • 나의 결론 
현재 이 방법으로 사용하고 있으며,  분리해서 잘 동작을 전체 확인을 하였다. 
SSO까지는 별도로 언급을 안 하겠으며,  잘 동작하여 이걸로 사용하기로 최종 결정하였다.
더불어, 구지 2개가 아니라, SSH이므로 여러 개로도 설정 가능하다 


3.1 Git 의 설정(.gitconfig)  재구성  


우선 상위에서 찾은 global .gitconfig 파일 위치를 찾아서,  
기존 파일(.gitconfig) 1개의 단일 구성이 아니라, 2단계 재구성하자  

  • Git 의 기본 설정 값 파일 구성 
  1. .gitconfig  : 전체 설정으로 동일하게 적용 
    1. .gitconfig-personal : 특정 Direcoty 의   나의 프로젝트에만 부분 적용 
    2. .gitconfig-company: 특정 Directory 의  회사 프로젝트에만 부분 적용 

  • .gitconfig 설정 구성 
```
# 공통
[core]
    autocrlf = true

# Github 계정-1  SSH
[includeIf "gitdir/i:D:/Works/Project_personal/**"]
    path = C:/SPB_Data/.gitconfig-personal

# Github 계정-2  HTTPS+PAT
[includeIf "gitdir/i:D:/Works/Project/**"]
    path = C:/SPB_Data/.gitconfig-company

```

  • .gitconfig-company
HTTPS 이므로 관련 부분 설정 
```
[user]
    name = xxxx
    email = xxxxx

[credential]
useHttpPath = false
helper = manager-core

```

  • .gitconfig-personal
SSH로 연결이 잘 안되어, 아래와 같이 직접 Core에 sshCommand 주어 진행 
```
[user]
    name = xxxx
    email = xxxxx

[core]
    sshCommand = C:/Windows/System32/OpenSSH/ssh.exe -F C:/Users/jhlee/.ssh/config
```



3.2 SSH의 Key 생성 과 Github 설정 

Window에서 Github 설정을 위해서 SSH 관련 설정을 진행하자. 

새 SSH 키 생성 및 ssh-agent에 추가

GitHub 계정에 새 SSH 키 추가

  • SSH key 생성 과 확인 
ECDSA or RSA 도 다 괜찮으니, 본인 원하는 것으로 생성 

>  ssh-keygen -t ed25519 -C "your_email@example.com" -f "$env:USERPROFILE\.ssh\id_ed25519"  // 엔터 2번 

> cd $env:USERPROFILE\.ssh\


  • Github에 Public Key 등록 
id_ed25519.pub


상위 Github Manual 더 자세히 나오므로 그곳을 참조 하시길~ 


3.3 SSH Config 설정 


상위에서 만든 Key 기반으로 Github 설정 .ssh/conifg  추가하여 설정하자. 

  • SSH 동작 확인 
> ssh -V                                                              
OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2

  • .ssh/config 
파일 수정 후, 권한을 쓰기 권한을 없애자
```
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
```

  • SSH 기본 테스트 
상위 .ssh/config 권한 쓰기 제거 확인 후

> ssh -T -v git@github.com      // 상위 .ssh/config -> hostname 
....
Hi JeonghunLee! You've successfully authenticated, but GitHub does not provide shell access.

SSH 연결 테스트


3.4 Git의 설정 확인 및 테스트 

상위에서 우선 .gitconfig 위치를 찾아 아래와 같이 1개의 구성이 아니라 단계 별로 구성해보자 
본인의 Respository로 가서, 이제 각 Git 의 동작들 을 확인을 해보자 

  • Git의  설정 재 확인 
  1. .gitconfig 
    1. .gitconfig-company
    2. .gitconfig-personal 
상위 부분 다 적용되었는지 확인 
git config --list --show-origin --show-scope


  • Git의  기존 SSH 설정 삭제 (나는 사용)
상위 .gitconfig-personal 의 설정 이며, 상위 설정대로 함 
>  git config --unset core.sshCommand


  • Git 의 Remote 정보 확인 및 설정 (HTTPS -> SSH변경) 
> git remote -v
> git remote set-url origin ssh://github.com:<user>/<repo>  // 상위 .ssh/config hostname  
> git remote set-url origin github.com:<user>/<repo>  // 상위 .ssh/config hostname  


  • Git Remote 접근 가능 확인 
> git ls-remote origin


  • Git 의 TEST
> git fetch 
> git pull origin main

11/22/2023

Github Action 확장사용

1. Github Action 확장사용법 

  • Github의 변경사항 정리 
Github에 최근 변경사항 및 관련부분들 정리 

  • Github Action 기본사용법 
Github Action 기본사용법 정리 (반드시 확인) 

  • Github Action 설명 Site
설명이 잘 되어있어, 아래 부분들을 Link 연결하며, 지금까지 나만 사용 못했나 보다. 


Runner(Virtual Machine)기반으로 Docker를 이용하여 사용할 수 있으며, 본인만의 Github Action도 구현가능하다. 
시간이 좀 더 되면 다시, CirCleCI의 Relese 기능과 관련부분도 같이 좀 더 봐야 할 것 같다.


1.1 Docker 이용하여 확장사용가능 

Docker를 기본적으로 이용할 줄 알면 아래의 사용법도 대충 알 것이라고 생가되어진다.
좀 세련되게 구성하고자 한다면 본인이 직접 Containter (Dockerfile)을 만들어서 등록 후 사용해도 좋다. 

  • Github Action 내부에서 Docker 와 Docker Hub 사용법 
Docker Hub를 통하여 사용하면 되겠으며, 본인 마음대로 만들어서 사용해보도록 하자.

  • Docker 기본 사용법 
Docker의 기본명령어와 사용법을 알아두도록 하자 

  • Docker Package 하여 Publish 방법 
Docker Hub에 Publish 하는 방법 



1.2 보안기능지원 


현재 Cloud 기반의 Devops CI/CD는 쿠버네티스(Kubernetes)기반으로 병렬(Parrell)로도 지원하도록 가는 추세이며, 
더불어 보안기능제공하는 DevOps에서 DevSecOps  변경되어 가는 것 같다. 

  • Github Action도 제공 
보안기능도 제공을 해주어서, 요즘 DevOps 에서 DevSecOps로 가는 것 같다.
글을 읽어보면, TOKEN방식으로 진행하는 것 같으며, 흐음, 아직 보안은 좀 더 강화되어야 할 것 같다.


1.3 각 시각화 및 문제해결 

  • Worklofw Monitor
Cloud로 진행하다 보니, 어디서 막히는지 그런 것을 Debuging 하려고 만들 것 같으며, 시각화도 너무 멋지다. 

  • Github Action Badge
Github의 REAME.md에 세련되게 아래의 Github 공식 Badge 정도는 넣어두도록하자.

Private repository는 Github에서 공식으로 제공되는 Badge 이외는 동작하지 않으므로 주의
e.g. 
![GitHub release](https://img.shields.io/github/release/JeonghunLee/lora_gateway.svg?style=flat-square)              
![GitHub Action](https://github.com/JeonghunLee/lora_gateway/actions/workflows/ccpp.yml/badge.svg)    


2. Github Runner 사용 

일단 Cloud에서 돌아가는 Virtual Machine이라고 생각하며 되겠으며, 이 기반에 각 OS를 설정하여 돌아 간다고 생각하면 되겠다.
각 Runner는 현재 Parallel로는 지원되지 않는 것 같으며, 다만 Github Manaul의 그림보면, Parallel로 되는 것 처럼 나온다.
대신, Runner 한개로 Docker 기반으로 Concurency하게 동작은 가능할 것 같다. 

이렇게 까지 사용할 분들이 있을지 모르지만, Build 속도 때문에, 상위부분은 민감한 부분일 수 있다. 
특히 만약 Yocto로 한다면, 좀 골치가 아플 것 같다. 나중에 해봐야 알겠지만 


2.1 Github Runner 사용 

나의 경우에는 Github Hosting Runner를 사용했지만 아래와 같이 별도로 등록하여 사용해도 괜찮은 것 같다.
나는 이것만으로도 만족하며, 각 요금제에 따라 동작하는 Runner(Virtual Machine)이 다르므로 확인해야 한다.



2.2 Self-hosted Runner 등록 후 사용 

나는 아직 테스트를 못했지만, 자기가 가지고 있는 Machin(Self-Hosted Runner) 역시 등록하여, 다양하게 기능을 제공해주고 있는 것 같다. 
나중에 별도로 DevOps 전용 서버가 있다면 등록하여 테스트 해보도록하자.

  • Self host Runner
나의 경우는 현재 Github에서 제공해주는 Runner(Virtual Machine)이용하지만, 본인의 Hosted Runner를 등록가능한 것 같다.

  • 반드시 확인 (제한사항들) 



3. Github Action 기본분석 및 사용방법  

Github에서 제공하는 Github Action만 사용가능한게 아니며, 본인이 원하면 원하대로 구성도 가능하다.
이 부분은 아래에서 Github 에서 제공하는 Github ActionCustom Github Action을 각 분석을 해보겠다. 

  • Github 에서 제공하는 Action 기능확인 
현재 Github에서 제공해주고 있는 Action 기능들을 확인.


  • Action Checkout
가장기본으로 사용하며, Git checkout 소스를 download하여 한 후 build를 진행 
사용방법은 release에 각 release version 존재하며 README.md에서 각 사용법을 알아두도록하자.


  • Action upload artifact
C/I를 build를 진행하여 나온 결과물을 Upload하는 것으로 사용방법은 RADME.md에서 각 사용법참조.


  • Action Github Release
최종 Github Release 로, Source 를 압축하여 Release하고, 변경관련정보를 같이 넣어 Github Release에서 확인가능.
더불어 Tag 와 release 이름도 넣어 진행가능하며 변경사항도 정리도 가능 


  • Action Github Release->Asset 
Github Release의 Asset에 별도로 File을 추가한다. (나의 경우 Binary File 추가)


  • 항상 Github Action 사용전에 
기본적으로 사용법을 알고 싶다면, 각 Github Action의 Site의 README.md를 확인하도록 하자.


3.1 Github Action 세부분석   

Github에서 제공하는 Github Action이며, 이를 좀 자세히 분석해보도록 하자. 
일단 위치는 https://github.com/actions 이곳에 있으며, 이 중 checkout을 비교 분석해보자.

  • action/checkout 분석 
action.yml 시작 점으로 각 Java Script을 과 이에 배포에 필요한 Package.json 확인해야 하는 것 같다.
Java Script을 완벽히 잘모르기 때문에 간단히 분석하며, 아래의 Custom Github Action 과 일단 다른 구조이다. 

action.yml 확인 
아래에서 실행되는 파일을 찾아서 보면, run의 dist/index.js 이며 , node.js 이고 HTTP Post방식같다.

dist/index.js 확인 
상위 run에서 실행되어지는 Java Script 

Node.js Package 작업시 같이 필요할 것 같아 Link만 연결  

일단 다 봐도 세련되게 Node.js로 구성한 것 같다. 


3.2 Github Action 사용법

이전 기본사용법에서도 봤듯이 workflow 구성한 후  Job 의 밑에 step을 두고, 각 사용하면된다.  

action/checkout 사용법


concurrency 로도 동작가능



3.3 Custom Github Action 구성

상위 Github에서 제공하는 Github Action만 사용가능한게 아니며, 본인의 Custom Github Action 구성도 가능하다.

  • Github Custom Action 지원 
기본으로 제공하는 Github Action 이외에도 본인 Container를 구성 후 만들어도 좋다.
DockerFile을 설정 후 EntryPoint 기반으로 구현하는 것으로 보인다. 


  • Github Custom Action 만드는 방법 
나도 아직 만들어 보지 못했지만, Github manual을 보면 쉽게 만들 것이라고 생각되어진다.
아래의 Github manual을 자세히 보고, 다른 예제를 보면 될것 같다.

STEP.1 Docker Container 생성 
Docker Container를 구성후 각 Entrypoint 설정과 관련 Script 이용
Python 이든 본인이 익숙한 언어로 구성하면 될 것 같다. 


STEP.2 hello-world-docker-action/action.yml 생성 
metafile이라고 하는데, yml로 쉽게 생성가능 


STEP.3 Docker의 Entrypoint 실행파일 
실제적인 Action Code라고 하며, 가장 중요 


STEP.4 README.md 파일에 사용법 
다른 것 처럼 README.md에 사용법을 적어놓도록하자. 


STEP.5 전체구성 확인 
Git으로 최종으로 잘 동작되면, Tag를 넣어, 올리고 전체구성을 다시 확인 


  • 만들어진 Custom Github Action 사용법 
이제 사용이 가능하며, 실제 사용방법은 espressif로 보면 될 것 같다.

    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - name: Hello world action step
        id: hello
        uses: actions/hello-world-docker-action@v2

상위예제는 아래에 만들었을 경우인 것 같음 

개인 or 조직 
아래와 같이 개인 이나, 조직 기반으로 만들면, 상위에 한번 개인 or 조직이름만 추가해주면 되는 것 같음 


3.4 Espressif사 의 Custome Github Action 분석 

Espressif에서는 본인들의 Github Action을 확장하여 사용하고 있으며, 이를 간단히 분석가능하다. 
매번 느끼지만, Espressif에서 많은 것을 보고 배우며, 잘 만들었다. 
JIRA와 Github Project와도 Sync를 할 수 있도록 Github Action을 만들었으며, 다양하게 만들어서 예제로 좋은 것 같다.

  • Espressif 의 확장 Custom Github Action 
상위의 Custom Github Action Manual대로 만들었으며, 쉽게 이해가 가며 다양한 예제가 존재

  • Github 의 Project 의 Issue 들을 JIRA와 Sync 작업 및 기타 
예제가 너무 좋은 것 같으며, JIRA와 Github Project를 같이 사용하면 괜찮을 것 같다.
나의 경우는 현재 Github Project도 괜찮다. 
release zip으로 예제 

소스를 보면 쉽게 이해가 가며, 역시 잘 만들어 놓은 것 같다.

11/21/2023

Github Action 기본사용법

1. Github 의 Cloud DevOps CI/CD 

이전에 간단히 Github의 Action을 간단히 소개했는데, 관련부분에 대해 좀 자세히 기술하도록 하겠다. 

Github의 변경사항 정리 
이전 Github의 최근 변경사항 정리 


1.1 Github Action 제한과요금제 

일단 Free 요금제도, 현재 거의 마음대로 사용가능한 것 같으며, 다만 시간과 각 부분이 제한이 있을 뿐이다.
Build 와 Deploy를 매번 할 필요도 없거니와, Free 요금제로도 현재는 IoT는 거의 쓸만한 것 같다.

다만 아래의 제한과 요금제를 반드시 확인하며, Github의 정책이 변경될지 모르니, 수시로 확인

  • Github Acton 의 제한 과 요금제  
현재 달마다 갯수로 제한을 하며, 각 요금제에 따라 반드시 확인 



1.2  Github Action 사용량 확인 

Github Action을 사용하면 각 사용부분을 확인하도록 하자 

  • Github 본인계정으로 Action 량 확인   
Github 본인 계정으로 Login 후, Setting-> Billing and Plans 

> Github Action 사용량확인 
Action , Package 뿐만 아니라, 각 Codespace 비롯하여 각 부분 사용량이 나옴 

> Github Action 제한방법
아래 Payment를 설정안하면, Action 부분도 설정못하므로 의미가 없음  

> 유료로 Github Action 사용할 경우, Payment 설정 
나의 경우는 설정안함 



2. Github의 Action 이란 

DevOps 의 CI/CD 하면 요즘 Cloud 기반으로 하는데, Github Action 역시 Runner(Virtual Machine) 기반으로 Cloud 사용하는 것 같다. 
이전에는 주로 나의 경우, CI/CD 이용한다면, Local/Cloud/Remote 기반이면 Jenkins or 무료/유료 Cloud기반이라면, CircleCI 많이 이용 했을 것이다.
이제는 Github에서 제공하는 Github Action로도 CI/CD 간단한 것들은 이곳에서 해도 괜찮은 것 같다. 

참고로, 이번에 CircleCI 로그인하니, 기능변경이 너무 많이 되어졌으며, 변경사항을 새로 알아야 할 것으로 생각되어진다. 
CircleCI로 사용할지도 다시 생각해야함(현재 무료사용자) 

  • Github Action 설명 
Github Action 부분은 Github에서 자세한 설명이 있으므로, 이것만 읽어도 알것이라 생각됨 


  • Github Action 전체구조 
기존에 사용하던, 다른 Script와 거의 유사하지만, 아래와 같이 Event를 별도로 정의하는게 가장 큰 특징으로 보인다. 
Cloud이므로, Virtual Machine 기반으로 각 사용하여 동작하며, 더불어 Docker까지 확장하여 사용가능하다. 
  1. Event :  Github의 Webhook로 Git에 대한 Event Callback 
  2. Runner1: Flowchart기반으로 각 실행1 진행 
  3. Runner2: Flowchart기반으로 각 실행1 진행 
https://docs.github.com/ko/actions/learn-github-actions/understanding-github-actions

  • Github Action 전체예제 
전체는 간단하게 YAML으로 Script로 작성하며, 간단하게 아래의 예제를 보도록하자.
자세히 설명을 해주어서, 내가 구지 설명을 해야할 정도로 쉽다. 

2.1 각 YAML Script 내부 필수 정보(workflow) 

Github에서 너무 자세히 설명해주어서, 내가 구지 설명을 안해도 될 거 같아 필요부분만 링크를 한다. 
각 Github Repository에 .github/workflow/xxxx.yml 로 Script을 구성하면된다. 

  • Github Action의 Workflow 기본적인 사용방법
Github Action을 만들때, Workflow 기본적으로 작성법 

  • Github Action 내부에서 사용되어지는 context
반드시 봐야하며, 각 YAML Script에서 사용되어지는 구문이므로 확인 

  • Github Action 내부 환경변수 사용 
Linux shell 에서 보통 많이 사용 



2.2 Action Event 기능 

이 부분은 이전에는 Webhook를 이용하여 사용하였는데, Github Action Script에서 쉽게 정의가 가능하다.
간단히 설명하면 다음과 같으며 주로 많이 사용할 것이 아마 Git Event일 것이다. 
  1. Git 의 관련된 Event
  2. Github 의 Issue Event
  3. Github 의 label Event 
  4. 기타 등등 

  • Webhook 관련내용 
일반적으로 Webhook는 주로 많이 볼 수 있는 것이 AWS Lamda 와 Github Webhook일 것 같다. 
Event가 일어날 경우, 이를 알려주는 API로 많이 사용되어지며, 아래의 내용을 참고하자. 


  • Github Action 의 Event 기능 
Event를 사용하는 다양한 방법을 소개하며, 상위의 Webhook의 기능이라고 볼수 있다.  

  • Github Single Event 실제예제 분석 
Github 의 Push Event가 발생할 경우, branches 조건 과 아래 tags 조건을 보고 Event를 동작한다.
상위 두 개 조건(branches/tags)을 And 연산하지 않고 OR 연산하여 동작하며, 이를 Filter 라고 함 
  1. Push 후 branches 이름 확인 
  2. Push 후 tags 이름 확인  
  on:
  push:
    # Sequence of patterns matched against refs/heads
    branches:    
      - main
      - 'mona/octocat'
      - 'releases/**'
    # Sequence of patterns matched against refs/tags
    tags:        
      - v2
      - v1.*

  • Github Action 다양한 각 Event 동작 예제들 
상위 내용은 workflow-trigger 전체설명 

Single Event 와 Multiple Events (e.g. push, fork, pull_request)

Filter 역할로 include 로 포함하여 OR연산으로 동작  (상위와 동일) 

Filter 역할로 exclude 로  제외도 가능(e.g. branches-ignore, paths-ignore) 

Github Action 다양한 확장 Event 기능 
다양한 Event Trigger 제공해고 있으며, 다 사용해보지 못했지만, 대충 이해가능 



2.3 Github Action 실제사용 예 

나의 경우, 간단히 테스트를 위해서 사용했으며, 잘 동작되는 것을 확인하였다. 
Event는 Github에 Push 될때,  Tag가 있을 경우에만 동작하도록 함 
즉 Release 목적으로만 만들었으며, 사실 오직 Github Action 테스트 하기 위해서 만듦
좀 더 고급스럽게 하며 Docker 기반으로 하면 된다.  




2.4 Github Action 실행동작 및 결과 

실제로 사용해보니, 꽤 좋으며, 확장하여 Docker기반으로도 사용가능하다. 

  • Github Virtual Machine 확인 
  https://docs.github.com/ko/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners


  • Github Action 진행과정 
Github Action에서 자동으로 CI가 진행 된 후 CD가 됨



  • Github Action 의 결과확인  
자동으로 Release가 되며, 상위 Script에서 내가 또 별도의 File도 추가하였다. 
아래와 같이 Github Action으로 되었다고 하며, 
내가 원하는 대로, 각 정도도 포함되어있으며, Assets도 별도로 추가한대로 추가되어져 있다. 




11/17/2023

Github 최근 변화사항 정리

1. Github 변화사항 정리   

최근에 Github을 많이 사용하면서, 이전과 많이 변화 되어 진게 많아 각 부분을 간단히 정리한다.
사실 생기지는 다 오래되어진 기능이나, 최근에 변화를 많이 느끼는 것 같아 각 부분을 정리한다. 
또한 Github Setting 역시 이전과는 많이 변경되어졌다. 


Github Docs
설명서도 한글지원 된다. 


1.1 Github 의 보안인증강화 

  • Github 의 인증 2 단계인증 
나의 경우는 Beta일 때 부터 Google OTP를 이용하여 사용하였는데, 이제 거의 사용을 해야 하는 듯 하다. 
그리고, Android App 이름도 Google OTP에서 이제 Google Authenticator으로 변경되어졌다. 

Github 인증 


1.2 Github 의 Web-IDE 기능제공 

간단하게 Web Browser에서 VS Code 같은 IDE를 사용가능하며, 이외 다양한 IDE 확장제공을 해주고 있다. 
기능은 점점 확장되어지는 것으로 보여지며, 돌아가는 원리는 Web Browser에서 동작하는 Node-RED 생각하면 될 것 같다.  
내가 현재 좋아하는 Node.js로 구성을 했을 것 같다. 
(Node-RED 블로그 글도, 마무리해야하는데, 게을러서 못하고 있음)


  • Github의 Codespace 기능제공 
Cloud Web 기반의 Github에서 IDE Program인, VS Code를 사용할 수 있지만, 아직 초기단계라 거의 많이 지원이 안되어지며, 
자꾸 Web VS Code가 죽으며, 아직 VS Code Extension 도 너무 제한적이다. 
현재 시점이 지나서 좀 나아진 다음에 사용해도 안 늦을 것 같다. 

Github의 Codespace
Github에서 Cloud 기반으로 Virtual Machine 위에서 상위 VS Code 및 각 IDE를 제공해줌 
  
Github의 Web VS Code IDE 
VS Code 역시 node.js로 된걸로 알고 있으며, 이 것 역시 아마 Node.js 기반으로 돌아 갈것이라고 생각되어진다.

Github의 Web JetBrain IDE
사실이게 뭔지 몰라서, 사용해보고 있는데, 왠지 괜찮을 것 같다.
Jetbrain Site가면 각 IDE Tool 존재하여 나의 경우, CLion 사용했지만, 상위처럼 연결을 못함  


최근에는 Jupyter역시 많이 변경되어진 것 같으며, 이부분도 나중에 다시 확인해보도록 하겠다.

  • Github Codespace -> VS Code 
본인 Repository에 가서 우측 Code 버튼 -> Codespace에서 처음 한번 생성 한 후, VS Code 처럼 이용가능  
사용할때마다 더 VS Code가 개선되어지며, Extensions의 Program도 Upgrade되기 때문에 현재 그나마 좋음 

주의해야 할 것은 Cloud기반으로 하므로, 무료는 여러개를 동시에 사용이 안되어지는 것 같으며, 
Local VS Code와도 동기화가 된다고 한다.(이부분은 아직 못함) 
  

Github VS Code 세부내용 



1.3 Github 의 DevOps-CI/CD 기능확장 

  • Github Action 확장지원
옛날에는 Circle CI 기반으로 Webhook을 이용하여 사용했는데, 이제 Webhook 거의 필요가 없을 듯하다
각 Git Event도 Script 하나로 해결되어지니, 얼마나 편한가? (하지만 또 필요할지도?)

Github Action 기능에 많이 놀랬으며, 이거 가지고도 장난칠 게 너무 많다.
내가 원하면, 내가 원하는 Github Action도 확장하여 작성가능한 걸로 보일 뿐만 아니라, 
각 다른 언어들로 Github Action을 구성하여 만들 수 있는 걸로 보인다.
더불어 Docker 역시 맘대로 사용 가능한 것으로 보인다.   

가장 막강하게 변화되어진걸로 생각되어진다. 
누구나 쉽게 Cloud 기반으로 DevOps CI/CD를 이용하도록 하자.

Github Action CI/CD 구성 

Github Action 시작

Github Action 기반으로 Package 작업

Github Action 요금제

이부분은 누구나 쉽게 배울 수 있어, 추후 별도로 나중에 더 자세히 기술하겠다. 
현재 개인들에게는 무료로 제공을 해주는 것 같다 (현재 무료로 이용중이니)

Github Action 덕분에 최근 Circle CI를 들어가보니, 왠지 이거 때문에 Circle CI가 많은 변화가 있는 것 같다.
이제 Circle CI는 사용만 골치아플 뿐이지만, 추후 또 사용할 일 있다면 그때 다시 확인하자.


1.4 Github 의  Code 자동생성 

ChatGPT도 있는 마당에 내가 가장 기대하는 기능이지만, 무서운 기능으로 생각되어지며, 나중에 회사돈으로 사용할 일 있다면,
그때 사용하겠다. 

  • Github  Copilot 지원 
가장 기대되는 기능으로, 자동으로 Code를 작성해주는 기능으로  현재 무료가 아닌 것 같아, 함부로 사용을 못하지만,
현재 ChatGPT가 있으나, 궁금하기는 하다. 

Github Copilot 

Copilot 가격정책 



1.5 Github 의 기술블로그 및 Website 운영 

나의 경우는 별로 선호하지 않는 기능이며, 지금도 계속 변화 중이니, 나중에 다시 확인해보도록 하겠다. 
나도 대충하나 만들어놨으며, 별로 사용안한다. 

  • Github 의 Pages 기능확장 
각 기술블로그를 만들수 있으며, 사실 나는 선호하는지 않는다. 

Github Pages



1.6 Github 의 Project 관리와 문서관리  

  • Github 의 Project 기능제공  
Github 기반으로 Kanban 보드 부터 거의 JIRA 처럼 제공해주고 있으며, 지금도 계속 변화 중이다. 
현재는 지속적으로 사용안하지만, 개인적으로는 JIRA 만큼 기능제공해주고, 계속 변화 중이라,
나는 만족하며, 이전것은 Classic 이라고 하고, 또 새로운 버전 나왔다.  
각 기능은 아래 Manaul로 알아 보도록 하자. 

Github Project 
기본적으로 Project을 만들고 나서 아래 것들을 사용해야하며, 각 Issue와 label 및 Milestone도 별도로 사용가능하다. 

Github Issues
지속적으로 변경 중이며, 계속 Manual을 보도록~~~ (거의 JIRA처럼 사용가능)

Label 으로 구분 및 Milestone 기능확장 
꽤 괜찮은 것 같으며, 구분하기에 좋다 


  • Github 의 docs 와 wiki 문서관리 
Github에서 기본적으로 각 Repository에 README.md 기반으로 docs directory  만들어 각 Markdown기반으로 문서관리가 가능하다.  
이 뿐만 아니라, Wiki 와 이 Markdown의 확장부분을 보면되겠다. 
사실 사용하기가 좀 불편하기는 하지만, 무료로 사용한다는 점에서 강점이라고 생각되어진다.


Markdown 문서관리 
Github README.md 기반으로 docs 내부로 확장작성하여 문서작성가능. 

Markdown 기반으로 Diagram(Mermaid) 뿐만아니라 계속 다양하게 확장 중. 

이외 README.md에 Badge기능도 있으며, 이를 통해 각 연결된 Interface Website 결과도 쉽게 알수 있다. 

Github Wiki 
Github에서 Wiki를 지원 (요즘 거의 다 지원되니) 


Readthedoc 사용 
상위 docs Directory를 이용하여 쉽게 Readthedoc기반으로 문서관리 


1.7 Github 의 요금정책 

지속적으로 변경되어지니, 각 부분을 반드시 확인하도록 하자. 난 Free 요금제 

Billing and Plans