Files

93 lines
4.5 KiB
YAML

name: Manual Deploy
on:
workflow_dispatch:
inputs:
branch:
description: Branch to deploy
required: true
default: main
target_dir:
description: Target directory on server
required: true
default: /home/user/services/egbim-homepage
db_dump_path:
description: SQL dump path inside repository
required: true
default: egbim_DB.sql
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup SSH key
shell: bash
run: |
install -m 700 -d ~/.ssh
printf '%s\n' '${{ secrets.DEPLOY_SSH_KEY }}' > ~/.ssh/id_ed25519
sed -i 's/\r$//' ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keygen -y -f ~/.ssh/id_ed25519 >/dev/null
ssh-keyscan -p '${{ secrets.DEPLOY_PORT }}' '${{ secrets.DEPLOY_HOST }}' >> ~/.ssh/known_hosts
- name: Render deployment env
shell: bash
run: |
BARON_SSO_CLIENT_ID_VALUE='${{ secrets.BARON_SSO_CLIENT_ID }}'
if [ -z "$BARON_SSO_CLIENT_ID_VALUE" ]; then BARON_SSO_CLIENT_ID_VALUE='${{ vars.BARON_SSO_CLIENT_ID }}'; fi
BARON_SSO_AUTHORIZE_ENDPOINT_VALUE='${{ secrets.BARON_SSO_AUTHORIZE_ENDPOINT }}'
if [ -z "$BARON_SSO_AUTHORIZE_ENDPOINT_VALUE" ]; then BARON_SSO_AUTHORIZE_ENDPOINT_VALUE='${{ vars.BARON_SSO_AUTHORIZE_ENDPOINT }}'; fi
BARON_SSO_TOKEN_ENDPOINT_VALUE='${{ secrets.BARON_SSO_TOKEN_ENDPOINT }}'
if [ -z "$BARON_SSO_TOKEN_ENDPOINT_VALUE" ]; then BARON_SSO_TOKEN_ENDPOINT_VALUE='${{ vars.BARON_SSO_TOKEN_ENDPOINT }}'; fi
BARON_SSO_USERINFO_ENDPOINT_VALUE='${{ secrets.BARON_SSO_USERINFO_ENDPOINT }}'
if [ -z "$BARON_SSO_USERINFO_ENDPOINT_VALUE" ]; then BARON_SSO_USERINFO_ENDPOINT_VALUE='${{ vars.BARON_SSO_USERINFO_ENDPOINT }}'; fi
BARON_SSO_ISSUER_VALUE='${{ secrets.BARON_SSO_ISSUER }}'
if [ -z "$BARON_SSO_ISSUER_VALUE" ]; then BARON_SSO_ISSUER_VALUE='${{ vars.BARON_SSO_ISSUER }}'; fi
BARON_SSO_REDIRECT_URI_VALUE='${{ secrets.BARON_SSO_REDIRECT_URI }}'
if [ -z "$BARON_SSO_REDIRECT_URI_VALUE" ]; then BARON_SSO_REDIRECT_URI_VALUE='${{ vars.BARON_SSO_REDIRECT_URI }}'; fi
BARON_SSO_SCOPE_VALUE='${{ secrets.BARON_SSO_SCOPE }}'
if [ -z "$BARON_SSO_SCOPE_VALUE" ]; then BARON_SSO_SCOPE_VALUE='${{ vars.BARON_SSO_SCOPE }}'; fi
BARON_SSO_CLIENT_AUTH_METHOD_VALUE='${{ secrets.BARON_SSO_CLIENT_AUTH_METHOD }}'
if [ -z "$BARON_SSO_CLIENT_AUTH_METHOD_VALUE" ]; then BARON_SSO_CLIENT_AUTH_METHOD_VALUE='${{ vars.BARON_SSO_CLIENT_AUTH_METHOD }}'; fi
cat > /tmp/egbim.deploy.env <<EOF
APP_ENV=${{ secrets.APP_ENV }}
APP_PORT=${{ secrets.APP_PORT }}
DB_PORT=${{ secrets.DB_PORT }}
G5_MYSQL_DB=${{ secrets.G5_MYSQL_DB }}
G5_MYSQL_USER=${{ secrets.G5_MYSQL_USER }}
G5_MYSQL_PASSWORD=${{ secrets.G5_MYSQL_PASSWORD }}
MARIADB_ROOT_PASSWORD=${{ secrets.MARIADB_ROOT_PASSWORD }}
COMPOSE_PROJECT_NAME=${{ secrets.COMPOSE_PROJECT_NAME }}
BARON_SSO_CLIENT_ID=${BARON_SSO_CLIENT_ID_VALUE}
BARON_SSO_CLIENT_SECRET=${{ secrets.BARON_SSO_CLIENT_SECRET }}
BARON_SSO_AUTHORIZE_ENDPOINT=${BARON_SSO_AUTHORIZE_ENDPOINT_VALUE}
BARON_SSO_TOKEN_ENDPOINT=${BARON_SSO_TOKEN_ENDPOINT_VALUE}
BARON_SSO_USERINFO_ENDPOINT=${BARON_SSO_USERINFO_ENDPOINT_VALUE}
BARON_SSO_ISSUER=${BARON_SSO_ISSUER_VALUE}
BARON_SSO_REDIRECT_URI=${BARON_SSO_REDIRECT_URI_VALUE}
BARON_SSO_SCOPE=${BARON_SSO_SCOPE_VALUE}
BARON_SSO_CLIENT_AUTH_METHOD=${BARON_SSO_CLIENT_AUTH_METHOD_VALUE}
EOF
- name: Upload deployment script
shell: bash
run: |
scp -P '${{ secrets.DEPLOY_PORT }}' -i ~/.ssh/id_ed25519 scripts/deploy_remote.sh '${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/tmp/egbim_deploy_remote.sh'
scp -P '${{ secrets.DEPLOY_PORT }}' -i ~/.ssh/id_ed25519 /tmp/egbim.deploy.env '${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/tmp/egbim.deploy.env'
- name: Run deploy
shell: bash
run: |
ssh -p '${{ secrets.DEPLOY_PORT }}' -i ~/.ssh/id_ed25519 '${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}' \
"chmod +x /tmp/egbim_deploy_remote.sh && /tmp/egbim_deploy_remote.sh '${{ inputs.branch }}' '${{ inputs.target_dir }}' /tmp/egbim.deploy.env '${{ inputs.db_dump_path }}'"