updated the called workflow with secrets #97
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: NodeJs Application Workflow | ||
env: | ||
MONGO_URI: 'mongodb+srv://supercluster.d83jj.mongodb.net/superData' | ||
MONGO_USERNAME: ${{ vars.MONGO_USERNAME }} | ||
MONGO_PASSWORD: ${{ secrets.MONGO_PASSWORD }} | ||
on: | ||
push: | ||
branches: | ||
- main | ||
- 'feature/*' | ||
jobs: | ||
unit-testing: | ||
name: Unit Testing | ||
services: | ||
mongo-db: | ||
image: siddharth67/mongo-db:non-prod | ||
ports: | ||
- 27017:27017 | ||
env: | ||
MONGO_URI: 'mongodb://localhost:27017/superData' | ||
MONGO_USERNAME: non-prod-user | ||
MONGO_PASSWORD: non-prod-password | ||
strategy: | ||
matrix: | ||
nodejs-versions: [18, 20] | ||
operating-systems: [ubuntu-latest] | ||
exclude: | ||
- nodejs-versions: 18 | ||
operating-systems: macos-latest | ||
runs-on: ${{ matrix.operating-systems }} | ||
steps: | ||
- name: Checkout Repositroy | ||
uses: actions/checkout@v4 | ||
- name: Setup the NodeJS Versions - ${{ matrix.nodejs-versions }} | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: ${{ matrix.nodejs-versions }} | ||
- name: Cache Dependencies # Added new Dependencies | ||
uses: actions/cache@v3 # Updated Version | ||
with: | ||
path: node_modules | ||
key: ${{ runner.os }}--node_modules-${{ hashFiles('package-lock.json') }} | ||
- name: Install Dependencies | ||
run: npm install | ||
- name: Unit Testing | ||
id: nodejs-unit-testing | ||
run: npm test | ||
- name : Storing the Test Results | ||
if: always() | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: mocha-test-report | ||
path: test-results.xml | ||
code-coverage: | ||
name: Code Coverage | ||
container: | ||
image: node:18 | ||
services: | ||
mongodb: | ||
image: siddharth67/mongo-db:non-prod | ||
options: | ||
--name mongo | ||
env: | ||
MONGO_URI: 'mongodb://mongo:27017/superData' | ||
MONGO_USERNAME: non-prod-user | ||
MONGO_PASSWORD: non-prod-password | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout Repository | ||
uses: actions/checkout@v4 | ||
# - name: Setup the NodeJS Versions - 18 | ||
# uses: actions/setup-node@v4 | ||
# with: | ||
# node-version: 18 | ||
- name: Cache Dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: node_modules | ||
key: ${{ runner.os }}--node_modules-${{ hashFiles('package-lock.json') }} # Added Cache | ||
- name: Install Dependencies | ||
run: npm install | ||
- name: Code Coverage | ||
continue-on-error: true | ||
run: npm run coverage | ||
- name : Storing the Test Results | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: nyc-istanbul-report | ||
path: coverage | ||
retention-days: 5 | ||
docker: | ||
needs: [unit-testing, code-coverage] | ||
name: Containerization | ||
permissions: | ||
packages: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Docker Login | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ vars.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
- name: GHCR Login | ||
uses: docker/[email protected] | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Docker Build Test | ||
uses: docker/build-push-action@v6 | ||
with: | ||
context: . | ||
push: false | ||
tags: ${{ vars.DOCKER_USERNAME }}/solar-system:${{ github.sha }} | ||
- name: Docker Image Test | ||
run: | | ||
docker images | ||
docker run --name solar-system-app -d \ | ||
-p 3000:3000 \ | ||
-e MONGO_USERNAME=$MONGO_USERNAME \ | ||
-e MONGO_PASSWORD=$MONGO_PASSWORD \ | ||
${{ vars.DOCKER_USERNAME }}/solar-system:${{ github.sha }} | ||
export IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' solar-system-app) | ||
echo $IP | ||
echo Testing the Image URL using wget | ||
wget -q -O - 127.0.0.1:3000/live | grep live | ||
- name: Container Registry Push | ||
uses: docker/build-push-action@v6 | ||
with: | ||
context: . | ||
push: true | ||
tags: | | ||
${{ vars.DOCKER_USERNAME }}/solar-system:${{ github.sha }} | ||
ghcr.io/${{ github.repository_owner }}/solar-system:${{ github.sha }} | ||
dev-deploy: | ||
if: contains(github.ref, 'feature/') | ||
name: Deploying Application to the Development Env Production | ||
needs: docker | ||
uses: ./.github/workflows/reuse-deployments.yml | ||
secrets: | ||
k8s-kubeconfig: ${{ secrets.KUBECONFIG }} | ||
mongodb-password: ${{ secrets.MONGO_PASSWORD }} | ||
dev-integration-testing: | ||
if: contains(github.ref, 'feature/') | ||
name: Dev Integration testing | ||
needs: dev-deploy | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name : Test URL Output Using CURL and JQ | ||
env: | ||
URL: ${{ needs.dev-deploy.outputs.APP_INGRESS_URL }} | ||
run: | | ||
echo $URL | ||
echo "--------------------------" | ||
curl https://$URL/live -s -k | jq -r .status | grep -i live | ||
continue-on-error: true | ||
prod-deploy: | ||
if: github.ref == 'refs/heads/master' | ||
name: Deploying Application to the Production Env | ||
needs: docker | ||
uses: ./.github/workflows/reuse-deployments.yml | ||
Check failure on line 192 in .github/workflows/solar-system.yml GitHub Actions / NodeJs Application WorkflowInvalid workflow file
|
||
production-integration-testing: | ||
if: github.ref == 'refs/heads/master' | ||
name: Production Integration testing | ||
needs: prod-deploy | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name : Test URL Output Using CURL and JQ | ||
env: | ||
URL: ${{ needs.prod-deploy.outputs.APP_INGRESS_URL }} | ||
run: | | ||
echo $URL | ||
echo "--------------------------" | ||
curl https://$URL/live -s -k | jq -r .status | grep -i live | ||
continue-on-error: true |