Github Action 사용해보기 2편
실습3 - 크롤러 만들어서 GA에서 동작시키기
-
Test.py 코드 수정
-
import requests from bs4 import BeautifulSoup import csv import json response = requests.get("http://paullab.synology.me/stock.html") response.encoding = 'utf-8' html = response.text soup = BeautifulSoup(html, 'html.parser') oneStep = soup.select('.main')[2] twoStep = oneStep.select('tbody > tr')[1:] 날짜 = [] 종가 = [] 전일비 = [] 거래량 = [] for i in twoStep: 날짜.append(i.select('td')[0].text) 종가.append(int(i.select('td')[1].text.replace(',', ''))) 전일비.append(int(i.select('td')[2].text.replace(',', ''))) 거래량.append(int(i.select('td')[6].text.replace(',', ''))) l = [] for i in range(len(날짜)): l.append({ '날짜':날짜[i], '종가':종가[i], '전일비':전일비[i], '거래량':거래량[i], }) #파일을 한 번 쓴다. with open('data.js', "w", encoding="UTF-8-sig") as f_write: json.dump(l, f_write, ensure_ascii=False, indent=4) #파일을 다시 읽는다. data = "" with open('data.js', "r", encoding="UTF-8-sig") as f: line = f.readline() while line: data += line line = f.readline() #파일에 변수명을 추가하여 다시 쓴다. final_data = f"var data = {data};" with open('data.js', "w", encoding="UTF-8-sig") as f_write: f_write.write(final_data)
실습4 - 환경변수 설정 (feat. 평문으로 공개되서는 안될 정보)
- 환경변수 선언과 사용
- 깃헙 컨텍스트 참고 :
숨겨야 할 환경변수들(Secret Key)
- 암호화된 환경변수를 사용하는 것도 가능하며 API KEY 같은 것을 관리하실 때 사용할 수 있습니다.
- settings 탭에서 secret 탭에서 관리 가능하며, 접근 코드는 공식 문서를 참고해주세요
- Environment variables
- Context and expression syntax for GitHub Actions
- https://docs.github.com/en/actions/reference/encrypted-secrets
steps:
- name: Hello world action
with: # Set the secret as an input
super_secret: ${{ secrets.SuperSecret }}
env: # Or as an environment variable
super_secret: ${{ secrets.SuperSecret }}
실습5 - [마무리 토이플젝] 잔디밭의 파수꾼 만들기(with GithubAction)
- 예전에 한창 잔디밭에 진심이였을때 AWS EC2로 잔디밭을 자동으로 깔아주는 스크립트를 만들어봤던 적이 있는데, 이번에는 GA로도 만들수 있을꺼같아 진행 해 봅니다.
- 주의사항 : 통칭 잔디밭 만들기라고 하는, 깃허브에 매일 최소 하나 이상의 커밋을 올리는 캠페인이 있는데, 이런 자동화 툴로 잔디밭만 까는건 개발자로써 실력향상에 아무런 도움이 되지 않습니다.
- 이동욱님의 인터뷰를 보면( 링크) 공감하시겠지만, 요점은 잔디밭을 까는게 의미가 있는게 아니고, 매일매일 꾸준히 학습하는 습관을 기르고 이런 꾸준히 학습하는 습관을 1년 2년 지속이 아니라 10년 20년 ~~ 평생에 걸쳐 학습하는게 포인트입니다.
- 잡설이 길었는데...., 결론은 당장 눈앞의 취업이나 이직에 도움이 될꺼같아 잔디밭만 까는 잔재주속임수로 쓰이기 보다는 ... GithubAction이라는 기술로 이런것도 만들수 있구나! 라고 봐주시면 감사하겠습니다
5-1 커밋을 위한 변경점을 저장하는 파일 생성
touch ./date.txt
5-2 변경점을 만들어주는 쉘스크립트 파일 생성
#!/bin/bash
echo "DATE: $1" >> date.txt
5-3 앞에서 만든 쉘스크립트와 파일을 이용해 커밋하는 GitHub-Action용 YAML 파일
name: planting-grass
# [크론스케쥴러]
on:
schedule:
- cron: '0 0 * * *'
# [push테스트]
#on: [push]
jobs:
task:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 1) get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: 2) Execute commands
run: sh ./task.sh ${{ steps.date.outputs.date }}
- name: 3) git config && commit
run: |
# 이전의 커밋 기록에서 사용자 이름 및 이메일을 자동으로 추출!
git config --global user.name "$(git --no-pager log --format=format:'%an' -n 1)"
git config --global user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
git add date.txt
git commit -m ${{ steps.date.outputs.date }}
- name: 4) github push
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ github.ref }}
# 동작시퀀스
# 1. 저장소 Fork
# 2. 해당 파일 A, B 절차에 따라 수정
# 3. 수정사항 커밋 후 푸쉬 & Enjoy!
부록
오리지널 강의
-
Github Action을 활용한 크롤러 웹 페이지 만들기 by 제주코딩베이스캠프
-
링크 : https://www.inflearn.com/course/github-action-%ED%81%AC%EB%A1%A4%EB%9F%AC/dashboard
Github Repo : https://github.com/d-h-k/GithubAction
이 글은 제주코딩베이스캠프의 후원을 받아 작성되었습니다!
끝
Author And Source
이 문제에 관하여(Github Action 사용해보기 2편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@d-h-k/Github-Action-사용해보기-2편저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)