Comparing version 2.28.0 to 2.29.0
{ | ||
"name": "ipwa", | ||
"version": "2.28.0", | ||
"version": "2.29.0", | ||
"author": "Sreeram Padmanabhan", | ||
@@ -34,2 +34,3 @@ "license": "ISC", | ||
"release:dockerhub": "sh ./scripts/release_dockerhub.sh", | ||
"release:github": "sh ./scripts/release_github.sh", | ||
"release:npm": "sh ./scripts/release_npm.sh", | ||
@@ -36,0 +37,0 @@ "release:expo": "sh ./scripts/release_expo.sh", |
195
readme.md
@@ -14,46 +14,63 @@ ![Pipeline](https://github.com/jsDrome/ipwa/workflows/Build/badge.svg?branch=master) | ||
1. Frontend in React | ||
1. Frontend in React, Redux | ||
2. Backend in Node | ||
3. Native in Expo | ||
4. Isomorphic Web Apps | ||
5. Progressive Web Apps | ||
3. Native in React Native (Expo) | ||
4. Isomorphic/Progressive Web Apps | ||
6. Unit testing using Jest | ||
7. Code coverage reports using Codecov | ||
8. Regression testing using Cypress, Puppeteer & Percy | ||
9. Docker containers | ||
10. Helm charts deployable in a Kubernetes Cluster | ||
11. Fully automated pipeline using Github actions | ||
12. Deployable in Dockerhub and Github Container Registry | ||
9. Fully automated pipeline using Github actions | ||
10. Deployable in Dockerhub, Github Container Registry as Docker image | ||
11. Publishable in npm, Github package registry as npm package | ||
12. Publishable in Expo as OTA updates. | ||
13. Deployable in Google Container Registry using Terraform (WIP) | ||
14. Deployable in npm and Github Package Register as npm package. | ||
15. Integrated with Google Analytics | ||
16. Integrated with Sentry | ||
14. Helm charts deployable in a Kubernetes Cluster (WIP) | ||
## How this works | ||
All you need to do is spin up a new project, sign up to a few providers, set the tokens and secrets correctly and the rest is all magic. When you push code to master, it will just be deployed everywhere in 10 minutes after a series of checks. | ||
This package was created with automated pipeline in mind. All you need to do is spin up a new project, sign up to a few providers, set the tokens and secrets correctly and the rest is all magic. When you push code to master, it will just be deployed everywhere after a series of checks. | ||
## Setup Project | ||
- Create a new project in Github. Do not push anything yet. | ||
- Create new Codecov app and set `CODECOV_TOKEN` secret in Github. This is where our unit test reports are stored. | ||
- Create new Heroku app and set `HEROKU_APP_NAME` and `HEROKU_API_KEY` secrets in Github. This is where our app will be staged. | ||
- Set your stage url in .configrc | ||
- Run `npm run test:cypress:open`, create a new project in Cypress and set `CYPRESS_PROJECT_ID` and `CYPRESS_TOKEN` secrets in Github. | ||
- Create new Percy app and set `PERCY_TOKEN` secrets in Github. This is where our visual regression test reports are stored. | ||
- Sign up to Docker and set `DOCKER_USER` and `DOCKER_PASS` secrets in Github. This is where our docker image is pushed. | ||
- Set `GITHUB_DOCKER_IMAGE_NAME` & `DOCKERHUB_DOCKER_IMAGE_NAME` in `./.github/workflows/build-master.yml`. The docker image above will be pushed to Github package registry as well. | ||
- Sign up to npm and set `NPM_TOKEN` secret in Github. | ||
- Sign up to expo and set `EXPO_USER` and `EXPO_PASS` secrets in Github. This is where our expo app will be published. | ||
- Create new firebase app and set `FIREBASE_APP_NAME` and `FIREBASE_TOKEN` secrets in Github. This will be our production environment. | ||
- Install ipwa globally - `npm i -g ipwa` | ||
- Spawn a new ipwa app - `ipwa my-app` | ||
- Push the new project you just created to Github. | ||
Install ipwa globally | ||
# Detailed Instructions | ||
```shell | ||
`npm i -g ipwa` | ||
``` | ||
## Setup Project | ||
Spawn a new ipwa app | ||
1. Install ipwa | ||
```shell | ||
`ipwa my-app install` | ||
``` | ||
This will create a new project called my-app in the current directory and install npm dependencies. | ||
Create a new project in Github. Do not push anything yet. | ||
Create new Codecov app and set `CODECOV_TOKEN` secret in Github. This is where our unit test reports are stored. | ||
Create new Heroku app and set `HEROKU_APP_NAME` in `./.github/workflows/build-master.yml` and `HEROKU_API_KEY` secret in Github. This is where our app will be staged. | ||
Set your stage url in .configrc | ||
Run `npm run test:cypress:open`, create a new project in Cypress and set `CYPRESS_PROJECT_ID` and `CYPRESS_TOKEN` secrets in Github. | ||
Create new Percy app and set `PERCY_TOKEN` secrets in Github. This is where our visual regression test reports are stored. | ||
Sign up to Docker and set `DOCKER_USER` and `DOCKER_PASS` secrets in Github. This is where our docker image is pushed. | ||
Set `GITHUB_DOCKER_IMAGE_NAME` & `DOCKERHUB_DOCKER_IMAGE_NAME` in `./.github/workflows/build-master.yml`. The docker image above will be pushed to Github package registry as well. | ||
Sign up to npm and set `NPM_TOKEN` secret in Github. | ||
Sign up to expo and set `EXPO_USER` and `EXPO_PASS` secrets in Github. This is where our expo app will be published. | ||
Create new firebase app and set `FIREBASE_APP_NAME` in `./.github/workflows/build-master.yml` and `FIREBASE_TOKEN` secrets in Github. This will be our production environment. | ||
Push the new project you just created to Github. | ||
# Local setup | ||
## Install ipwa | ||
```shell | ||
@@ -63,9 +80,9 @@ npm i -g ipwa | ||
2. Spawn a new ipwa app. | ||
## Spawn a new ipwa app. | ||
```shell | ||
ipwa my-app | ||
ipwa my-app install | ||
``` | ||
## Run locally normally | ||
## Run app locally | ||
@@ -78,12 +95,12 @@ Make sure npm dependencies are installed. | ||
## Run locally as a docker container | ||
## Run app as docker container | ||
- Set the following environment variables locally. | ||
- `DOCKER_IMAGE_NAME` | ||
- Set the following environment variables. | ||
- `DOCKERHUB_DOCKER_IMAGE_NAME` | ||
```shell | ||
npm run build-docker | ||
npm run build:docker | ||
``` | ||
## Run locally as a helm app | ||
## Run as a helm app | ||
@@ -94,10 +111,7 @@ Make sure minikube and helm are installed. | ||
Run locally: | ||
```shell | ||
npm run build:helm | ||
npm run build:helm:uninstall | ||
``` | ||
## Run unit tests locally | ||
## Unit tests | ||
@@ -108,14 +122,7 @@ ```shell | ||
## Setup Github actions | ||
## Run Codecov | ||
Set up the secrets given in the sections below. | ||
## Setup Codecov | ||
- Sign up in Codecov and integrate it with your project. | ||
- Set the following environment secrets. | ||
- Set the following environment variables. | ||
- `CODECOV_TOKEN` | ||
Run locally: | ||
```shell | ||
@@ -125,35 +132,23 @@ npm run test:codecov | ||
Run in CI: See workflow file. | ||
## Run Cypress tests | ||
## Setup Cypress | ||
- Sign up in Cypress and integrate it with your project. | ||
- Set the following environment secrets. | ||
- Set the following environment variables. | ||
- `CYPRESS_PROJECT_ID` | ||
- `CYPRESS_TOKEN` | ||
Run locally: | ||
```shell | ||
npm run test:cypress:run | ||
npm run test:cypress:open | ||
``` | ||
Run in CI: See workflow file. | ||
## Setup Percy | ||
## Run Percy | ||
- Sign up in Percy and integrate it with your project. | ||
- Set the following environment secrets. | ||
- Set the following environment variables. | ||
- `PERCY_TOKEN` | ||
Run locally: | ||
```shell | ||
npm run test:percy | ||
``` | ||
Run in CI: See workflow file. | ||
## Setup Puppeteer | ||
## Run Puppeteer | ||
Run locally: | ||
```shell | ||
@@ -163,66 +158,62 @@ npm run test:puppeteer | ||
Run in CI: See workflow file. | ||
## Deploy on Heroku | ||
## Setup Heroku Deployment | ||
- Set the following environment variables. | ||
- Sign up in Heroku and create a new app. | ||
- Set the following environment secrets. | ||
- `HEROKU_APP_NAME` | ||
- `HEROKU_API_KEY` | ||
Run locally: | ||
```shell | ||
npm run release:heroku | ||
``` | ||
Run in CI: See workflow file. | ||
## Setup Firebase deployment | ||
## Deploy on Firebase | ||
- Sign up in Firebase and integrate it with your project. | ||
- Set the following environment variables locally. | ||
- Set the following environment variables. | ||
- `FIREBASE_TOKEN` | ||
Run locally: | ||
```shell | ||
npm run release:firebase | ||
``` | ||
Run in CI: See workflow file. | ||
## Setup Github Container Registry release | ||
## Release image on Dockerhub Container Registry | ||
Run locally: - | ||
Set the following environment variables: | ||
- `DOCKER_USER` | ||
- `DOCKER_PASS` | ||
- `DOCKERHUB_DOCKER_IMAGE_NAME` | ||
Run in CI: | ||
```shell | ||
npm run release:dockerhub | ||
``` | ||
Set `GITHUB_DOCKER_IMAGE_NAME` in `./.github/workflows/build-master.yml`. | ||
## Release image on Github Container Registry | ||
## Setup Dockerhub Container Registry release | ||
Set the following environment variables: | ||
- `GITHUB_REPO` | ||
- `GITHUB_DOCKER_IMAGE_NAME` | ||
- `GITHUB_USER` | ||
- `GITHUB_TOKEN` | ||
Run locally: - | ||
```shell | ||
npm run release:github | ||
``` | ||
Run in CI: | ||
## Release npm package to npm registry | ||
Set `DOCKERHUB_DOCKER_IMAGE_NAME` in `./.github/workflows/build-master.yml`. | ||
## Setup npm publishing | ||
- Sign up in npm and integrate it with your project. | ||
- Set the following environment secret. | ||
- Set the following environment variables: | ||
- `NPM_TOKEN` | ||
Run locally: - | ||
```shell | ||
npm run release:npm | ||
``` | ||
Run in CI: See workflow file. | ||
## Publish app on Expo | ||
## Setup Expo publishing | ||
- Set the following environment variables. | ||
- `EXPO_USER` | ||
- `EXPO_PASS` | ||
Run locally: | ||
```shell | ||
npm run release:expo | ||
``` | ||
Run in CI: See workflow file. |
15977
213