Skip to content

Commit 9f839e4

Browse files
authored
Merge pull request #456 from grails/create-prev-snapshot-github-workflow
Add prev-snapshot GCP deploy workflow
2 parents d224d1b + dd9d0a4 commit 9f839e4

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
name: "Prev Snapshot GCP Deploy"
2+
on:
3+
workflow_dispatch:
4+
jobs:
5+
build:
6+
name: "Build Project"
7+
runs-on: ubuntu-latest
8+
steps:
9+
- name: "📥 Checkout repository"
10+
uses: actions/checkout@v4
11+
- name: "☕️ Setup JDK"
12+
uses: actions/setup-java@v4
13+
with:
14+
distribution: 'liberica'
15+
java-version: '11'
16+
- name: "🐘 Setup Gradle"
17+
uses: gradle/actions/setup-gradle@v4
18+
with:
19+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
20+
- name: "🔨 Run Build"
21+
id: build
22+
env:
23+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
24+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
25+
run: ./gradlew build
26+
deploy:
27+
name: "Deploy To Google Cloud Run"
28+
runs-on: ubuntu-latest
29+
needs: [build]
30+
env:
31+
IMAGE_NAME: gcr.io/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.GCP_APP_NAME }}:prev-snapshot
32+
steps:
33+
- name: "🔑 Login"
34+
uses: google-github-actions/setup-gcloud@v0
35+
with:
36+
project_id: ${{ secrets.GCP_PROJECT_ID }}
37+
service_account_email: ${{ secrets.GCP_EMAIL }}
38+
service_account_key: ${{ secrets.GCP_CREDENTIALS }}
39+
- name: "🐋 Configure Docker"
40+
run: gcloud auth configure-docker --quiet
41+
- name: "📥 Checkout repository"
42+
uses: actions/checkout@v4
43+
- name: "☕️ Setup JDK"
44+
uses: actions/setup-java@v4
45+
with:
46+
distribution: 'liberica'
47+
java-version: '11'
48+
- name: "🐘 Setup Gradle"
49+
uses: gradle/actions/setup-gradle@v4
50+
with:
51+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
52+
- name: "✅ Run Tests"
53+
env:
54+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
55+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
56+
run: >
57+
./gradlew
58+
grails-forge-api:test
59+
grails-forge-web-netty:test
60+
- name: "🔨 Build Docker image"
61+
# To deploy native executables built with GraalVM replace dockerBuild with dockerBuildNative and dockerPush with dockerPushNative. First, try that it works locally.
62+
env:
63+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
64+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
65+
run: >
66+
./gradlew
67+
grails-forge-web-netty:dockerBuildNative
68+
-PdockerImageName=${{ env.IMAGE_NAME }}
69+
- name: "📤 Push image to Google Cloud Container Registry"
70+
env:
71+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
72+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
73+
run: >
74+
./gradlew
75+
grails-forge-web-netty:dockerPushNative
76+
-PdockerImageName=${{ env.IMAGE_NAME }}
77+
- name: "🚀 Deploy Docker image"
78+
run: >
79+
gcloud run deploy ${{ secrets.GCP_PROJECT_ID }}-prev-snapshot
80+
--image $IMAGE_NAME
81+
--region us-central1
82+
--update-env-vars=HOSTNAME="prev-snapshot.grails.org",CORS_ALLOWED_ORIGIN="https://start.grails.org",GITHUB_OAUTH_APP_CLIENT_ID=${{ secrets.GH_OAUTH_SNAPSHOT_CLIENT_ID }},GITHUB_OAUTH_APP_CLIENT_SECRET=${{ secrets.GH_OAUTH_SNAPSHOT_CLIENT_SECRET }},GITHUB_USER_AGENT=${{ secrets.GH_USER_AGENT }},GITHUB_REDIRECT_URL=${{ secrets.GH_REDIRECT_URL }}
83+
--platform managed
84+
--allow-unauthenticated
85+
--service-account=${{ secrets.GCLOUD_EMAIL }}
86+
deployAnalytics:
87+
name: "Deploy Analytics To Google Cloud Run"
88+
runs-on: ubuntu-latest
89+
needs: [build]
90+
env:
91+
IMAGE_NAME: gcr.io/${{ secrets.GCP_PROJECT_ID }}/${{ secrets.GCP_APP_NAME }}-analytics:prev-snapshot
92+
steps:
93+
- name: "🔑 Login"
94+
uses: google-github-actions/setup-gcloud@v0
95+
with:
96+
project_id: ${{ secrets.GCP_PROJECT_ID }}
97+
service_account_email: ${{ secrets.GCP_EMAIL }}
98+
service_account_key: ${{ secrets.GCP_CREDENTIALS }}
99+
- name: "🐋 Configure Docker"
100+
run: gcloud auth configure-docker --quiet
101+
- name: "📥 Checkout repository"
102+
uses: actions/checkout@v4
103+
- name: "☕️ Setup JDK"
104+
uses: actions/setup-java@v4
105+
with:
106+
distribution: 'liberica'
107+
java-version: '11'
108+
- name: "🐘 Setup Gradle"
109+
uses: gradle/actions/setup-gradle@v4
110+
with:
111+
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }}
112+
- name: "✅ Run Tests"
113+
env:
114+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
115+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
116+
run: ./gradlew grails-forge-analytics-postgres:test
117+
- name: "🔨 Build Docker image"
118+
# To deploy native executables built with GraalVM replace dockerBuild with dockerBuildNative and dockerPush with dockerPushNative. First, try that it works locally.
119+
env:
120+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
121+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
122+
run: >
123+
./gradlew
124+
grails-forge-analytics-postgres:dockerBuildNative
125+
-PdockerImageName=${{ env.IMAGE_NAME }}
126+
- name: "📤 Push image to Google Cloud Container Registry"
127+
env:
128+
DEVELOCITY_BUILD_CACHE_NODE_USER: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_USER }}
129+
DEVELOCITY_BUILD_CACHE_NODE_KEY: ${{ secrets.GRADLE_ENTERPRISE_BUILD_CACHE_NODE_KEY }}
130+
run: >
131+
./gradlew
132+
grails-forge-analytics-postgres:dockerPushNative
133+
-PdockerImageName=${{ env.IMAGE_NAME }}
134+
- name: "🚀 Deploy Docker image"
135+
run: |
136+
gcloud components install beta --quiet
137+
gcloud run deploy ${{ secrets.GCP_PROJECT_ID }}-analytics-prev-snapshot --image $IMAGE_NAME --region us-central1 --platform managed --allow-unauthenticated --service-account=${{ secrets.GCLOUD_EMAIL }}

0 commit comments

Comments
 (0)