Как мне SCP репо файлы, используя GitHub Actions? - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь реализовать действие GitHub, которое будет пересылать мои файлы репо на сервер с пу sh в главную ветку. У меня есть аналогичная установка, работающая с Bitbucket Pipelines, но теперь, когда я учусь делать это с действиями GitHub, мне не повезло.

Мой проект - простое Node.js приложение , где я хотел бы просто скопировать все файлы на сервер, а затем запустить сценарий post-scp для npm i, как только новые файлы будут скопированы на сервер. Просто хочу, чтобы все было просто, пока я учусь.

Я использую scp-файлы GitHub Action . Вот мой файл:

name: Deploy to production

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
jobs:
  deploy:
    name: SCP files to server
    runs-on: ubuntu-latest
    steps:
      - name: SCP files via ssh key
        uses: appleboy/scp-action@master
        env:
          USERNAME: ${{ secrets.USERNAME }}
          HOST: ${{ secrets.HOST }}
          KEY: ${{ secrets.SSH_DEPLOYMENT_KEY }}
        with:
          source: './*'
          target: '/home/ubuntu/flatbread/'

Это действие способно выполнить Set up job и Build appleboy/scp-action@master. Но он выдает ошибку при запуске appleboy/scp-action@master. Это ошибка, которую я получаю:

tar: empty archive
exit status 1
tar all files into /tmp/320558105/i2yG360Zje.tar
##[error]Docker run failed with exit code 1

Я не совсем уверен, что я делаю неправильно. Даже если я заменил source: './*' на папку с образцами (то есть source: app), он все равно выдаст мне ту же ошибку.


Обновление

Если Я изменяю source: './*' на source: '.', который, кажется, делает свое дело с точки зрения отсутствия ошибок GitHub:

tar all files into /tmp/719605837/1uYygkf4Vn.tar
scp file to server.
create folder /home/***/flatbread/
untar file 1uYygkf4Vn.tar
remove file 1uYygkf4Vn.tar
================================================
Successfully executed transfer data to all host.
================================================

К сожалению, после проверки файлов на сервере никаких изменений не было к этому. Есть идеи, почему это так?

1 Ответ

0 голосов
/ 15 апреля 2020

Надеюсь, это поможет!

  • Сначала вы создаете папку за пределами вашего репо
  • Затем вы копируете в нее все содержимое вашего репо
  • Тогда вы смолите его
  • Загрузить на сервер
name: CI

# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
    # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
    - uses: actions/checkout@v2

    # Runs a set of commands using the runners shell
    - name: Run a multi-line script
      run: |
        mkdir ../build
        cp -TR . ../build
        tar -cvf deploy.tar ../build/

    - name: copy file via ssh password
      uses: appleboy/scp-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        key: ${{ secrets.KEY }}
        port: ${{ secrets.PORT }}
        source: "deploy.tar"
        target: "destination/folder"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...