Skip to content

Commit

Permalink
chore: add PR testing workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
Datron committed Apr 19, 2024
1 parent cbd5b6f commit 49de71d
Show file tree
Hide file tree
Showing 7 changed files with 149 additions and 33 deletions.
4 changes: 2 additions & 2 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
DATABASE_URL=postgres://postgres:docker@dockerdns:5432/config?sslmode=disable
DATABASE_URL=postgres://postgres:docker@localhost:5432/config?sslmode=disable
RUST_LOG=debug
AWS_ACCESS_KEY_ID=test
AWS_SECRET_ACCESS_KEY=test
Expand All @@ -8,7 +8,7 @@ DB_USER=postgres
DB_HOST=dockerdns:5432
DB_NAME=config
APP_ENV=DEV
AWS_REGION_ENDPOINT=http://dockerdns:4566
AWS_REGION_ENDPOINT=http://localhost:4566
ALLOW_SAME_KEYS_OVERLAPPING_CTX=true
ALLOW_DIFF_KEYS_OVERLAPPING_CTX=true
ALLOW_SAME_KEYS_NON_OVERLAPPING_CTX=true
Expand Down
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* @juspay/sdk-backend
23 changes: 23 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## Problem
Describe the problem you are trying to solve here

## Solution
Provide a brief summary of your solution so that reviewers can understand your code

## Environment variable changes

What ENVs need to be added or changed

## Pre-deployment activity
Things needed to be done before deploying this change (if any)

## Post-deployment activity
Things needed to be done after deploying this change (if any)

## API changes
| Endpoint | Method | Request body | Response Body |
| ------------- |:-------------:| -----:| ----------------:|
| API | GET/POST, etc | request | response |

## Possible Issues in the future
Describe any possible issues that could occur because of this change
114 changes: 114 additions & 0 deletions .github/workflows/ci_check_pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
name: CI-pr

on: [pull_request]

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

env:
# Disable incremental compilation.
#
# Incremental compilation is useful as part of an edit-build-test-edit cycle,
# as it lets the compiler avoid recompiling code that hasn't changed. However,
# on CI, we're not making small edits; we're almost always building the entire
# project from scratch. Thus, incremental compilation on CI actually
# introduces *additional* overhead to support making future builds
# faster...but no future builds will ever occur in any given CI environment.
#
# See https://matklad.github.io/2021/09/04/fast-rust-builds.html#ci-workflow
# for details.
CARGO_INCREMENTAL: 0
# Allow more retries for network requests in cargo (downloading crates) and
# rustup (installing toolchains). This should help to reduce flaky CI failures
# from transient network timeouts or other issues.
CARGO_NET_RETRY: 10
RUSTUP_MAX_RETRIES: 10
# Don't emit giant backtraces in the CI logs.
RUST_BACKTRACE: short
# Use cargo's sparse index protocol
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
AWS_ACCESS_KEY_ID: test
AWS_SECRET_ACCESS_KEY: test
AWS_SESSION_TOKEN: test
AWS_REGION: ap-south-1

jobs:
formatting:
name: Check formatting
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.76.0
targets: wasm32-unknown-unknown
components: rustfmt, clippy

- name: Check formatting
shell: bash
run: cargo fmt --all --check

- name: Check conventional commit
uses: cocogitto/cocogitto-action@v3
id: check
with:
check-latest-tag-only: true

test:
name: Testing
runs-on: ubuntu-latest
services:
postgres:
image: postgres:12-alpine
ports:
- 5432:5432
env:
POSTGRES_PASSWORD: "ZG9ja2VyCg=="
POSTGRES_DB: "config"
restart: on-failure

localstack:
image: localstack/localstack:1.3.0
ports:
- 4510-4559:4510-4559 # external service port range
- 4566:4566 # LocalStack Edge Proxy
- 4571:4571
env:
LOCALSTACK_SERVICES: kms
AWS_DEFAULT_REGION: ap-south-1
EDGE_PORT: 4566
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.76.0
targets: wasm32-unknown-unknown
components: rustfmt, clippy

- name: install node
uses: actions/setup-node@v4
with:
node-version: 18.19.0

