Skip to content

update

update #27

Workflow file for this run

# This workflow will build and push a new container image to Amazon ECR,
# and then will deploy a new task definition to Amazon ECS, when there is a push to the "main" branch.
#
# To use this workflow, you will need to complete the following set-up steps:
#
# 1. Create an ECR repository to store your images.
# For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`.
# Replace the value of the `ECR_REPOSITORY` environment variable in the workflow below with your repository's name.
# Replace the value of the `AWS_REGION` environment variable in the workflow below with your repository's region.
#
# 2. Create an ECS task definition, an ECS cluster, and an ECS service.
# For example, follow the Getting Started guide on the ECS console:
# https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun
# Replace the value of the `ECS_SERVICE` environment variable in the workflow below with the name you set for the Amazon ECS service.
# Replace the value of the `ECS_CLUSTER` environment variable in the workflow below with the name you set for the cluster.
#
# 3. Store your ECS task definition as a JSON file in your repository.
# The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`.
# Replace the value of the `ECS_TASK_DEFINITION` environment variable in the workflow below with the path to the JSON file.
# Replace the value of the `CONTAINER_NAME` environment variable in the workflow below with the name of the container
# in the `containerDefinitions` section of the task definition.
#
# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`.
# See the documentation for each action used below for the recommended IAM policies for this IAM user,
# and best practices on handling the access key credentials.
name: Deploy to AWS
on:
push:
branches:
- main
# env:
# APP_NAME: BuddiesBackend
# APP_EXECUTABLE: BuddiesBackend
# REPOSITORY_URL: [email protected]:SwiftBuddiesTR/swift-buddies-backend.git
# REPOSITORY_NAME: swift-buddies-backend
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to EC2
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.AWS_HOST }}
username: ${{ secrets.AWS_USERNAME }}
key: ${{ secrets.AWS_KEY }}
script: |
echo "APP_NAME is ${{ vars.APP_NAME }}"
echo "REPOSITORY_URL is ${{ vars.REPOSITORY_URL }}"
echo "Username is ${{ secrets.AWS_USERNAME }}"
echo "REPOSITORY_NAME is ${{ vars.REPOSITORY_NAME }}"
export APP_NAME=${{ vars.APP_NAME }}
export APP_EXECUTABLE=${{ vars.APP_EXECUTABLE }}
export REPOSITORY_NAME=${{ vars.REPOSITORY_NAME }}
export REPOSITORY_URL=${{ vars.REPOSITORY_URL }}
export AWS_HOST=${{ secrets.AWS_HOST }}
export AWS_USERNAME=${{ secrets.AWS_USERNAME }}
export MONGODB_URI=${{ secrets.MONGODB_URI }}
export SECRET_KEY=${{ secrets.SECRET_KEY }}
cd /home/${{ secrets.AWS_USERNAME }}
if [ ! -d "${{ vars.APP_NAME }}" ]; then
echo "Pulling changes from repository"
cd ${{ vars.REPOSITORY_NAME }}
git restore .
git pull
echo "Pull finished"
else
echo "Cloning repository"
git clone ${{ vars.REPOSITORY_URL }}
echo "Clone finished"
fi
chmod +x /home/${{ secrets.AWS_USERNAME }}/${{ vars.REPOSITORY_NAME }}/deploy.sh
/home/${{ secrets.AWS_USERNAME }}/${{ vars.REPOSITORY_NAME }}/deploy.sh