Create HydroServer Timescale Cloud Database #33
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Create HydroServer Timescale Cloud Database | |
on: | |
workflow_dispatch: | |
inputs: | |
environment: | |
description: 'Enter a deployment environment name.' | |
required: true | |
hydroserver-version: | |
description: 'Enter a version of HydroServer to use. Leave blank to use the latest version.' | |
required: false | |
superuser-email: | |
description: 'Enter the email for the Django superuser.' | |
required: true | |
superuser-password: | |
description: 'Enter the password for the Django superuser.' | |
required: true | |
partition-interval: | |
description: 'Enter a partition interval in days.' | |
default: '365' | |
required: false | |
jobs: | |
setup-deployment: | |
runs-on: ubuntu-20.04 | |
environment: ${{ github.event.inputs.environment }} | |
defaults: | |
run: | |
working-directory: ./terraform/timescale | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY}} | |
AWS_STORAGE_BUCKET_NAME: hydroserver-${{ github.event.inputs.environment }}-storage | |
steps: | |
- name: Checkout Repo | |
uses: actions/checkout@v3 | |
with: | |
ref: main | |
- name: Checkout Backend Repo | |
uses: actions/checkout@v4 | |
with: | |
repository: hydroserver2/hydroserver-webapp-back | |
ref: refs/tags/${{ github.event.inputs.hydroserver-version || '$(curl -sL https://api.github.com/repos/hydroserver2/hydroserver-webapp-back/releases/latest | jq -r ".tag_name")' }} | |
path: backend | |
- name: Setup Terraform | |
uses: hashicorp/setup-terraform@v1 | |
- name: Terraform Init | |
run: terraform init -backend-config="key=timescale_database_${{ github.event.inputs.environment }}" | |
- name: Terraform Plan | |
id: plan | |
run: terraform plan -no-color -var instance="${{ github.event.inputs.environment }}" -var project_id="${{ secrets.TIMESCALE_PROJECT_ID }}" -var access_key="${{ secrets.TIMESCALE_ACCESS_KEY }}" -var secret_key="${{ secrets.TIMESCALE_SECRET_KEY }}" | |
continue-on-error: true | |
- name: Terraform Plan Status | |
if: steps.plan.outcome == 'failure' | |
run: exit 1 | |
- name: Terraform Apply | |
run: | | |
terraform apply -auto-approve -var instance="${{ github.event.inputs.environment }}" -var project_id="${{ secrets.TIMESCALE_PROJECT_ID }}" -var access_key="${{ secrets.TIMESCALE_ACCESS_KEY }}" -var secret_key="${{ secrets.TIMESCALE_SECRET_KEY }}" | |
terraform output -raw password | |
terraform output -raw hostname | sed "s/\\\*\\\*\\\*/$TIMESCALE_PROJECT_ID/" | |
terraform output -raw port | |
# ls | |
# echo "DATABASE_URL=postgresql://tsdbadmin:$(terraform output -raw password)@$(terraform output -raw hostname | sed "s/\\*\\*\\*/${{ secrets.TIMESCALE_PROJECT_ID }}/"):$(terraform output -raw port)/tsdb" | |
# - name: Install Django Dependencies | |
# working-directory: ./backend | |
# run: | | |
# python -m pip install --upgrade pip | |
# pip install -r requirements.txt | |
# pip install pyopenssl --upgrade | |
# - name: Run Database Setup Commands | |
# working-directory: ./backend | |
# env: | |
# DJANGO_SETTINGS_MODULE: hydroserver.settings | |
# run: | | |
# python manage.py migrate | |
# python manage.py configure_timescaledb --partition-interval-days ${{ github.event.inputs.partition-interval }} | |
# python manage.py createsuperuser --noinput | |
# python manage.py collectstatic --noinput | |