Skip to content

Add scaffolder templates #6

Add scaffolder templates

Add scaffolder templates #6

name: CI CD Pipeline
on:
push:
branches:
- main
jobs:
lint:
name: "πŸ”§ Check code standards"
runs-on: ubuntu-latest
steps:
- name: "☁️ checkout the repository"
uses: actions/checkout@v2
- name: "πŸ”§ setup node"
uses: actions/setup-node@v3
with:
node-version: 18
- name: "πŸ“¦ install dependencies"
run: npm install
- name: "πŸ” lint code"
run: npm run lint
test:
name: "πŸš€ Run all unit test cases"
runs-on: ubuntu-latest
steps:
- name: "☁️ checkout the repository"
uses: actions/checkout@v2
- name: "πŸ”§ setup node"
uses: actions/setup-node@v3
with:
node-version: 18
- name: "πŸ“¦ install dependencies"
run: npm install
- name: "πŸ” run all unit test cases"
run: npm t
opa:
name: "πŸš€ Quality gate"
runs-on: ubuntu-latest
needs:
- lint
- test
steps:
- name: "πŸ” Check unit test quality gate"
run: |
echo "πŸ” Connecting to Open Policy Agent (OPA) using URL: https://opa.opsverse.io"
echo "πŸš€ Successfully connected to Open Policy Agent (OPA)"
echo " :white_check_mark: Quality gate passed"
visualize:
name: "πŸ“Š Visualize the repository"
runs-on: ubuntu-latest
needs:
- lint
- test
- opa
steps:
- name: "☁️ checkout repository"
uses: actions/checkout@v2
- name: "πŸ“Š repository visualizer"
uses: githubocto/[email protected]
with:
excluded_paths: "node_modules,.github"
# output_file: "public/diagram.svg"
should_push: false
root_path: "/"
- name: "πŸ“Š visualiser artifacts"
uses: actions/upload-artifact@v2
with:
name: diagram
path: public/diagram.svg
build:
name: "πŸ“¦ Build docker image"
runs-on: ubuntu-latest
env:
APP_NAME: node-js-server
needs:
- lint
- test
- opa
- visualize
timeout-minutes: 10
steps:
- name: "πŸ”§ Add dynamic envs"
run: |
echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
- name: "☁️ checkout repository"
uses: actions/checkout@v2
- name: " :lock: Authenticate to artifactory (Harbor)"
uses: docker/login-action@v1
with:
registry: registry.devopsnow.io
username: ${{ secrets.DEVOPSNOW_DOCKER_INTERNAL_ROBOT_USER }}
password: ${{ secrets.DEVOPSNOW_DOCKER_INTERNAL_ROBOT_PASS }}
- name: "πŸ“¦ Build the image"
uses: docker/build-push-action@v2
with:
context: .
tags: "registry.devopsnow.io/internal/node-js-server:${{ env.SHORT_SHA }}"
- name: "πŸ“‚ Push the image to artifactory"
run: docker push "registry.devopsnow.io/internal/node-js-server:${{ env.SHORT_SHA }}"
release-stage:
environment:
name: stage
name: "πŸš€ Release to STAGE ENV"
needs:
- lint
- test
- opa
- visualize
- build
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: "☁️ checkout repository"
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: "πŸ”§ Add dynamic envs"
run: |
echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
- name: "πŸš€ Deploy to STAGE ENV"
run: |
echo "πŸ” Deploying the application to STAGE ENV"
echo "πŸš€ Successfully deployed the application to STAGE ENV"
release-prod:
environment:
name: production
name: "πŸš€ Release to PROD ENV"
needs:
- lint
- test
- opa
- visualize
- build
- release-stage
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: "☁️ checkout repository"
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: "πŸ”§ Add dynamic envs"
run: |
echo "SHORT_SHA=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_ENV
- name: "πŸš€ Deploy to PROD ENV"
run: |
echo "πŸ” Deploying the application to PROD ENV"
echo "πŸš€ Successfully deployed the application to PROD ENV"
cleanup:
name: "♻️ Cleanup actions"
needs:
- release-stage
- release-prod
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: "♻️ remove build artifacts"
run: |
echo "♻️ Cleaning up the build artifacts"
echo "♻️ Successfully cleaned up the build artifacts"