This file contains hidden or 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: 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/" | |