빌드에 실패했따.
단순히 빌드 실패 뿐만 deprecated 되는 버전 사용에 따른 경고문도 떴다.
github action 을 처음 사용해서 예시본을 참고하여 복붙하였더니 생겼던 에러고, 이를 공식문서와
https://www.daleseo.com/github-actions-checkout/
GitHub Actions의 체크아웃(Checkout) 액션으로 코드 내려받기
Engineering Blog by Dale Seo
www.daleseo.com
님의 게시글을 통해서 해결하려고 했다.
우선 버전 문제 때문에 빌드오류가 났다고 초기에 판단하여서
https://github.com/marketplace?type=actions&query=checkout+
GitHub Marketplace: actions to improve your workflow
Find the actions that help your team build better, together.
github.com
각각의 키워드에 대해서 검색을 하여서 분석하였다.
수정된 코드는 아래와 같다.
이 코드는 Dockerfile을 통해서 빌드를 한 이후 빌드된 프론트엔드 코드는 ec2에 배포하는 코드이다.
name: Build Image
on:
push:
branches:
- 'main'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build Container Image
uses: docker/build-push-action@v5
with:
context: ./houssg
file: ./houssg/Dockerfile.prod
platforms: linux/amd64
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/houssg-front:latest
- name: SSH Remote Commands
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USERNAME }}
password: ${{ secrets.SSH_PASSWORD }}
port: 22
timeout: 40s
script: |
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/houssg-front:latest
docker rm -f houssg-front
docker run -d -p 80:8080 \
-e VITE_KAKAO_JS_KEY=${{ env.VITE_KAKAO_JS_KEY }} \
-e VITE_KAKAO_KEY=${{ env.VITE_KAKAO_KEY }} \
-e VITE_SERVER_URL=${{ env.VITE_SERVER_URL }} \
${{ secrets.DOCKERHUB_USERNAME }}/houssg-front:latest --name houssg-front ${{ secrets.DOCKERHUB_USERNAME }}/houssg-front :latest
이때 모든 uses에 대한 버전을 수정해주었고, 버전을 검색하면서 각각의 키워드가 어떤 역할을 하는지 확인하였다.
1. checkout : This action checks-out your repository under $GITHUB_WORKSPACE, so your workflow can access it
gitaction이 내 어떤 레파지토리에서 실행될 지를 결정하는 키워드인데, 기본값이 현재 레파지토리이다.따라서 별다른 설정없이 넘어갔다.
https://github.com/marketplace/actions/checkout
Checkout - GitHub Marketplace
Checkout a Git repository at a particular version
github.com
2. docker/setup-buildx- : This action will create and boot a builder that can be used in the following steps of your workflow if you're using Buildx or the build-push action
https://github.com/marketplace/actions/docker-setup-buildx
Docker Setup Buildx - GitHub Marketplace
Set up Docker Buildx
github.com
GitHub - docker/build-push-action: GitHub Action to build and push Docker images with Buildx
GitHub Action to build and push Docker images with Buildx - GitHub - docker/build-push-action: GitHub Action to build and push Docker images with Buildx
github.com
도커 컨테이너를 실행하기 위한 빌더를 만들고 실행해줍니다. 이를 통해서 도커 컨테이너가 도커 이미지를 만들 수 있게 됩니다.
3. docker/login : 도커에 로그인하게 해줍니다. with과 secret 값을 통해서 아이디와 토큰을 사용할 수 있습니다.
https://github.com/marketplace/actions/docker-login
4.docker/build-push : 도커파일을 통해 빌드하고 도커 허브에 이미지를 업로드 합니다.
5. appleboy/ssh-action : 리눅스 도커 컨테이너에서만 지원됩니다 깃허브 액션으로 원격 ssh 작업을 수행할 때 사용됩니다. 이를 통해서 ec2에서 제가 만든 도커 컨테이너를 도커허브에서 불러와서 실행할 것 입니다.
https://github.com/marketplace/actions/ssh-remote-commands
SSH Remote Commands - GitHub Marketplace
Executing remote ssh commands
github.com
위 링크들을 통해서 각각의 액션들의 버전을 최신화 하였지만 아직 build에러를 해결하지 못했습니다.
Docker gets error "failed to compute cache key: not found" - runs fine in Visual Studio
I've generated a Dockerfile with Visual Studio. It runs in Visual Studio just fine and now I'm trying to build it from Windows itself (docker build ., and I tried many combinations). Yet I get the
stackoverflow.com
똑같은 에러를 검색했더니 위의 링크가 떴는데, 저 방법은 내 에러와 연관은 있지 않았습니다.
제 문제는 초기에 context를 . 으로 하였는데, 제 실제 프로젝트의 위치가 ./houssg 였기 때문에 package.json을 찾지 못해 생긴 에러입니다.
context 의 의미 : Build's context is the set of files located in the specified
'GITHUB' 카테고리의 다른 글
gitaction으로 ec2에서 안 쓰는 도커 이미지 관리하기 (0) | 2023.09.30 |
---|---|
GITHUB Issue Templates로 issue양식 만들기 + 자동적용 (0) | 2023.08.19 |
Git 사용 이유와 시나리오 (0) | 2023.05.24 |