Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

INFRA-56: Migrate from K8s to Amplify - testnet & mainnet #118

Merged
merged 1 commit into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 122 additions & 0 deletions .github/actions/build-and-push/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
name: Build and push app to Amplify
description: This action builds frontned and deploys it onto Amplify

inputs:
aws-access-key-id:
type: string
required: true
description: Access key ID to AWS account
aws-secret-access-key:
type: string
required: true
description: Access secret key to AWS account
s3-bucket-name:
type: string
required: true
description: Name of S3 bucket to store ZIP package
aws-default-region:
type: string
description: AWS Amplify region
default: "eu-central-1"
amplify-app-id:
type: string
required: true
description: APP ID of AWS Amplify app
environment:
type: choice
options:
- testnet
- mainnet
required: true
description: Environment name
node-version:
type: string
description: Version of Node
default: "20"


runs:
using: composite
steps:
- name: Call action get-ref-properties
id: get-ref-properties
uses: Cardinal-Cryptography/github-actions/get-ref-properties@v6

- name: Setup package name
id: get-package-name
shell: bash
run: |
date=$(date '+%Y-%m-%d-%H:%M')

if [ ! -z ${{ steps.get-ref-properties.outputs.tag }} ]; then
version=$(echo ${{ steps.get-ref-properties.outputs.tag }})
elif [ ! -z ${{ steps.get-ref-properties.outputs.sha }} ]; then
version=$(echo ${{ steps.get-ref-properties.outputs.sha }})
else
echo "ERROR - nor commit SHA nor tag is set"
fi

package_name=$(echo "release-${{ inputs.environment }}-${version}-${date}.zip")
echo "package_name=${package_name}" >> $GITHUB_OUTPUT

- name: Setup node
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}

- name: Yarn clean install
shell: bash
run: yarn install

- name: Build an app
shell: bash
run: printenv | grep -i ws_ && yarn run build:www

- name: Compress app to ZIP file
shell: bash
run:
cd packages/apps/build/ && zip -r ../../../${{ steps.get-package-name.outputs.package_name }} .

- name: Upload ZIP file to S3
uses: Cardinal-Cryptography/github-actions/copy-file-to-s3@v6
env:
AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }}
AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }}
AWS_DEFAULT_REGION: ${{ inputs.aws-default-region }}
with:
compression: false
source-filename: "${{ steps.get-package-name.outputs.package_name }}"
source-path: "${{ steps.get-package-name.outputs.package_name }}"
s3-bucket-path: zips
s3-bucket-filename: "${{ steps.get-package-name.outputs.package_name }}"
s3-bucket-name: "${{ inputs.s3-bucket-name }}"
if-exist: fallback

- name: Deploy app to Amplify
shell: bash
env:
AWS_ACCESS_KEY_ID: ${{ inputs.aws-access-key-id }}
AWS_SECRET_ACCESS_KEY: ${{ inputs.aws-secret-access-key }}
AWS_DEFAULT_REGION: ${{ inputs.aws-default-region }}
APP_ID: ${{ inputs.amplify-app-id }}
BRANCH_NAME: ${{ inputs.environment }}
S3_BUCKET: ${{ inputs.s3-bucket-name }}
run: |
#!/bin/bash
job_id=$(aws amplify start-deployment --region ${{ env.AWS_DEFAULT_REGION }} --app-id ${{ env.APP_ID }} --branch-name ${{ env.BRANCH_NAME }} --source-url s3://${{ env.S3_BUCKET }}/zips/${{ steps.get-package-name.outputs.package_name }} --output text --query "jobSummary.jobId")

i=1
while [ $i -le 10 ]
do
if aws amplify list-jobs --region ${{ env.AWS_DEFAULT_REGION }} --app-id ${{ env.APP_ID }} --branch-name ${{ env.BRANCH_NAME }} --output text --query "jobSummaries[?jobId == '${job_id}'].status" | grep -i "succeed"; then
echo "Done"
exit 0
else
echo "Waiting... Status:"
aws amplify list-jobs --region ${{ env.AWS_DEFAULT_REGION }} --app-id ${{ env.APP_ID }} --branch-name ${{ env.BRANCH_NAME }} --output text --query "jobSummaries[?jobId == '${job_id}']"
i=$((i+1))
sleep 10
fi
done
echo "TIMEOUT - plase check the application manually in AWS Amplify console, exiting..."
exit 1
32 changes: 32 additions & 0 deletions .github/workflows/build-and-push-mainnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: (MAINNET) Build and deploy Wallet

on:
workflow_dispatch:

jobs:
build-and-push:
name: Build and push
runs-on: ubuntu-20.04
environment:
name: mainnet
steps:
- name: GIT | Checkout
uses: actions/checkout@v4

- name: Export variables
env:
VARS_CONTEXT: ${{ toJson(vars) }}
run: |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
to_envs() { jq -r "to_entries[] | select(.key|startswith(\"WS_\")) | \"\(.key)<<$EOF\n\(.value)\n$EOF\n\""; }
echo "$VARS_CONTEXT" | to_envs >> $GITHUB_ENV

- name: Build and deploy - MAINNET
uses: ./.github/actions/build-and-push
with:
environment: mainnet
aws-access-key-id: ${{ secrets.AWS_S3_MAINNET_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_S3_MAINNET_SECRET_ACCESS_KEY }}
s3-bucket-name: ${{ secrets.AWS_S3_MAINNET_BUCKET_NAME }}
amplify-app-id: ${{ secrets.AWS_AMPLIFY_MAINNET_APP_ID }}
32 changes: 32 additions & 0 deletions .github/workflows/build-and-push-testnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: (TESTNET) Build and deploy Wallet

on:
workflow_dispatch:

jobs:
build-and-push:
name: Build and push
runs-on: ubuntu-20.04
environment:
name: testnet
steps:
- name: GIT | Checkout
uses: actions/checkout@v4

- name: Export variables
env:
VARS_CONTEXT: ${{ toJson(vars) }}
run: |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
to_envs() { jq -r "to_entries[] | select(.key|startswith(\"WS_\")) | \"\(.key)<<$EOF\n\(.value)\n$EOF\n\""; }
echo "$VARS_CONTEXT" | to_envs >> $GITHUB_ENV

- name: Build and deploy - TESTNET
uses: ./.github/actions/build-and-push
with:
environment: testnet
aws-access-key-id: ${{ secrets.AWS_S3_TESTNET_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_S3_TESTNET_SECRET_ACCESS_KEY }}
s3-bucket-name: ${{ secrets.AWS_S3_TESTNET_BUCKET_NAME }}
amplify-app-id: ${{ secrets.AWS_AMPLIFY_TESTNET_APP_ID }}
105 changes: 0 additions & 105 deletions .github/workflows/build-push-aleph-wallet-image.yml

This file was deleted.

100 changes: 0 additions & 100 deletions .github/workflows/deploy-mainnet-aleph-wallet.yml

This file was deleted.

Loading