728x90

빌드에 실패했따. 
단순히 빌드 실패 뿐만  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에러를 해결하지 못했습니다.

https://stackoverflow.com/questions/66146088/docker-gets-error-failed-to-compute-cache-key-not-found-runs-fine-in-visual

 

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

+ Recent posts