Skip to content

Merge pull request #2953 from objectcomputing/feature-2946/support-cu… #245

Merge pull request #2953 from objectcomputing/feature-2946/support-cu…

Merge pull request #2953 from objectcomputing/feature-2946/support-cu… #245

name: Gradle Build & Deploy - Native - Develop
on:
push:
branches:
- 'develop'
env:
HUSKY: 0
PROJECT_NUMBER: ${{ secrets.PROJECT_NUM }}
PROJECT_ID: ${{ secrets.PROJECT_ID }}
PROJECT_NAME: ${{ secrets.PROJECT_NAME }}
RUN_REGION: us-central1
SERVICE_NAME: checkins-develop-native
TARGET_URL: https://checkins-develop-native.objectcomputing.com
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Node Stable
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Set up GraalVM 21
uses: graalvm/[email protected]
with:
distribution: 'graalvm'
java-version: '21'
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run tests with Gradle
run: ./gradlew nativeTest
deploy:
permissions:
contents: 'read'
id-token: 'write'
runs-on: ubuntu-latest
environment:
name: Development - Native
url: ${{ env.TARGET_URL }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up Node LTS
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Set up GraalVM 21
uses: graalvm/[email protected]
with:
distribution: 'graalvm'
java-version: '21'
- name: Cache Gradle packages
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- id: 'auth'
uses: 'google-github-actions/auth@v2'
with:
project_id: ${{ secrets.PROJECT_ID }}
workload_identity_provider: 'projects/${{secrets.PROJECT_NUM}}/locations/global/workloadIdentityPools/github-wif-pool/providers/github-provider'
service_account: '${{secrets.AUTOMATION_SERVICE_ACCOUNT}}'
- id: 'secrets'
uses: 'google-github-actions/get-secretmanager-secrets@v2'
with:
secrets: |-
cloud_db_connection_name:${{secrets.PROJECT_NUM}}/CLOUD_DB_CONNECTION_NAME
connector_id:${{secrets.PROJECT_NUM}}/CONNECTOR_ID
- name: 'Set up Cloud SDK'
uses: google-github-actions/setup-gcloud@v2
with:
version: '>= 363.0.0'
- name: 'Auth Configure Docker'
run: |-
gcloud --quiet auth configure-docker
- name: Build a native docker image
run: ./gradlew dockerBuildNative
env:
VITE_APP_API_URL: ${{ env.TARGET_URL }}
- name: Push the Docker image to Google Container Registry
run: |-
cd server
docker push "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA"
- name: Deploy image to Cloud Run
run: |-
gcloud run deploy "$SERVICE_NAME" \
--quiet \
--project "$PROJECT_ID" \
--region "$RUN_REGION" \
--image "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" \
--memory 1Gi \
--add-cloudsql-instances ${{steps.secrets.outputs.cloud_db_connection_name }} \
--vpc-connector ${{steps.secrets.outputs.connector_id}} \
--set-secrets "CLOUD_DB_CONNECTION_NAME=CLOUD_DB_CONNECTION_NAME:latest" \
--set-secrets "DB_NAME=DB_NAME:latest" \
--set-secrets "DATASOURCES_DEFAULT_PASSWORD=DATASOURCES_DEFAULT_PASSWORD:latest" \
--set-secrets "DATASOURCES_DEFAULT_USERNAME=DATASOURCES_DEFAULT_USERNAME:latest" \
--set-secrets "AES_KEY=AES_KEY:latest" \
--set-secrets "OAUTH_CLIENT_ID=OAUTH_CLIENT_ID:latest" \
--set-secrets "OAUTH_CLIENT_SECRET=OAUTH_CLIENT_SECRET:latest" \
--set-secrets "GSUITE_SUPER_ADMIN=GSUITE_SUPER_ADMIN:latest" \
--set-secrets "SERVICE_ACCOUNT_CREDENTIALS=SERVICE_ACCOUNT_CREDENTIALS:latest" \
--set-secrets "WEB_ADDRESS=NATIVE_WEB_ADDRESS:latest" \
--set-secrets "MICRONAUT_ENVIRONMENTS=MICRONAUT_ENVIRONMENTS:latest" \
--set-secrets "SLACK_WEBHOOK_URL=SLACK_WEBHOOK_URL:latest" \
--set-secrets "SLACK_BOT_TOKEN=SLACK_BOT_TOKEN:latest" \
--set-secrets "SLACK_SIGNING_SECRET=SLACK_SIGNING_SECRET:latest" \
--set-secrets "SLACK_KUDOS_CHANNEL_ID=SLACK_KUDOS_CHANNEL_ID:latest" \
--platform "managed" \
--max-instances 2 \
--allow-unauthenticated