CI/CD Github 工作流程找不到构建目录

问题描述 投票:0回答:1

我目前正在使用 Github Actions 编写我的第一个 CI/CD 工作流程。

我尝试在运行者工作区中构建应用程序,然后仅将 docker-compose 文件和包含构建工件的 .dist/ 目录复制到我的 vps 并在那里启动 docker 容器。

构建步骤成功,但我很难将构建目录(./dist/*)复制到我的 vps。 它告诉我 tar 存档是空的...

这是我的工作流程

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Checkout Repository to the runner's workspace.
      - name: Checkout repository
        uses: actions/checkout@v3
      # Set up Node.js on runner's workspace.
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 20.10.0

      # Install dependencies, build and test.
      - name: Install dependencies
        run: |
          npm ci

      - name: Build and test
        run: |
          npm run build

      - name: List Dist Contents
        run: ls -R ./dist

  deploy:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to VPS
        uses: appleboy/[email protected]
        with:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PORT: ${{ secrets.PORT }}
          KEY: ${{ secrets.SSH_KEY }}
          source: |
            ./dist/*
            ./docker-compose.prod.yml
          target: "/usr/src/app"

      - name: Execute remote deployment script
        uses: appleboy/ssh-action@master
        with:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PORT: ${{ secrets.PORT }}
          KEY: ${{ secrets.SSH_KEY }}
          script: |
            # Change directory to the app folder
            cd /usr/src/app

            # Stop and remove the container
            docker-compose down

            # Set environment variables stored in Github secrets
            echo "VITE_BASE_URL=${VITE_BASE_URL}" > .env
            echo "DATABASE_URL=${DATABASE_URL}" > .env
            echo "NODE_PORT=${NODE_PORT}" > .env
            echo "SECRET_KEY=${SECRET_KEY}" > .env
            echo "REFRESH_SECRET_KEY=${REFRESH_SECRET_KEY}" > .env

            # start container and detach
            docker-compose up -d

工作流程失败并显示此消息

drone-scp version: v1.6.14
tar all files into /tmp/bgHcjxzAcm.tar.gz
tar: empty archive
exit status 1

我在构建步骤之后立即记录了 dist 内容,它看起来完全正常,每个想法都被创建了。不知道我在这里做错了什么。

更新:

尝试使用一份工作。

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      # Checkout Repository to the runner's workspace.
      - name: Checkout repository
        uses: actions/checkout@v3
      # Set up Node.js on runner's workspace.
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 20.10.0

      # Install dependencies, build and test.
      - name: Install dependencies
        run: |
          npm ci

      - name: Build and test
        run: |
          npm run build

      - name: List Dist Contents
        run: ls -R ./dist

      - name: Deploy to VPS
        uses: appleboy/[email protected]
        with:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PORT: ${{ secrets.PORT }}
          KEY: ${{ secrets.SSH_KEY }}
          source: |
            ./dist/*
            ./docker-compose.prod.yml
          target: "/usr/src/app"

      - name: Execute remote deployment script
        uses: appleboy/[email protected]
        with:
          HOST: ${{ secrets.HOST }}
          USERNAME: ${{ secrets.USERNAME }}
          PORT: ${{ secrets.PORT }}
          KEY: ${{ secrets.SSH_KEY }}
          script: |
            # Change directory to the app folder
            cd /usr/src/app

            # Stop and remove the container
            docker-compose down

            # Remove old .env file
            rm .env

            # Set environment variables stored in Github secrets
            echo "VITE_BASE_URL=${VITE_BASE_URL}" > .env
            echo "DATABASE_URL=${DATABASE_URL}" > .env
            echo "NODE_PORT=${NODE_PORT}" > .env
            echo "SECRET_KEY=${SECRET_KEY}" > .env
            echo "REFRESH_SECRET_KEY=${REFRESH_SECRET_KEY}" > .env

            # start container and detach
            docker-compose up -d
docker github docker-compose github-actions vps
1个回答
0
投票

感谢Azeem的回答!

我必须使用逗号分隔值 (CSV) 作为源...

这里是文档,应该将它们标记为红色。对不起!

© www.soinside.com 2019 - 2024. All rights reserved.