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