From ae5ec6e96e057b4f10ca27ea7e4761ea5b5f9ca5 Mon Sep 17 00:00:00 2001 From: James Ekow Abaka Ainooson Date: Sun, 25 Jan 2026 18:45:54 -0600 Subject: [PATCH] Working on the deploy template --- workflows/deploy.yml | 132 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 workflows/deploy.yml diff --git a/workflows/deploy.yml b/workflows/deploy.yml new file mode 100644 index 0000000..691f311 --- /dev/null +++ b/workflows/deploy.yml @@ -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"