Skip to content

Deploy_prod

Deploy_prod #20

Workflow file for this run

---
name: Deploy_prod
on:
workflow_dispatch:
inputs:
job_environment:
type: choice
description: 'Job environment prod or dev'
required: true
default: 'prod'
options:
- prod
pull_request:
branches:
- main
types:
- closed
env:
path_bot: bot_code
path_nomad: nomad_code
image_name: tgbot
repo: ghcr.io
dbport: 5432
job_environment: prod
jobs:
Checkout_repos:
runs-on:
- self-hosted
steps:
- name: Clean old Docker images
run: docker system prune -a -f
- name: Checkout current repo
uses: actions/checkout@v3
Build_docker_image:
needs: [Checkout_repos]
runs-on:
- self-hosted
steps:
- name: Cleanup Docker elements
run: docker system prune -a --volumes --force
- name: Debug
run: ls -la
- name: Build Docker image
uses: mr-smithers-excellent/[email protected]
with:
image: ${{env.image_name}}
tags: $GITHUB_RUN_NUMBER
registry: ghcr.io
dockerfile: Dockerfile
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Check image by Anchore
run: |
grype ${{ env.repo }}/${{ secrets.DOCKER_USERNAME }}/${{ env.image_name }}:$GITHUB_RUN_NUMBER
Render_template:
needs: [Build_docker_image]
runs-on:
- self-hosted
steps:
- name: Terraform fmt
id: fmt
run: terraform fmt -check
continue-on-error: true
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Validate
id: validate
run: terraform validate -no-color
env:
TF_VAR_DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TF_VAR_DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
TF_VAR_IMAGE_NAME: ${{env.image_name}}
TF_VAR_REPO: ${{env.repo}}
TF_VAR_VERSION: $GITHUB_RUN_NUMBER
TF_VAR_JOB_ENV: '${{ env.job_environment }}'
TF_VAR_DB_PORT: ${{env.dbport}}
- name: Terraform Plan
id: plan
run: terraform plan -no-color
continue-on-error: true
env:
TF_VAR_DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TF_VAR_DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
TF_VAR_IMAGE_NAME: ${{env.image_name}}
TF_VAR_REPO: ${{env.repo}}
TF_VAR_VERSION: $GITHUB_RUN_NUMBER
TF_VAR_JOB_ENV: '${{ env.job_environment }}'
TF_VAR_DB_PORT: ${{env.dbport}}
- name: Terraform Apply
id: apply
run: terraform apply -auto-approve -var VERSION=$GITHUB_RUN_NUMBER
continue-on-error: true
env:
TF_VAR_DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
TF_VAR_DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
TF_VAR_IMAGE_NAME: ${{env.image_name}}
TF_VAR_REPO: ${{env.repo}}
TF_VAR_JOB_ENV: '${{ env.job_environment }}'
TF_VAR_VERSION: $GITHUB_RUN_NUMBER
TF_VAR_DB_PORT: ${{env.dbport}}
Run_nomad:
needs: [Render_template]
runs-on:
- self-hosted
steps:
- name: Nomad_validate
run: nomad job validate bot.nomad
- name: Nomad_Plan
id: nomad_plan
run: |
nomad job plan -no-color bot.nomad | tee /dev/stderr | grep 'Job Modify Index:' | awk -F': ' '{ print $2 }'
- name: Save_job_index
run: |
echo "index1=$(nomad job plan -no-color bot.nomad | grep 'Job Modify Index:' | awk -F': ' '{ print $2 }')" >> $GITHUB_ENV
- name: Nomad_run
id: nomad_run
run: nomad job run -check-index "${{ env.index1 }}" bot.nomad