Created
June 20, 2024 08:41
-
-
Save ludndev/73107a3eee131f55112024e8e4472cb8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add GitHub Action
secrets : SSH_PRIVATE_KEY , SSH_PUBLIC_KEY
variables : SSH_HOST , SSH_PORT, SSH_USERNAME , SSH_CMD_DEPLOY_ON_PRODUCTION