Search
Duplicate

Github Actions

취약점 분석 트랙 박상준

Github Actions란?

github에서 제공하는 CI/CD플랫폼이다. 레포지토리에서 워크플로우를 정의하고 이벤트에 대해 어떤 동작을 할지 설정하면 빌드, 테스트, 배포 같은 작업들을 자동화할 수 있다.

저장소 개설 및 gitaction만들기

geek-action
5angjun
1.
새 레퍼지토리를 판다.
2.
Actions탭을 누른다.
3.
새로운 Workflow를 만든다.
4.simple workflow를 만든다.

Github Actions 코드 작성

원하는 기능의 Github Actions코드를 작성해주면 아래와 같이 실행 결과가 남는다.

각 멤버 설명

name : workflow 이름
on : main branche에 push나 pull이 일어날 때마다 이 이벤트를 실행함.
jobs : 이벤트가 발생할 때마다 build 를 실행하는 jobs
runs-on : 어디서 실행할지
strategy : 각각 다른 환경에서 여러번 실행해야할 때 사용함.
steps : checkout 실행함
Set up : Set up 패키지(?) 사용함. 특정 포맷을 맞춰주면 됌.
Display Python Version : python -c "import sys; print(sys.version)" 를 run함
name: Python on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.8", "3.9", "3.10"] steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Display Python version run: | python -c "import sys; print(sys.version)"
JavaScript
복사

실행결과

upload-artifact를 사용해 아티팩트로 저장

Pipe를 통해서 python의 결과를 파일로 저장
actions/upload-artifact@v2 를 통해 upload를 사용
저장할 file들의 path들을 모두 입력해줌.
my-artifacts (1).zip
0.6KB
github action이 모두 완료되면 my-artifacts.zip이 생성됌.
버전별로 출력결과를 txt파일로 저장함.
name: Python on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.8", "3.9", "3.10"] steps: - name: Checkout repository uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Display Python version run: | python -c "import sys; print(sys.version)" > python-version-${{ matrix.python-version }}.txt - name: Upload Artifacts uses: actions/upload-artifact@v2 with: name: my-artifacts path: | python-version-3.8.txt python-version-3.9.txt python-version-3.10.txt
Assembly
복사

느낀점 및 시행착오

파이썬 버전별로 한번에 하나의 yaml로 해보려고 하니까 여러가지 에러가 났다.
path 부분에서 *.txt를 모두 저장하려고 하니까 잘 안되서 포함할 파일 이름들을 직접 입력해줘야겠다.
path 부분에서 ${{ matrix.python-version }} 로 파일들의 이름을 하드코딩하지 않고 자동으로 식별해서 하게 하려고 했는데 잘안됐다..
github에서 개발할 때 자동화 할 수 있는 방법이 많은 것 같다. 실제로 큰 서비스를 개발할 때 이런 부분들을 잘 이용하자.

참고자료 및 참고 문헌