Skip to content

Release

Release #229

Workflow file for this run

name: Release
on:
workflow_dispatch:
inputs:
environment:
description: Environment to be released
required: true
default: default
type: choice
options:
- default
- tezos
- default-prod
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: mikefarah/[email protected]
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Fetch versions
run: |
ENVIRONMENT=${{ github.event.inputs.environment }}
echo "ENVIRONMENT TO BE RELEASE: ${ENVIRONMENT}"
BACKEND_RUNNING_VER=$(aws lambda get-alias --function-name AlgoreaBackend --name ${ENVIRONMENT} | yq .FunctionVersion)
FRONTEND_RUNNING_VER=$(aws lambda get-alias --function-name Algorea-static --name ${ENVIRONMENT} | yq .FunctionVersion)
BACKEND_DEPLID=$(yq '.backend.deployment_id' ./environments/${ENVIRONMENT}.yml)
FRONTEND_DEPLID=$(yq '.frontend.deployment_id' ./environments/${ENVIRONMENT}.yml)
BACKEND_ENV_VER=$(curl -L https://franceioi-algorea.s3.eu-west-3.amazonaws.com/deployments/backend-${ENVIRONMENT}-${BACKEND_DEPLID}.yml | yq '.lambda_version')
FRONTEND_ENV_VER=$(curl -L https://franceioi-algorea.s3.eu-west-3.amazonaws.com/deployments/frontend-${ENVIRONMENT}-${FRONTEND_DEPLID}.yml | yq '.lambda_version')
[ -z "${BACKEND_ENV_VER}" ] && echo "Backend: the expected deployment id (${ENVIRONMENT}-${BACKEND_DEPLID}) is not (yet) deployed" && exit 1
[ -z "${FRONTEND_ENV_VER}" ] && echo "Frontend: the expected deployment id (${ENVIRONMENT}-${FRONTEND_DEPLID}) is not (yet) deployed" && exit 1
echo "LAMBDA VERSIONS - Backend: ${BACKEND_RUNNING_VER} (wanted ${BACKEND_ENV_VER}) - Frontend ${FRONTEND_RUNNING_VER} (wanted ${FRONTEND_ENV_VER})"
echo "BACKEND_RUNNING_VER=${BACKEND_RUNNING_VER}" >> $GITHUB_ENV
echo "FRONTEND_RUNNING_VER=${FRONTEND_RUNNING_VER}" >> $GITHUB_ENV
echo "BACKEND_ENV_VER=${BACKEND_ENV_VER}" >> $GITHUB_ENV
echo "FRONTEND_ENV_VER=${FRONTEND_ENV_VER}" >> $GITHUB_ENV
- name: Migrate DB
if: ${{ env.BACKEND_RUNNING_VER != env.BACKEND_ENV_VER }}
run: |
PASS=${{ secrets.CONFIG_ENC_KEY }} make decrypt-config
BACKEND_APPVER=$(yq '.backend.version' ./environments/${{ github.event.inputs.environment }}.yml)
wget -qO- https://github.com/France-ioi/AlgoreaBackend/archive/refs/tags/v${BACKEND_APPVER}.tar.gz | tar -xz
cd AlgoreaBackend-${BACKEND_APPVER}
curl -L https://github.com/France-ioi/AlgoreaBackend/releases/download/v${BACKEND_APPVER}/AlgoreaBackend-linux --output ./AlgoreaBackend-linux
CONFIG_FILE=$(yq '.backend.config_file' ../environments/${{ github.event.inputs.environment }}.yml)
cp ../environments/configs/${CONFIG_FILE} conf/config.yaml
chmod +x ./AlgoreaBackend-linux
MIGRATION_SECRETS_FILE=$(yq '.backend.migration_secrets_file' ../environments/${{ github.event.inputs.environment }}.yml)
if [ ${MIGRATION_SECRETS_FILE} == "null" ]; then
echo "Migrating with default db user"
./AlgoreaBackend-linux db-migrate
else
MIGRATION_USER=$(yq '.db_migration_user' ../environments/configs/${MIGRATION_SECRETS_FILE})
echo "Migrating with user ${MIGRATION_USER}"
MIGRATION_PASS=$(yq '.db_migration_pass' ../environments/configs/${MIGRATION_SECRETS_FILE})
ALGOREA_DATABASE__USER=${MIGRATION_USER} ALGOREA_DATABASE__PASSWD=${MIGRATION_PASS} ./AlgoreaBackend-linux db-migrate
fi
- name: Release backend
if: ${{ env.BACKEND_RUNNING_VER != env.BACKEND_ENV_VER }}
run: aws lambda update-alias --function-name AlgoreaBackend --name ${{ github.event.inputs.environment }} --function-version ${{env.BACKEND_ENV_VER}}
- name: Release frontend
if: ${{ env.FRONTEND_RUNNING_VER != env.FRONTEND_ENV_VER }}
run: aws lambda update-alias --function-name Algorea-static --name ${{ github.event.inputs.environment }} --function-version ${{env.FRONTEND_ENV_VER}}