취약점 분석 트랙 박상준
Github Actions란?
github에서 제공하는 CI/CD플랫폼이다. 레포지토리에서 워크플로우를 정의하고 이벤트에 대해 어떤 동작을 할지 설정하면 빌드, 테스트, 배포 같은 작업들을 자동화할 수 있다.
저장소 개설 및 gitaction만들기
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들을 모두 입력해줌.
•
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에서 개발할 때 자동화 할 수 있는 방법이 많은 것 같다. 실제로 큰 서비스를 개발할 때 이런 부분들을 잘 이용하자.