- name: Install wasm-pack
shell: bash
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

- name: run tests
shell: bash
run: |
export DB_PASSWORD=`./docker-compose/localstack/get_db_password.sh` && echo $$DB_PASSWORD
make ci-test
Empty file.
4 changes: 2 additions & 2 deletions docker-compose/localstack/get_db_password.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# CONSTANTS
region="ap-south-1"
alias aws="aws --endpoint-url=http://$DOCKER_DNS:4566 --region=${region}"
alias aws="aws --endpoint-url=http://localhost:4566 --region=${region}"

# ****** KMS *******

Expand All @@ -12,4 +12,4 @@ kms_encrypt(){
echo $(aws kms encrypt --key-id $secret_key_id --plaintext $2 | jq -r .CiphertextBlob)
}

kms_encrypt DB_PASSWORD docker
kms_encrypt DB_PASSWORD ZG9ja2VyCg==
36 changes: 7 additions & 29 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,21 @@ SHELL := /usr/bin/env bash
kill
run
ci-test
ci-build
ci-push
registry-login
validate-aws-connection
validate-psql-connection
cac

cleanup:
-docker rm -f $$(docker container ls --filter name=^context-aware-config -a -q)
-docker rmi -f $$(docker images | grep context-aware-config-postgres | cut -f 10 -d " ")

db-init:
diesel migration run --locked-schema --config-file=crates/context_aware_config/diesel.toml
-diesel migration run --locked-schema --config-file=crates/experimentation_platform/diesel.toml

cleanup:
-docker rm -f $$(docker container ls --filter name=^context-aware-config -a -q)
-docker rmi -f $$(docker images | grep context-aware-config-postgres | cut -f 10 -d " ")

cac-migration: cleanup
docker-compose up -d postgres
cp .env.example .env
sed -i 's/dockerdns/$(DOCKER_DNS)/g' ./.env
while ! make validate-psql-connection; \
do echo "waiting for postgres bootup"; \
sleep 0.5; \
Expand All @@ -38,7 +34,6 @@ cac-migration: cleanup
exp-migration: cleanup
docker-compose up -d postgres
cp .env.example .env
sed -i 's/dockerdns/$(DOCKER_DNS)/g' ./.env
while ! make validate-psql-connection; \
do echo "waiting for postgres bootup"; \
sleep 0.5; \
Expand All @@ -63,7 +58,7 @@ validate-psql-connection:

env-setup:
npm ci
docker-compose up -d postgres localstack
-docker-compose up -d postgres localstack
cp .env.example .env
sed -i 's/dockerdns/$(DOCKER_DNS)/g' ./.env
while ! make validate-psql-connection validate-aws-connection; \
Expand Down Expand Up @@ -131,32 +126,15 @@ run: kill build
do echo "waiting for postgres, localstack bootup"; \
sleep 0.5; \
done
sed -i 's/dockerdns/$(DOCKER_DNS)/g' ./.env
sed -i 's/docker/ZG9ja2VyCg==/g' ./.env
make superposition -e DOCKER_DNS=$(DOCKER_DNS)

ci-test: cleanup ci-setup
ci-test: ci-setup
cargo test
npm run test
rm test_cac.sql
rm test_experimentation.sql

ci-build:
docker buildx build --ssh default=$(SSH_AUTH_SOCK) \
-t $(IMAGE_NAME):$(VERSION) \
--build-arg "CONTEXT_AWARE_CONFIG_VERSION=${VERSION}" \
--build-arg "SOURCE_COMMIT=${SOURCE_COMMIT}" \
.

ci-push: registry-login
docker tag $(IMAGE_NAME):$(VERSION) $(REGISTRY_HOST)/$(IMAGE_NAME):$(VERSION)
docker push $(REGISTRY_HOST)/$(IMAGE_NAME):$(VERSION)

registry-login:
aws ecr get-login-password --region $(REGION) | \
docker login \
--username AWS \
--password-stdin $(REGISTRY_HOST)

tailwind:
cd crates/frontend && npx tailwindcss -i ./styles/tailwind.css -o ./pkg/style.css --watch

Expand Down

0 comments on commit 49de71d

Please sign in to comment.