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