Skip to content

Updates to deploy workflow #33

Updates to deploy workflow

Updates to deploy workflow #33

name: Gradle Build & Deploy - Develop
on:
push:
branches:
# - 'develop'
- 'feature-2486/create-new-pipeline-for-updated-env'
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
TARGET_URL: https://checkins-develop.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 Temurin 21
uses: actions/setup-java@v4
with:
distribution: 'temurin'
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 check
deploy:
permissions:
contents: 'read'
id-token: 'write'
runs-on: ubuntu-latest
environment:
name: DEV-POC
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 Temurin 21
uses: actions/setup-java@v4
with:
distribution: 'temurin' # See 'Supported distributions' for available options
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/832140020593/locations/global/workloadIdentityPools/github/providers/my-repo'
- id: 'secrets'
uses: 'google-github-actions/get-secretmanager-secrets@v2'
with:
secrets: |-
cloud_run_address:${{secrets.PROJECT_NUM}}/CLOUD_RUN_ADDRESS
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 the Docker image
run: |-
./gradlew assemble
cd server
docker build --tag "gcr.io/$PROJECT_ID/$SERVICE_NAME:$GITHUB_SHA" .
env:
VITE_APP_API_URL: ${{ env.TARGET_URL }}
- name: Push the Docker image to Google Container Registry
run: 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=CLOUD_RUN_ADDRESS:latest" \
--set-secrets "MICRONAUT_ENVIRONMENTS=MICRONAUT_ENVIRONMENTS:latest" \
--set-env-vars "SLACK_WEBHOOK_URL=${{ secrets.SLACK_WEBHOOK_URL }}" \
--set-env-vars "SLACK_BOT_TOKEN=${{ secrets.SLACK_BOT_TOKEN }}" \
--set-env-vars "SLACK_SIGNING_SECRET=${{ secrets.SLACK_PULSE_SIGNING_SECRET }}" \
--set-env-vars "SLACK_KUDOS_CHANNEL_ID=${{ secrets.SLACK_KUDOS_CHANNEL_ID }}" \
--platform "managed" \
--max-instances 2 \
--allow-unauthenticated