diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000..e592e12 --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,54 @@ +name: Nodam-Nodam Frontend CI/CD + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js v18 + uses: actions/setup-node@v3 + with: + node-version: "18" + + - name: docker image build + run: docker buildx build --platform=linux/arm64 -t ${{ secrets.DOCKERHUB_USERNAME }}/nodam-nodam_frontend . + + - name: docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + - name: docker hub push + run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/nodam-nodam_frontend + + deploy: + needs: build + runs-on: self-hosted + + steps: + - name: docker pull + run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/nodam-nodam_frontend + + - name: docker stop container + run: sudo docker rm -f nodam-nodam_frontend + + - name: docker run new container + run: sudo docker run -it -d -p 8082:8080 --name nodam-nodam_frontend ${{ secrets.DOCKERHUB_USERNAME }}/nodam-nodam_frontend + + - name: docker rmi none image + run: | + dangling_images=$(docker images -f "dangling=true" -q) + + if [ -n "$dangling_images" ]; then + sudo docker rmi $dangling_images + else + echo "No dangling images to remove." + fi diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7f45db3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM node:18 + +WORKDIR /app + +RUN npm install -g yarn + +COPY package.json yarn.lock ./ + +RUN yarn install + +COPY . . + +ENTRYPOINT [ "yarn", "start" ] \ No newline at end of file