Skip to content

initial

initial #1

Workflow file for this run

name: Prod - TALENTPLUG-MAIL-APP
on:
# push:
# branches:
# - prod
jobs:
cloud_build-local_docker:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Make production envfile
uses: SpicyPizza/create-envfile@v2.0
with:
envkey_PORT: ${{ vars.ENVKEY_PORT }}
envkey_API_URL: ${{ vars.API_URL_PROD }} #Full api-core email endpoint here
envkey_INITIAL_REFRESH_TOKEN: ${{ vars.INITIAL_REFRESH_TOKEN }}
envkey_INITIAL_BEARER_TOKEN: ${{ vars.INITIAL_BEARER_TOKEN }}
envkey_INITIAL_GOOGLE_CREDENTIALS: ${{ vars.INITIAL_GOOGLE_CREDENTIALS }}
envkey_MAKEFILE_OVERWRITE_DOCKERNAME: ${{ vars.MAKEFILE_OVERWRITE_DOCKERNAME }}
sort_keys: false
file_name: .env.local
- name: Set environment variable
run: echo "CI=false" >> $GITHUB_ENV
- name: Check version
run: make version
- name: Build the docker image
run: make composebuild-prod
- name: Display image_id variable
run: make print_image_id
- name: Compress the image.tar
run: make save_image_as_tar
- name: Set Docker image name & PORT number
run: |
export FOLDER_NAME=$(make echo_foldername)
echo "FOLDER_NAME=$FOLDER_NAME" >> $GITHUB_ENV
export DOCKER_IMAGE_NAME=$(make echo_docker_image_name)
echo "DOCKER_IMAGE_NAME=$DOCKER_IMAGE_NAME" >> $GITHUB_ENV
#export APPLICATION_PORT=3001 # manual port switch
export APPLICATION_PORT=$(grep '^PORT=' .env.local | cut -d= -f2 | tr -d '\n')
echo "APPLICATION_PORT=$APPLICATION_PORT" >> $GITHUB_ENV
- name: Check files
run: ls -a
- name: SCP file to server
uses: appleboy/scp-action@v0.1.4
with:
host: ${{ secrets.REMOTE_HOST_PROD }}
username: ${{ secrets.REMOTE_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.REMOTE_PORT }}
source: "${{ env.DOCKER_IMAGE_NAME }}.tar.gz,Makefile"
target: ./${{ env.FOLDER_NAME }}/ # Target is based on the host:username login path. Will create non-existant folders.
- name: Setup SSH and deploy
uses: appleboy/ssh-action@v1.0.0
with:
host: ${{secrets.REMOTE_HOST_PROD}}
username: ${{secrets.REMOTE_USERNAME}}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.REMOTE_PORT }}
script: |
cd ${{ env.FOLDER_NAME }}
ls
#
# Prepare stop & delete
# Docker
make stop_matching_containers
make delete_matching_images
#
# Prepare stop & delete
# Volume
# CAREFUL SUDO SU
#
# Dockerfile
if command -v pigz &> /dev/null
then
unpigz -f "${{ env.DOCKER_IMAGE_NAME }}.tar.gz"
else
gunzip -f "${{ env.DOCKER_IMAGE_NAME }}.tar.gz"
fi
#
# Load Docker
#
docker load -i ${{env.DOCKER_IMAGE_NAME}}.tar
make print_image_id
make run_container PORT=${{ env.APPLICATION_PORT }}
#
# Cleanup
#
#ls
rm ${{env.DOCKER_IMAGE_NAME}}.tar
rm Makefile
cd ..
# We're keeping the folder, because of the shared files
rmdir ${{env.FOLDER_NAME}}
- name: Print end of script message
run: echo "Good Morning... You have arrived at the end of the script 0.0/"