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"