name: e2e Test on: push: branches: [ 'main' ] workflow_dispatch: inputs: ARGS: description: 'ARGS' required: true default: '-rltgoDzvO --delete --chmod=ugo=rwX --progress' EXCLUDE: description: 'EXCLUDE' required: true default: 'skip_dir/, /node_modules/' SSH_CMD_ARGS: description: 'SSH_CMD_ARGS' required: true default: '-o StrictHostKeyChecking=no, -o UserKnownHostsFile=/dev/null' env: TEST_HOST_DOCKER: ./test TEST_USER: test jobs: e2e: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Clean up old test files run: | docker stop ssh-host-container || true && docker rm ssh-host-container || true - name: Create ssh keys run: | echo $HOME ls -la $HOME ssh-keygen -m PEM -t rsa -b 4096 -f "$HOME/.ssh/id_rsa" -N "" eval `ssh-agent -s` ssh-add "$HOME/.ssh/id_rsa" ssh-add -l echo "SSH_PRIVATE_KEY<> $GITHUB_ENV cat $HOME/.ssh/id_rsa >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - name: Build Host Server Image working-directory: ${{ env.TEST_HOST_DOCKER }} run: | docker build \ -t ssh-host-image . \ --build-arg SSH_PUB_KEY="$(cat $HOME/.ssh/id_rsa.pub)" \ --build-arg ssh_user="${{ env.TEST_USER }}" docker run -d -p 8822:22 --name=ssh-host-container ssh-host-image docker exec ssh-host-container sh -c "hostname --ip-address" > ip.txt echo "REMOTE_HOST<> $GITHUB_ENV cat ip.txt >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV shell: bash - name: Create project file run: | mkdir test_project && cd "$_" touch index.html date +"%Y-%m-%d %H:%M:%S,%3N" >> index.html truncate -s 50MB image.svg truncate -s 5MB info.txt truncate -s 500MB big_file.txt mkdir skip_dir && cd "$_" truncate -s 5MB text_in_skip_dir.txt cd ../ cat index.html echo "test_project: \n" && ls -l echo "skip_dir: \n" && ls -l skip_dir - name: e2e Test published ssh-deploy action uses: easingthemes/ssh-deploy@main env: # ENV Vars created in previous steps: # SSH_PRIVATE_KEY: $EXAMPLE_SSH_PRIVATE_KEY # REMOTE_HOST: $EXAMPLE_REMOTE_HOST REMOTE_USER: ${{ env.TEST_USER }} ARGS: ${{ github.event.inputs.ARGS || '-rltgoDzvO --delete --chmod=ugo=rwX --progress' }} SSH_CMD_ARGS: ${{ github.event.inputs.SSH_CMD_ARGS || '-o StrictHostKeyChecking=no, -o UserKnownHostsFile=/dev/null' }} SOURCE: "test_project/" TARGET: "/var/www/html/" EXCLUDE: ${{ github.event.inputs.EXCLUDE || 'skip_dir/, /node_modules/' }} SCRIPT_BEFORE: | whoami ls -al /var/www/html/ SCRIPT_AFTER: | ls -al /var/www/html/ echo $RSYNC_STDOUT