Skip to content

Instantly share code, notes, and snippets.

@ludndev
Created June 20, 2024 08:41
Show Gist options
  • Save ludndev/73107a3eee131f55112024e8e4472cb8 to your computer and use it in GitHub Desktop.
Save ludndev/73107a3eee131f55112024e8e4472cb8 to your computer and use it in GitHub Desktop.
name: Laravel CI/CD
on:
pull_request:
branches:
- main
types:
- closed
jobs:
deploy:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
env:
SSH_HOST: ${{ vars.SSH_HOST }}
SSH_PORT: ${{ vars.SSH_PORT }}
SSH_USERNAME: ${{ vars.SSH_USERNAME }}
SSH_CMD_DEPLOY_ON_PRODUCTION: ${{ vars.SSH_CMD_DEPLOY_ON_PRODUCTION }}
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create .ssh Directory
run: mkdir -p ~/.ssh
- name: Add Public Key
run: echo "$SSH_PUBLIC_KEY" > ~/.ssh/id_rsa.pub
- name: Add Private Key
run: echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
- name: Set Permissions for Private Key
run: chmod 600 ~/.ssh/id_rsa
- name: Set Permissions for Public Key
run: chmod 600 ~/.ssh/id_rsa.pub
- name: Start SSH Agent and Add Key
id: ssh-setup
run: |
eval "$(ssh-agent -s)"
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $GITHUB_ENV
echo "SSH_AGENT_PID=$SSH_AGENT_PID" >> $GITHUB_ENV
ssh-add ~/.ssh/id_rsa
- name: Scan and Add SSH Host Key
run: ssh-keyscan -p${{ env.SSH_PORT }} -H ${{ env.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Clean SSH_CMD_DEPLOY_ON_PRODUCTION
run: echo "${SSH_CMD_DEPLOY_ON_PRODUCTION}" | tr -d '\r' > clean_ssh_cmd.txt
- name: Deploy on Production
run: ssh -p${{ env.SSH_PORT }} ${{ env.SSH_USERNAME }}@${{ env.SSH_HOST }} "$(cat clean_ssh_cmd.txt)"
@ludndev
Copy link
Author

ludndev commented Jun 20, 2024

Add GitHub Action

  • secrets : SSH_PRIVATE_KEY , SSH_PUBLIC_KEY

  • variables : SSH_HOST , SSH_PORT, SSH_USERNAME , SSH_CMD_DEPLOY_ON_PRODUCTION

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment