Skip to content

Deploy PRODUCTION instance #211

Deploy PRODUCTION instance

Deploy PRODUCTION instance #211

Workflow file for this run

on:
workflow_dispatch:
inputs:
check_config:
type: boolean
description: 'Fail when configuration overridden'
required: true
default: true
sql_backup:
type: boolean
description: 'Create SQL backup'
required: true
default: true
enable_maintenance_mode:
type: boolean
description: 'Enable maintenance mode.'
required: true
default: true
name: 'Deploy PRODUCTION instance'
jobs:
create_release_archive:
name: 'Create release archive'
runs-on:
labels: 'drupal-runner-v2'
outputs:
release_filename: ${{ steps.artifact.outputs.filename }}
steps:
- name: Fail if a branch was selected
if: github.event_name == 'workflow_dispatch' && !startsWith(github.ref, 'refs/tags/')
run: |
echo "This workflow should not be triggered with workflow_dispatch on a branch. Please choose a tag."
exit 1
- name: 'Checkout source code'
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: 'Setup nodejs'
uses: actions/setup-node@v3
with:
node-version-file: 'web/themes/custom/parc/.nvmrc'
- name: 'Install dependencies'
uses: eaudeweb/[email protected]
with:
dev: false
php: /usr/bin/php8.2
- name: 'Create release archive'
id: artifact
uses: eaudeweb/[email protected]
deploy_release:
name: 'Deploy release on the server'
runs-on:
labels: 'drupal-runner-v2'
needs: create_release_archive
steps:
- name: 'Deploy release on the server'
uses: eaudeweb/[email protected]
with:
ssh_user: ${{ secrets.PROD_SSH_USER }}
ssh_host: ${{ secrets.PROD_SSH_HOST }}
ssh_key: ${{ secrets.PROD_SSH_KEY }}
release_id: 'release-${{ github.ref_name }}'
release_filename: ${{ needs.create_release_archive.outputs.release_filename }}
project_dir: /var/www/html/eu-parc.eu
artifacts_dir: /var/www/artifacts/eu-parc.eu
settings_file: /var/www/config/eu-parc.eu/settings.local.php
public_files_dir: /var/www/config/eu-parc.eu/files
robo_file: /var/www/config/eu-parc.eu/robo.yml
database_dump_dir: /var/www/config/eu-parc.eu/sync
artifacts_lifespan: 30
check_config: ${{ inputs.check_config }}
sql_backup: ${{ inputs.sql_backup }}
update_instance:
name: 'Update Drupal instance'
runs-on:
labels: 'drupal-runner-v2'
needs: deploy_release
steps:
- name: 'Update the Drupal instance'
id: release
uses: eaudeweb/[email protected]
with:
path: /var/www/html/eu-parc.eu
enable_maintenance_mode: ${{ inputs.enable_maintenance_mode }}
- name: 'Discord notification'
run: >
curl -X POST -F "content=:white_check_mark: **${{ github.repository }}** release **${{ github.ref_name }}**
has been deployed on PROD: <https://eu-parc.eu>." ${{ secrets.DISCORD_WEBHOOK }}
notify_failure:
name: 'Notify on failure'
runs-on:
labels: 'drupal-runner-v2'
needs: [create_release_archive, deploy_release, update_instance]
if: failure()
steps:
- name: 'Discord notification on failed deploy'
run: >
curl -X POST -F
"content=:octagonal_sign: **${{ github.repository }}** failed to deploy release **${{ github.ref_name }}** on PROD: <https://eu-parc.eu>.
<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}>"
${{ secrets.DISCORD_WEBHOOK }}