Better code flow - tools

Better code flow - tools

Code Quality

SonarCloud: sonarcloud.io

SonarCloud is invented to check Code Quality & Code Security. Free for open source projects.

Show:

  • Bugs
  • Vulnerabilities
  • Hotspots Reviewed
  • Code Smells
  • Duplications

image.png

It also gives tips on how to eliminate a warning it finds:

image.png

Pull requests are automatically checked by SonarCloud:

image.png

You can add the badges to Github README and don't have to leave Github to look at the stats and by clicking on it we will be taken to the right place.

image.png

Deploy Previews:

Automatic deploy preview from pull request: docs.netlify.com/site-deploys/deploy-previews

image.png

Github actions

Build docker image and push to dockerhub with github actions

# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2

      - name: Log in to Docker Hub
        uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
        with:
          images: nodeimageprocessing/linode-docker-api

      - name: Build and push Docker image
        uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

Run command on your server via ssh:

#...
update_ssh_linode:
    name: Telling Linode Server to Update,
    needs: "push_to_registry"
    runs-on: ubuntu-latest
    steps:
    - name: executing remote ssh commands using password
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: bash pull-docker-api.sh