1
+ name : Push To Canary
2
+
3
+ on :
4
+ push :
5
+ # branches:
6
+ # - 'main'
7
+
8
+ concurrency :
9
+ group : ${{ github.workflow }}-${{ github.ref }}
10
+ cancel-in-progress : true
11
+
12
+ env :
13
+ AWS_REGION : ${{secrets.AWS_REGION}}
14
+ AWS_APP_REPOSITORY : ${{secrets.APP_REPOSITORY}}
15
+ AWS_FRONTEND_REPOSITORY : ${{secrets.FRONTEND_REPOSITORY}}
16
+ AWS_ACCOUNT_ID : ${{secrets.AWS_ACCOUNT_ID}}
17
+ GCP_REGION : us-west1
18
+ GCP_PROJECT_ID : canary-443022
19
+ GAR_QUICKSTART_REPOSITORY : us-west1-docker.pkg.dev/canary-443022/canary-images/quickstart
20
+
21
+ jobs :
22
+ Push-To-ECR :
23
+ runs-on : ubuntu-latest
24
+
25
+ permissions :
26
+ id-token : write
27
+ contents : read
28
+
29
+ steps :
30
+ - uses : actions/checkout@v4
31
+
32
+ - name : Set up QEMU
33
+ uses : docker/setup-qemu-action@v3
34
+
35
+ - name : Setup JDK
36
+ uses : actions/setup-java@v4
37
+ with :
38
+ distribution : corretto
39
+ java-version : 17
40
+
41
+ - name : Install Thrift
42
+ env :
43
+ THRIFT_VERSION : 0.21.0
44
+ run : |
45
+ sudo apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config && \
46
+ curl -LSs https://archive.apache.org/dist/thrift/${{env.THRIFT_VERSION}}/thrift-${{env.THRIFT_VERSION}}.tar.gz -o thrift-${{env.THRIFT_VERSION}}.tar.gz && \
47
+ tar -xzf thrift-${{env.THRIFT_VERSION}}.tar.gz && \
48
+ cd thrift-${{env.THRIFT_VERSION}} && \
49
+ sudo ./configure --without-python --without-cpp --without-nodejs --without-java --disable-debug --disable-tests --disable-libs && \
50
+ sudo make && \
51
+ sudo make install && \
52
+ cd .. && \
53
+ sudo rm -rf thrift-${{env.THRIFT_VERSION}} thrift-${{env.THRIFT_VERSION}}.tar.gz
54
+
55
+
56
+ - name : Build SBT Project
57
+ id : sbt-dist
58
+ run : |
59
+ sbt clean && sbt assembly
60
+ sbt dist
61
+ sbt "project frontend" buildFrontend
62
+
63
+ - name : Build AWS Quickstart Image
64
+ id : build-aws-app
65
+ shell : bash
66
+ env :
67
+ USER : root
68
+ SPARK_SUBMIT_PATH : spark-submit
69
+ PYTHONPATH : /srv/chronon
70
+ SPARK_VERSION : 3.1.1
71
+ JOB_MODE : local[*]
72
+ PARALLELISM : 2
73
+ EXECUTOR_MEMORY : 2G
74
+ EXECUTOR_CORES : 4
75
+ DRIVER_MEMORY : 1G
76
+ CHRONON_LOG_TABLE : default.chronon_log_table
77
+ CHRONON_ONLINE_CLASS : ai.chronon.integrations.aws.AwsApiImpl
78
+ AWS_DEFAULT_REGION : ${{env.AWS_REGION}}
79
+ DYNAMO_ENDPOINT : https://dynamodb.${{env.AWS_REGION}}.amazonaws.com
80
+ JAVA_OPTS : " -Xms1g -Xmx1g"
81
+ CLOUD_AWS_JAR : /app/cli/cloud_aws.jar
82
+ run :
83
+ docker build "." -f "./Dockerfile" -t "aws-quickstart-image:latest"
84
+
85
+ - name : Build GCP Quickstart Image
86
+ id : build-gcp-app
87
+ shell : bash
88
+ env :
89
+ USER : root
90
+ SPARK_SUBMIT_PATH : spark-submit
91
+ PYTHONPATH : /srv/chronon
92
+ SPARK_VERSION : 3.1.1
93
+ JOB_MODE : local[*]
94
+ PARALLELISM : 2
95
+ EXECUTOR_MEMORY : 2G
96
+ EXECUTOR_CORES : 4
97
+ DRIVER_MEMORY : 1G
98
+ CHRONON_LOG_TABLE : default.chronon_log_table
99
+ CHRONON_ONLINE_CLASS : ai.chronon.integrations.cloud_gcp.GcpApiImpl
100
+ GCP_DEFAULT_REGION : ${{env.GCP_REGION}}
101
+ BIGTABLE_ENDPOINT : https://${{env.GCP_REGION}}-bigtable.googleapis.com
102
+ JAVA_OPTS : " -Xms1g -Xmx1g"
103
+ CLOUD_GCP_JAR : /app/cli/cloud_gcp.jar
104
+ run :
105
+ docker build "." -f "./Dockerfile" -t "gcp-quickstart-image:latest"
106
+
107
+ - name : Configure AWS Credentials
108
+ uses : aws-actions/configure-aws-credentials@v4
109
+ with :
110
+ role-to-assume : arn:aws:iam::${{env.AWS_ACCOUNT_ID}}:role/github-canary-updater
111
+ aws-region : ${{env.AWS_REGION}}
112
+
113
+
114
+ - name : Login to Amazon ECR
115
+ id : login-ecr
116
+ uses : aws-actions/amazon-ecr-login@v2
117
+ with :
118
+ registries : ${{env.AWS_ACCOUNT_ID}}
119
+
120
+ - name : Tag, and push quickstart image to Amazon ECR
121
+ env :
122
+ ECR_REPOSITORY : ${{steps.login-ecr.outputs.registry}}/${{env.AWS_QUICKSTART_REPOSITORY}}
123
+ IMAGE_TAG : canary
124
+ shell : bash
125
+ run : |
126
+ docker tag "aws-quickstart-image:latest" "${{env.ECR_REPOSITORY}}:$IMAGE_TAG"
127
+ docker push "${{env.ECR_REPOSITORY}}:$IMAGE_TAG"
128
+ docker tag "${{env.ECR_REPOSITORY}}:$IMAGE_TAG" "${{env.ECR_REPOSITORY}}:${{github.sha}}"
129
+ docker push "${{env.ECR_REPOSITORY}}:${{github.sha}}"
130
+ echo "IMAGE $IMAGE_TAG is pushed to ${{env.ECR_REPOSITORY}}"
131
+ echo "image_tag=$IMAGE_TAG"
132
+ echo "full_image=${{env.ECR_REPOSITORY}}:$IMAGE_TAG"
133
+
134
+ - name : Configure GCP Credentials
135
+ uses : google-github-actions/auth@v2
136
+ with :
137
+ project_id : ${{env.GCP_PROJECT_ID}}
138
+ workload_identity_provider : projects/703996152583/locations/global/workloadIdentityPools/github-actions/providers/github
139
+ service_account :
[email protected]
140
+
141
+ - name : Set up Google Cloud SDK
142
+ uses : google-github-actions/setup-gcloud@v2
143
+
144
+ - name : Google Cloud Docker Auth
145
+ shell : bash
146
+ run : |-
147
+ gcloud auth configure-docker ${{env.GCP_REGION}}-docker.pkg.dev --quiet
148
+
149
+ - name : Push Quickstart to Artifact Registry
150
+ shell : bash
151
+ env :
152
+ IMAGE_TAG : canary
153
+ run : |
154
+ docker tag "gcp-quickstart-image:latest" "${{env.GAR_QUICKSTART_REPOSITORY}}:$IMAGE_TAG"
155
+ docker push "${{env.GAR_QUICKSTART_REPOSITORY}}:$IMAGE_TAG"
156
+ docker tag "${{env.GAR_QUICKSTART_REPOSITORY}}:$IMAGE_TAG" "${{env.GAR_QUICKSTART_REPOSITORY}}:${{github.sha}}"
157
+ docker push "${{env.GAR_QUICKSTART_REPOSITORY}}:${{github.sha}}"
158
+ echo "IMAGE $IMAGE_TAG is pushed to ${{env.GAR_QUICKSTART_REPOSITORY}}"
159
+ echo "image_tag=$IMAGE_TAG"
160
+ echo "full_image=${{env.GAR_QUICKSTART_REPOSITORY}}:$IMAGE_TAG"
0 commit comments