97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 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<<EOF" >> $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<<EOF" >> $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
 |