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)

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 Repo : https://github.com/d-h-k/GithubAction

이 글은 제주코딩베이스캠프의 후원을 받아 작성되었습니다!

좋은 웹페이지 즐겨찾기