-
[Github Action] 배포 자동화 (feat. ChatGPT)Programming 2023. 1. 11. 02:24반응형
요약:
ChatGPT 엄청나다.
배포를 자주 하다보니 귀찮은 게 생겼다.
귀찮은 것: 앱을 배포할 때마다 PR을 만들고, tag만들고, branch 만들고 하는 것들
자동화를 해놓으면 좋겠다고 생각해서 여러가지 찾아보다가, ChatGPT를 써보기로 했다.
질문을 했다.
금방 코드를 짜서 보여준다. 그런데 이상한 부분이 있었다. GITHUB_TOKEN을 요청할필요가 따로 없지 않나??
그래서 질문했다.
필요없었으면 처음부터 없어도 좋았을텐데 좀 아쉬웠다. 보다보니 PR도 같이 관리되면 좋을 겉 같아 질문을 다시했다.
한글은 중간중간 잘려서 불편했다. 하지만 적당히 알아들을 수 있어서 괜찮았다.
package.json에 있는 버전도 같이 통합 관리 되면 좋을 것같아 추가로 요청을 해봤다.
수정해주세요?.. 수정한 전체 코드를 보여주면 좋을텐데.. 다 물어보고 한번에 합쳐달라고 부탁하려고 생각하게 되었다.
그리고 보니, current_version을 만들고, 또 같은 변수를 사용하는 부분이 눈에 거슬렸다.
바꿔달라고 하면 잘 바꿔준다.
아쉬운건 처음부터 바뀌어서 제안했으면 좋을텐데...
이때부터 다른 부분들도 다 의심하게 되었다.
이때 살짝 느낀게.. 미래엔 개발은 기계가 하고 리뷰를 인간이 하도록 발전할 수도 있겠다라는 생각이 들었다.
암튼 추가 요구사항을 넣어봤다.
위에 보다시피 버전을 올리는 로직도 좀 개선이 필요해보였다.
전체코드를 보여달라고 하니 보여주다가 중간에 짤리는 현상이 발생했다.
영어로 설명해달라고하니, 더 길게 표시가 되었지만 아래가 잘렸다.
이런 경우가 많아서, 특정 부분 이후부터 다시 설명해달라고 했다.
package.json을 업데이트하면서 ios, android 와 물려있는 버전들도 같이 업데이트하면 좋겠다라고 생각이 들었다.
물어보니,... 앗 역시 물어보셨군요! 하는 느낌으로 답을 해주었다.
위처럼 yarn, fastlane, ruby등을 설치하면, 원하는 동작을 할 수 있을 것 같았다. 그런데 이런 작업들은 리소스가 좀 많이 들 것 같았다.
그리고 mac도 사용해야하니 과금도 걱정이 되었다.
잘 설명을 해주어서, 그럼 뺀 것에 대해 검토요청을 했다.
GPT 답변: 누가 짰는데 너무 잘 만들었지! 근데 너 잘 확인해. 너 이상한 개발자 같아. 라는 느낌으로 받아들여졌다.
잘 확인하란다..
아까 이상한 부분에 대해 무슨 뜻인지 더 물어봤다..
테스트를 잘 하란다.. 하려고 commit을 하려고 했는데 message 좀 부탁하려고 헀는데 너무 많이 사용했다고 한다.. 아쉽게 여기서 마무리..
암튼, 결론 코드는 아래와 같다.
테스트는 아직 안해봤다.
느낀점:
AI가 결국 세상에 크게 녹아들것이라는 것이라 생각이 들었다.
AI를 잘 쓰는 개발자와 잘 못쓰는 개발자의 퍼포먼스 차이는 점점 커질 것이므로, 잘 활용하는 방법을 더 공부해야 할 것 같다
Release.yml
name: Release on: pull_request: types: [labeled, unlabeled] jobs: create-release: runs-on: ubuntu-latest if: github.event.pull_request.labels.map(label => label.name).includes('version') steps: - name: Extract current version run: | CURRENT_VERSION=$(grep -oE '"version".*' package.json | cut -f4 -d'"') echo "CURRENT_VERSION=${CURRENT_VERSION}" echo ::set-env name=CURRENT_VERSION::${CURRENT_VERSION} - name: Create next version branch run: | CURRENT_NUMBER=$(echo ${CURRENT_VERSION} | awk -F. '{print $NF}') MAJOR=$(echo ${CURRENT_VERSION} | awk -F. '{print $1}') MINOR=$(echo ${CURRENT_VERSION} | awk -F. '{print $2}') if [ $CURRENT_NUMBER -eq 9 ] then MINOR=$(($MINOR + 1)) CURRENT_NUMBER=0 else CURRENT_NUMBER=$(($CURRENT_NUMBER + 1)) fi NEXT_VERSION="$MAJOR.$MINOR.$CURRENT_NUMBER" echo "NEXT_VERSION=${NEXT_VERSION}" git branch release/${NEXT_VERSION} - name: Update package.json version run: | jq '.version = "${NEXT_VERSION}"' package.json > package.tmp.json mv package.tmp.json package.json git add package.json git commit -m "Release version ${NEXT_VERSION}" git push origin release/${NEXT_VERSION} - name: Checkout to master run: git checkout master - name: Create tag run: | git tag v${NEXT_VERSION} git push origin v${NEXT_VERSION} - name: Create pull request uses: peter-evans/create-pull-request@v3 with: title: '[Release] ${NEXT_VERSION}' head: release/${NEXT_VERSION} base: master labels: version
반응형'Programming' 카테고리의 다른 글
[React Native] 안드로이드 키보드 이슈 (0) 2023.05.19 Linux에서 Anaconda conda activate이 실행 되지 않을 때 (0) 2022.08.16 Linux에서 Anaconda conda activate이 실행 되지 않을 때 (0) 2022.08.16 AWS EC2 cer 을 pem으로 변경하는 방법 (0) 2022.08.16