diff --git a/.github/workflows/build-and-deploy-dev.yml b/.github/workflows/build-and-deploy-dev.yml new file mode 100644 index 00000000..e2a523f5 --- /dev/null +++ b/.github/workflows/build-and-deploy-dev.yml @@ -0,0 +1,79 @@ +name: Build and Deploy Docker Image on Dev + +on: + push: + branches: + - dev-integrate + +permissions: + contents: read + +jobs: + build-and-push: + runs-on: ubuntu-24.04 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Create $ENTITY_API_VERSION + run: | + export ENTITY_API_VERSION=$(tr -d "\n\r" < ../VERSION | xargs) + echo "ENTITY_API_VERSION=$ENTITY_API_VERSION" >> $GITHUB_ENV + working-directory: ./docker + + - name: Make build script executable + run: chmod +x ./docker-development.sh + working-directory: ./docker + + - name: Run the Docker build shell script + run: ./docker-development.sh build + working-directory: ./docker + + - name: Tag the Docker Image + # Alternatively we could use ${{ github.sha }} instead of latest + run: docker image tag sennet/entity-api:$ENTITY_API_VERSION sennet/entity-api-dev:latest + working-directory: ./docker + + - name: Push the Docker image + run: docker push sennet/entity-api-dev:latest + working-directory: ./docker + + deploy: + runs-on: ubuntu-latest + needs: build-and-push + steps: + - name: Whitelist GitHub Actions IP + uses: bbharathkumarreddy/aws-whitelist-ip@v1.0 + with: + security-group-id: sg-0ddfcbe0a83a5266c + action: whitelist + port: 22 + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Deploy to Server via SSH + uses: appleboy/ssh-action@v1 + with: + host: '${{ secrets.REMOTE_HOST }}' + username: ${{ secrets.REMOTE_USER }} + key: ${{ secrets.SSH_PRIVATE_KEY }} + use_insecure_cipher: true + script: | + # Change to codcc user on server + sudo su - codcc -c "cd /opt/sennet/entity-api/docker/; git pull; docker pull sennet/entity-api-dev:latest; ./docker-development.sh down; ./docker-development.sh start;" + - name: Remove GitHub Actions IP + uses: bbharathkumarreddy/aws-whitelist-ip@v1.0 + if: always() + with: + security-group-id: sg-0ddfcbe0a83a5266c + action: remove + port: 22 + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 \ No newline at end of file diff --git a/docker/docker-compose.deployment.dev.yml b/docker/docker-compose.deployment.dev.yml new file mode 100644 index 00000000..0f645cae --- /dev/null +++ b/docker/docker-compose.deployment.dev.yml @@ -0,0 +1,4 @@ +services: + entity-api: + # Use the published image and tag from DockerHub + image: sennet/entity-api-dev:latest diff --git a/docker/docker-development.sh b/docker/docker-development.sh index ec46f0c6..b75e1e50 100755 --- a/docker/docker-development.sh +++ b/docker/docker-development.sh @@ -108,7 +108,7 @@ else docker compose -f docker-compose.yml -f docker-compose.development.yml -p entity-api build elif [ "$1" = "start" ]; then - docker compose -f docker-compose.yml -f docker-compose.development.yml -p entity-api up -d + docker compose -f docker-compose.yml -f docker-compose.deployment.dev.yml -p entity-api up -d elif [ "$1" = "stop" ]; then docker compose -f docker-compose.yml -f docker-compose.development.yml -p entity-api stop elif [ "$1" = "down" ]; then