Adding a new deploy to the workflows

This commit is contained in:
2026-01-25 19:18:48 -06:00
parent b8490ff5f6
commit c3e9badf12

132
.gitea/workflows/deploy.yml Normal file
View 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"