hyerimmy 910bd902b1
Some checks failed
HealthSync Intelligence CI / build-and-push (push) Has been cancelled
feat : initial commit
2025-06-20 05:28:30 +00:00

167 lines
5.5 KiB
YAML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: HealthSync Intelligence CI
on:
push:
branches: [ main, develop ]
paths:
- '**/*.py'
- 'requirements.txt'
- 'Dockerfile'
- 'deployment/**'
- '.github/workflows/intelligence-ci.yml'
pull_request:
branches: [ main, develop ]
paths:
- '**/*.py'
- 'requirements.txt'
- 'Dockerfile'
- 'deployment/**'
workflow_dispatch:
inputs:
version:
description: '배포할 버전 (예: 1.2.3)'
required: false
type: string
env:
ACR_REGISTRY: acrhealthsync01.azurecr.io
TEAM_ID: team1tier
PYTHON_VERSION: '3.11'
MANIFEST_REPO: TeamOneTier/HealthSync_Manifest
MANIFEST_BRANCH: main
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Azure CLI
run: |
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
- name: Azure 로그인 (Azure Login 액션 사용)
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Show ACR Tags
run: |
az acr repository show-tags \
--name acrhealthsync01 \
--repository "${{ env.TEAM_ID }}/intelligence-service"
- name: Generate version
id: version
run: |
if [[ "$GITHUB_EVENT_NAME" == "workflow_dispatch" && -n "${{ github.event.inputs.version }}" ]]; then
VERSION="${{ github.event.inputs.version }}"
echo "🎯 Using manual version: $VERSION"
else
echo "🔍 Generating version automatically from ACR..."
REPO_NAME="${{ env.TEAM_ID }}/intelligence-service"
ACR_NAME="$(echo "${{ env.ACR_REGISTRY }}" | cut -d'.' -f1)"
if TAGS=$(az acr repository show-tags --name "$ACR_NAME" --repository "$REPO_NAME" --output tsv 2>/dev/null); then
if [[ -z "$TAGS" ]]; then
VERSION="1.0.0"
else
LATEST_VERSION=$(echo "$TAGS" | tr '\t' '\n' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -t. -k1,1n -k2,2n -k3,3n | tail -1)
if [[ -z "$LATEST_VERSION" ]]; then
VERSION="1.0.0"
else
MAJOR=$(echo "$LATEST_VERSION" | cut -d'.' -f1)
MINOR=$(echo "$LATEST_VERSION" | cut -d'.' -f2)
PATCH=$(echo "$LATEST_VERSION" | cut -d'.' -f3)
VERSION="$MAJOR.$MINOR.$((PATCH + 1))"
fi
fi
else
VERSION="1.0.0"
fi
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "🏷️ Final version for Intelligence: $VERSION"
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then
pip install -r requirements.txt
echo "✅ Python dependencies installed"
fi
- name: Login to ACR
run: |
echo ${{ secrets.ACR_PASSWORD }} | docker login ${{ env.ACR_REGISTRY }} \
--username ${{ secrets.ACR_USERNAME }} \
--password-stdin
- name: Build and Push Docker Image
run: |
IMAGE_TAG="${{ env.ACR_REGISTRY }}/${{ env.TEAM_ID }}/intelligence-service:${{ steps.version.outputs.version }}"
docker build \
--platform linux/amd64 \
--build-arg SERVICE_NAME=healthsync-intelligence \
--build-arg VERSION=${{ steps.version.outputs.version }} \
-t "$IMAGE_TAG" \
.
docker push "$IMAGE_TAG"
echo "✅ Pushed: $IMAGE_TAG"
- name: Checkout Manifest Repository
uses: actions/checkout@v4
with:
repository: ${{ env.MANIFEST_REPO }}
token: ${{ secrets.GIT_REPO_TOKEN }}
path: manifest-repo
- name: Update Manifest Deployment
run: |
cd manifest-repo
# Intelligence manifest 파일 경로 설정
MANIFEST_FILE="HealthSync_Intelligence/manifest/deployment/intelligence-service-deployment.yaml"
if [ ! -f "$MANIFEST_FILE" ]; then
echo "❌ Manifest file not found: $MANIFEST_FILE"
exit 1
fi
# 새로운 이미지 태그
NEW_IMAGE="${{ env.ACR_REGISTRY }}/${{ env.TEAM_ID }}/intelligence-service:${{ steps.version.outputs.version }}"
echo "🔄 Updating $MANIFEST_FILE with new image: $NEW_IMAGE"
# sed를 사용하여 image 태그 업데이트
sed -i "s|image: ${{ env.ACR_REGISTRY }}/${{ env.TEAM_ID }}/intelligence-service:.*|image: $NEW_IMAGE|g" "$MANIFEST_FILE"
echo "✅ Updated manifest file"
git diff "$MANIFEST_FILE"
- name: Commit and Push Manifest Changes
run: |
cd manifest-repo
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add .
git commit -m "🚀 Update intelligence-service image to ${{ steps.version.outputs.version }}" || {
echo " No changes to commit"
exit 0
}
git push origin ${{ env.MANIFEST_BRANCH }}
echo "✅ Manifest updated and pushed successfully"