Skip to content

Deploy Ontology Annotation Network Rest #25

Deploy Ontology Annotation Network Rest

Deploy Ontology Annotation Network Rest #25

name: Deploy Ontology Annotation Network Rest
on:
workflow_dispatch:
env:
GCLOUD_PROJECT_ID: ${{ secrets.GCLOUD_PROJECT_ID }}
GCLOUD_REGION: us-east1
GCLOUD_GCR: us-docker.pkg.dev
GCLOUD_REGISTRY_PROJECT_ID: ${{ secrets.GCLOUD_REGISTRY_PROJECT_ID }}
GCLOUD_REGISTRY_IMAGE_ENV: docker
GCLOUD_REGISTRY_IMAGE_PROJECT: ontology
SERVICE_NAME: ontology-annotation-network-rest
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: 17
distribution: temurin
- name: Authenticate to Google Cloud
uses: 'google-github-actions/auth@v1'
with:
credentials_json: '${{ secrets.GCLOUD_SA_KEY }}'
- name: Setup Google Cloud CLI
uses: 'google-github-actions/setup-gcloud@v1'
- name: Get project version
run: |
echo "PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
- name: Set our docker image name
run: |
echo "DOCKER_IMAGE=$GCLOUD_GCR/$GCLOUD_REGISTRY_PROJECT_ID/$GCLOUD_REGISTRY_IMAGE_ENV/$GCLOUD_REGISTRY_IMAGE_PROJECT/$SERVICE_NAME" >> $GITHUB_ENV
- name: Maven Package Rest Only
run: mvn package -pl oan-rest -am
- name: Docker Login
run: |
gcloud auth configure-docker "${GCLOUD_GCR}"
- name: Build And Push Docker Image
env:
TESTCONTAINERS_RYUK_DISABLED: true
run: |
echo "$DOCKER_IMAGE"
cd oan-rest/
docker build . --build-arg="VERSION_ARG=${PROJECT_VERSION}" --build-arg="MICRONAUT_ENV_ARG=prod" --tag="${DOCKER_IMAGE}:${PROJECT_VERSION}"
docker push "${DOCKER_IMAGE}:${PROJECT_VERSION}"
- name: Tag Artifact Registry
run: |
gcloud artifacts docker tags add "${DOCKER_IMAGE}:${PROJECT_VERSION}" "${DOCKER_IMAGE}:latest"
- name: Deploy Cloud Run
run: |
DOCKER_IMAGE_REPOSITORY=$(docker images --format "{{.Repository}}" | grep ontology-annotation-network)
DOCK_IMAGE_DEPLOY=$(docker images --format "{{.Repository}}:{{.Tag}}" "${DOCKER_IMAGE_REPOSITORY}" )
gcloud run deploy $SERVICE_NAME --quiet \
--image "${DOCK_IMAGE_DEPLOY}" --project "${GCLOUD_PROJECT_ID}" \
--region "${GCLOUD_REGION}" --platform managed --allow-unauthenticated --format json \
--memory 4Gi --cpu 2 --min-instances 1 --max-instances 5 --no-cpu-throttling --ingress internal-and-cloud-load-balancing --service-account "${GCLOUD_SERVICE_ACCOUNT}"