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

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