Testing to check fargate redeploy 4 aka (1.1.4) #17
This file contains 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: Docker Image CI | |
on: | |
push: | |
branches: [ "main" ] | |
tags: | |
- 'v*' | |
jobs: | |
build-and-push: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Log in to Docker Hub | |
uses: docker/[email protected] | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Extract version from tag | |
id: get-version | |
run: | | |
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then | |
VERSION=${GITHUB_REF##*/} | |
else | |
echo "This workflow requires a valid tag (e.g., v0.1.0) to run." | |
exit 1 | |
fi | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
- name: Build Docker image | |
run: docker build -t noahh99/hermes:latest . | |
- name: Tag Docker image with version | |
run: | | |
docker tag noahh99/hermes:latest noahh99/hermes:${{ env.VERSION }} | |
- name: Push Docker images | |
run: | | |
docker push noahh99/hermes:latest | |
docker push noahh99/hermes:${{ env.VERSION }} | |
redeploy: | |
runs-on: ubuntu-latest | |
needs: build-and-push | |
steps: | |
- name: Configure AWS Credentials | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-region: ${{ secrets.AWS_REGION }} | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
- name: List Running Tasks | |
id: list-tasks | |
run: | | |
TASKS=$(aws ecs list-tasks \ | |
--cluster ${{ secrets.AWS_CLUSTER_NAME }} \ | |
--service-name ${{ secrets.AWS_SERVICE_NAME }} \ | |
--query "taskArns[]" \ | |
--output text) | |
echo "TASKS=$TASKS" | |
echo "tasks=$TASKS" >> $GITHUB_ENV | |
- name: Stop Running Tasks | |
if: env.tasks | |
run: | | |
for TASK in $tasks; do | |
echo "Stopping task $TASK..." | |
aws ecs stop-task \ | |
--cluster ${{ secrets.AWS_CLUSTER_NAME }} \ | |
--task $TASK | |
done | |
- name: Restart ECS Service | |
run: | | |
aws ecs update-service \ | |
--cluster ${{ secrets.AWS_CLUSTER_NAME }} \ | |
--service ${{ secrets.AWS_SERVICE_NAME }} \ | |
--force-new-deployment |