Working on the deploy template
This commit is contained in:
132
workflows/deploy.yml
Normal file
132
workflows/deploy.yml
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
name: deploy
|
||||||
|
run-name: "Deploying: ${{ github.sha }}"
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
environment:
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
default: "DEV"
|
||||||
|
|
||||||
|
env:
|
||||||
|
PAANOO_VERSION: ${{ needs.versioning.outputs.release_tag }}
|
||||||
|
PAANOO_CONTACT_EMAIL: ${{ vars.DEV_CONTACT_EMAIL }}
|
||||||
|
PAANOO_DB_HOST: ${{ vars.DEV_DB_HOST }}
|
||||||
|
PAANOO_DB_NAME: ${{ vars.DEV_DB_NAME }}
|
||||||
|
PAANOO_DB_USER: ${{ vars.DEV_DB_USER }}
|
||||||
|
PAANOO_DB_SCHEMA: ${{ vars.DEV_DB_SCHEMA }}
|
||||||
|
PAANOO_DB_PASSWORD: ${{ secrets.DEV_DB_PASSWORD }}
|
||||||
|
|
||||||
|
PAANOO_CACHE_CONFIG: ${{ vars.DEV_CACHE_BACKEND }}
|
||||||
|
PAANOO_CACHE_ADDITIONAL_CONFIG: ${{ vars.DEV_CACHE_ADDITIONAL_CONFIG }}
|
||||||
|
|
||||||
|
PAANOO_PHOTOS_PATH: ${{ vars.DEV_PHOTOS_PATH }}
|
||||||
|
PAANOO_PREVIEWS_PATH: ${{ vars.DEV_PREVIEWS_PATH }}
|
||||||
|
PAANOO_RENDER_SERVICE_URL: ${{ vars.DEV_RENDER_SERVICE_URL }}
|
||||||
|
PAANOO_URL: ${{ vars.DEV_URL }}
|
||||||
|
PAANOO_REDIS_HOST: ${{ vars.DEV_REDIS_HOST }}
|
||||||
|
PAANOO_MAILER_HOST: ${{ vars.DEV_MAILER_HOST }}
|
||||||
|
PAANOO_MAILER_USER: ${{ vars.DEV_MAILER_USER }}
|
||||||
|
PAANOO_MAILER_PASSWORD: ${{ secrets.DEV_MAILER_PASSWORD }}
|
||||||
|
PAANOO_MAILER_FROM_ADDRESS: ${{ vars.DEV_MAILER_FROM_ADDRESS }}
|
||||||
|
PAANOO_MAILER_FROM_NAME: ${{ vars.DEV_MAILER_FROM_NAME }}
|
||||||
|
|
||||||
|
STRIPE_SECRET: ${{ secrets.DEV_STRIPE_SECRET }}
|
||||||
|
STRIPE_ENDPOINT_SECRET: ${{ secrets.DEV_STRIPE_ENDPOINT_SECRET }}
|
||||||
|
|
||||||
|
PRINTIFY_KEY: ${{ secrets.PRINTIFY_KEY }}
|
||||||
|
|
||||||
|
PAANOO_CDN_BUCKET: ${{ vars.DEV_CDN_BUCKET }}
|
||||||
|
PAANOO_CDN_REGION: ${{ vars.DEV_CDN_REGION }}
|
||||||
|
PAANOO_CDN_ACCESS_KEY_ID: ${{ vars.DEV_CDN_ACCESS_KEY }}
|
||||||
|
PAANOO_CDN_SECRET_KEY: ${{ secrets.DEV_CDN_SECRET_KEY }}
|
||||||
|
PAANOO_CDN_ENDPOINT: ${{ vars.DEV_CDN_ENDPOINT }}
|
||||||
|
PAANOO_CDN_PUBLIC_ENDPOINT: ${{ vars.DEV_CDN_PUBLIC_ENDPOINT }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update_db:
|
||||||
|
name: Update database
|
||||||
|
runs-on: php-8.3
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Run composer
|
||||||
|
run: composer install --ignore-platform-reqs
|
||||||
|
|
||||||
|
- name: Write out configuration files
|
||||||
|
run: envsubst < config/main-template.ini > config/main.ini
|
||||||
|
|
||||||
|
- name: Run migrations
|
||||||
|
run: |
|
||||||
|
pwd
|
||||||
|
vendor/bin/yentu migrate --config-path ./config/main.ini --home yentu
|
||||||
|
|
||||||
|
versioning:
|
||||||
|
name: Get version tag
|
||||||
|
runs-on: php-8.3
|
||||||
|
outputs:
|
||||||
|
release_tag: ${{ steps.export_tag.outputs.release_tag }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-tags: true
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Extract the current version
|
||||||
|
id: export_tag
|
||||||
|
run: echo "release_tag=`git describe`" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
name: Deploy Apps
|
||||||
|
runs-on: php-8.3
|
||||||
|
needs: [versioning, update_db]
|
||||||
|
steps:
|
||||||
|
- name: Checkout Code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-tags: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Configure SSH for docker
|
||||||
|
run: |
|
||||||
|
eval "$(ssh-agent -s)"
|
||||||
|
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519
|
||||||
|
chmod 0600 ~/.ssh/id_ed25519
|
||||||
|
ssh-add ~/.ssh/id_ed25519
|
||||||
|
ssh-keyscan ${{ vars.DEV_DEPLOYMENT_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
|
|
||||||
|
- name: Write out configurations
|
||||||
|
run: |
|
||||||
|
envsubst < config/main-template.ini > config/main.ini
|
||||||
|
envsubst < deployment/dev/compose-web.yaml > compose-web.yaml
|
||||||
|
envsubst < deployment/dev/compose-worker.yaml > compose-worker.yaml
|
||||||
|
|
||||||
|
|
||||||
|
- name: Download package artefacts
|
||||||
|
run: |
|
||||||
|
rm -r public
|
||||||
|
wget --user kenteprint --password ${{ secrets.PACKAGE_READ_TOKEN }} https://git.ainooson.me/api/packages/kenteprint/generic/frontend/`git describe`/frontend.tar.gz
|
||||||
|
tar xvf frontend.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
- name: Execute Docker Compose for web
|
||||||
|
env:
|
||||||
|
DOCKER_HOST: ssh://ekow@${{ vars.DEV_DEPLOYMENT_HOST }}
|
||||||
|
run: |
|
||||||
|
ssh ekow@${{ vars.DEV_DEPLOYMENT_HOST }} "cd web; mkdir -p files/photos files/previews"
|
||||||
|
scp -r public deployment/dev/nginx.conf config ekow@${{ vars.DEV_DEPLOYMENT_HOST }}:web
|
||||||
|
scp compose-web.yaml ekow@${{ vars.DEV_DEPLOYMENT_HOST }}:web/compose.yaml
|
||||||
|
ssh ekow@${{ vars.DEV_DEPLOYMENT_HOST }} "cd web; docker-compose down; docker-compose pull; docker-compose up -d"
|
||||||
|
|
||||||
|
|
||||||
|
- name: Execute Docker Compose for worker
|
||||||
|
env:
|
||||||
|
DOCKER_HOST: ssh://ekow@${{ vars.DEV_DEPLOYMENT_HOST }}
|
||||||
|
run: |
|
||||||
|
ssh ekow@${{ vars.DEV_DEPLOYMENT_HOST }} "cd worker; mkdir -p data/photos data/previews"
|
||||||
|
scp -r public deployment/dev/nginx.conf config ekow@${{ vars.DEV_DEPLOYMENT_HOST }}:worker
|
||||||
|
scp compose-worker.yaml ekow@${{ vars.DEV_DEPLOYMENT_HOST }}:worker/compose.yaml
|
||||||
|
ssh ekow@${{ vars.DEV_DEPLOYMENT_HOST }} "cd worker; docker-compose down; docker-compose pull; docker-compose up -d"
|
||||||
Reference in New Issue
Block a user