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 5c4538e
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 28 deletions.
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
110 changes: 110 additions & 0 deletions .github/workflows/ci_check_pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
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: "docker"
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: run tests
shell: bash
run: |
export DB_PASSWORD=`./docker-compose/localstack/get_db_password.sh` && echo $$DB_PASSWORD
make ci-test
Empty file.
2 changes: 1 addition & 1 deletion 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 Down
34 changes: 7 additions & 27 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,18 @@ 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
Expand Down Expand Up @@ -63,7 +60,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 All @@ -79,7 +76,7 @@ dev-tenant:

ci-setup: env-setup test-tenant
npm ci --loglevel=error
make run -e DOCKER_DNS=$(DOCKER_DNS) 2>&1 | tee test_logs &
make ci-run -e DOCKER_DNS=$(DOCKER_DNS) 2>&1 | tee test_logs &
while ! grep -q "starting in Actix" test_logs; \
do echo "ci-test: waiting for bootup..." && sleep 4; \
done
Expand Down Expand Up @@ -134,29 +131,12 @@ run: kill build
sed -i 's/dockerdns/$(DOCKER_DNS)/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 5c4538e

Please sign in to comment.