@@ -14,8 +14,8 @@ permissions:
1414 contents : write
1515
1616jobs :
17- build :
18- name : Build
17+ build-amd64 :
18+ name : Build AMD64
1919 runs-on : ubuntu-latest
2020 steps :
2121 # Checkout the repo for building
@@ -44,29 +44,113 @@ jobs:
4444 # Copy built binary to output directory
4545 - name : Copy binary to output
4646 run : |
47- cp target/lambda/docbox-http-lambda/bootstrap.zip docbox-http-lambda.zip
48- cp target/lambda/docbox-presigned-cleanup-lambda/bootstrap.zip docbox-presigned-cleanup-lambda.zip
47+ cp target/lambda/docbox-http-lambda/bootstrap.zip docbox-http-lambda-amd64 .zip
48+ cp target/lambda/docbox-presigned-cleanup-lambda/bootstrap.zip docbox-presigned-cleanup-lambda-amd64 .zip
4949 cp target/lambda/docbox-upload-completion-lambda/bootstrap.zip docbox-upload-completion-lambda.zip
5050 shell : bash
5151
52+ # Build the docker layers
53+ - name : Build poppler layer
54+ run : ./layers/make-poppler-layer-amd64.sh
55+
56+ # Merge processing lambda with poppler layer
57+ # (Required for processing pdf files)
58+ - name : Merge processing layers
59+ run : |
60+ mkdir /tmp/processing-lambda
61+ unzip docbox-upload-completion-lambda.zip -d /tmp/processing-lambda
62+ unzip poppler-lambda-layer.zip -d /tmp/processing-lambda
63+ zip -r docbox-upload-completion-lambda-amd64.zip /tmp/processing-lambda
64+ mv /tmp/docbox-upload-completion-lambda-amd64.zip
65+ shell : bash
66+
5267 # Upload the built artifacts
5368 - name : Upload docbox-http-lambda.zip
5469 uses : actions/upload-artifact@v4
5570 with :
56- name : docbox-http-lambda.zip
57- path : docbox-http-lambda.zip
71+ name : docbox-http-lambda-amd64.zip
72+ path : docbox-http-lambda-amd64.zip
73+
74+ - name : Upload docbox-presigned-cleanup-lambda-amd64.zip
75+ uses : actions/upload-artifact@v4
76+ with :
77+ name : docbox-presigned-cleanup-lambda-amd64.zip
78+ path : docbox-presigned-cleanup-lambda-amd64.zip
79+
80+ - name : Upload docbox-upload-completion-lambda-amd64.zip
81+ uses : actions/upload-artifact@v4
82+ with :
83+ name : docbox-upload-completion-lambda-amd64.zip
84+ path : docbox-upload-completion-lambda-amd64.zip
85+
86+ build :
87+ name : Build ARM64
88+ runs-on : ubuntu-latest
89+ steps :
90+ # Checkout the repo for building
91+ - uses : actions/checkout@v4
92+
93+ # Setup rust for building the service
94+ - name : Set up Rust
95+ uses : dtolnay/rust-toolchain@stable
96+ with :
97+ toolchain : stable
98+ targets : ${{ matrix.target }}
99+ override : true
100+
101+ # Install zig for cargo lambda
102+ - name : Install zig
103+ run : pip3 install ziglang
104+
105+ # Install cargo lambda
106+ - name : Install cargo-lambda
107+ run : curl -fsSL https://cargo-lambda.info/install.sh | sh
108+
109+ # Compile the lambda binaries
110+ - name : Build lambda binaries
111+ run : cargo lambda build --output-format zip --arm64 --release
112+
113+ # Copy built binary to output directory
114+ - name : Copy binary to output
115+ run : |
116+ cp target/lambda/docbox-http-lambda/bootstrap.zip docbox-http-lambda-arm64.zip
117+ cp target/lambda/docbox-presigned-cleanup-lambda/bootstrap.zip docbox-presigned-cleanup-lambda-arm64.zip
118+ cp target/lambda/docbox-upload-completion-lambda/bootstrap.zip docbox-upload-completion-lambda.zip
119+ shell : bash
120+
121+ # Build the docker layers
122+ - name : Build poppler layer
123+ run : ./layers/make-poppler-layer-arm64sh
124+
125+ # Merge processing lambda with poppler layer
126+ # (Required for processing pdf files)
127+ - name : Merge processing layers
128+ run : |
129+ mkdir /tmp/processing-lambda
130+ unzip docbox-upload-completion-lambda.zip -d /tmp/processing-lambda
131+ unzip poppler-lambda-layer.zip -d /tmp/processing-lambda
132+ zip -r docbox-upload-completion-lambda-arm64.zip /tmp/processing-lambda
133+ mv /tmp/docbox-upload-completion-lambda-arm64.zip
134+ shell : bash
135+
136+ # Upload the built artifacts
137+ - name : Upload docbox-http-lambda-arm64.zip
138+ uses : actions/upload-artifact@v4
139+ with :
140+ name : docbox-http-lambda-arm64.zip
141+ path : docbox-http-lambda-arm64.zip
58142
59- - name : Upload docbox-presigned-cleanup-lambda.zip
143+ - name : Upload docbox-presigned-cleanup-lambda-arm64 .zip
60144 uses : actions/upload-artifact@v4
61145 with :
62- name : docbox-presigned-cleanup-lambda.zip
63- path : docbox-presigned-cleanup-lambda.zip
146+ name : docbox-presigned-cleanup-lambda-arm64 .zip
147+ path : docbox-presigned-cleanup-lambda-arm64 .zip
64148
65- - name : Upload docbox-upload-completion-lambda.zip
149+ - name : Upload docbox-upload-completion-lambda-arm64 .zip
66150 uses : actions/upload-artifact@v4
67151 with :
68- name : docbox-upload-completion-lambda.zip
69- path : docbox-upload-completion-lambda.zip
152+ name : docbox-upload-completion-lambda-arm64 .zip
153+ path : docbox-upload-completion-lambda-arm64 .zip
70154
71155 release :
72156 name : Create Release
0 commit comments