Skip to content

Commit

Permalink
feat: implement coordinator service ci deployment
Browse files Browse the repository at this point in the history
  • Loading branch information
ntampakas committed May 23, 2024
1 parent 0abbebb commit 882d62f
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 11 deletions.
16 changes: 16 additions & 0 deletions .github/scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash
set -ex

cp coordinator/.env.example coordinator/.env

sed -i "s|^\(COORDINATOR_RPC_URL=\).*|\1$1|" coordinator/.env
sed -i "s|^\(COORDINATOR_ADDRESS=\).*|\1$2|" coordinator/.env
sed -i "s|^\(COORDINATOR_ALLOWED_ORIGIN=\).*|\1$3|" coordinator/.env

aws ecr get-login-password --region eu-central-1 | docker login --username AWS --password-stdin 490752553772.dkr.ecr.eu-central-1.amazonaws.com

docker build -t maci-coordinator -f coordinator/apps/Dockerfile .
docker tag maci-coordinator:latest 490752553772.dkr.ecr.eu-central-1.amazonaws.com/maci-coordinator:latest
docker push 490752553772.dkr.ecr.eu-central-1.amazonaws.com/maci-coordinator:latest

exit 0
13 changes: 13 additions & 0 deletions .github/scripts/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash
set -ex

tasks="maci-coordinator"
for task in $tasks; do
maci_coordinator_revision=$(aws ecs describe-task-definition --task-definition $task --query "taskDefinition.revision")
aws ecs update-service --cluster maci-coordinator --service $task --force-new-deployment --task-definition $task:$maci_coordinator_revision
done

for loop in {1..3}; do
[ "$loop" -eq 3 ] && exit 1
aws ecs wait services-stable --cluster maci-coordinator --services $tasks && break || continue
done
37 changes: 37 additions & 0 deletions .github/workflows/coordinator-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CoordinatorDeploy
on:
push:
branches:
- dev

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
deploy:
runs-on: ubuntu-22.04
permissions:
id-token: write
contents: read

steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false

- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::490752553772:role/maci-coordinator-ecs-deploy-slc
role-duration-seconds: 2700
aws-region: eu-central-1

- name: Build and Push images to ECR
run: |
.github/scripts/build.sh ${{ secrets.COORDINATOR_RPC_URL }} ${{ secrets.COORDINATOR_ADDRESS }} ${{ secrets.COORDINATOR_ALLOWED_ORIGIN }}
- name: Create Deployment
run: |
.github/scripts/deploy.sh
2 changes: 1 addition & 1 deletion circuits/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
},
"dependencies": {
"@zk-kit/circuits": "^0.4.0",
"circomkit": "^0.1.0",
"circomkit": "^0.2.1",
"circomlib": "^2.0.5",
"maci-core": "1.2.2",
"maci-crypto": "1.2.2",
Expand Down
5 changes: 2 additions & 3 deletions circuits/ts/__tests__/MessageValidator.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { expect } from "chai";
import { type WitnessTester } from "circomkit";
import { SignalValueType } from "circomkit/dist/types/circuit";
import { genRandomSalt } from "maci-crypto";
import { PCommand, Keypair } from "maci-domainobjs";

Expand Down Expand Up @@ -58,7 +57,7 @@ describe("MessageValidator circuit", function test() {
const signature = command.sign(privKey);

circuitInputs = {
stateTreeIndex: 0n as SignalValueType,
stateTreeIndex: 0n,
numSignUps: 1n,
voteOptionIndex: 0n,
maxVoteOptions: 1n,
Expand Down Expand Up @@ -204,7 +203,7 @@ describe("MessageValidator circuit", function test() {
const signature = command.sign(privKey);

circuitInputs = {
stateTreeIndex: 0n as SignalValueType,
stateTreeIndex: 0n,
numSignUps: 1n,
voteOptionIndex: 0n,
maxVoteOptions: 1n,
Expand Down
6 changes: 5 additions & 1 deletion circuits/ts/__tests__/utils/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { type SignalValueType } from "circomkit/dist/types/circuit";
/** An integer value is a numerical string, a number, or a bigint. */
export type IntegerValueType = `${number}` | number | bigint;

/** A signal value is a number, or an array of numbers (recursively). */
export type SignalValueType = IntegerValueType | SignalValueType[];

/**
* Circuit inputs for testing the MessageValidator circuit
Expand Down
33 changes: 33 additions & 0 deletions coordinator/apps/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Copy source code and build the project
FROM node:20-alpine as builder

WORKDIR /builder

COPY . .

RUN npm i -g pnpm@8
RUN pnpm install --frozen-lockfile --prefer-offline
RUN pnpm run build

# Create image by copying build artifacts
FROM node:20-alpine as runner
RUN npm i -g pnpm@8

RUN mkdir -p ~/rapidsnark/build; \
wget -qO ~/rapidsnark/build/prover https://maci-devops-zkeys.s3.ap-northeast-2.amazonaws.com/rapidsnark-linux-amd64-1c137; \
chmod +x ~/rapidsnark/build/prover
RUN wget -qO ~/circom https://github.com/iden3/circom/releases/download/v2.1.6/circom-linux-amd64; \
chmod +x ~/circom; \
mv ~/circom /bin

USER node
ARG PORT=8545

WORKDIR ./maci
COPY --chown=node:node --from=builder /builder/ ./
WORKDIR /maci/coordinator
RUN pnpm run download-zkeys:test
RUN pnpm run generate-keypair

EXPOSE ${PORT}
CMD ["node", "build/ts/main.js"]
15 changes: 9 additions & 6 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 882d62f

Please sign in to comment.