+52
.github/workflows/container-rainbow-aws.yaml
+52
.github/workflows/container-rainbow-aws.yaml
···
1
+
name: container-rainbow-aws
2
+
on: [push]
3
+
env:
4
+
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
5
+
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
6
+
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
7
+
# github.repository as <account>/<repo>
8
+
IMAGE_NAME: rainbow
9
+
10
+
jobs:
11
+
container-rainbow-aws:
12
+
if: github.repository == 'bluesky-social/indigo'
13
+
runs-on: ubuntu-latest
14
+
permissions:
15
+
contents: read
16
+
packages: write
17
+
id-token: write
18
+
19
+
steps:
20
+
- name: Checkout repository
21
+
uses: actions/checkout@v3
22
+
23
+
- name: Setup Docker buildx
24
+
uses: docker/setup-buildx-action@v1
25
+
26
+
- name: Log into registry ${{ env.REGISTRY }}
27
+
uses: docker/login-action@v2
28
+
with:
29
+
registry: ${{ env.REGISTRY }}
30
+
username: ${{ env.USERNAME }}
31
+
password: ${{ env.PASSWORD }}
32
+
33
+
- name: Extract Docker metadata
34
+
id: meta
35
+
uses: docker/metadata-action@v4
36
+
with:
37
+
images: |
38
+
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
39
+
tags: |
40
+
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
41
+
42
+
- name: Build and push Docker image
43
+
id: build-and-push
44
+
uses: docker/build-push-action@v4
45
+
with:
46
+
context: .
47
+
file: ./cmd/rainbow/Dockerfile
48
+
push: ${{ github.event_name != 'pull_request' }}
49
+
tags: ${{ steps.meta.outputs.tags }}
50
+
labels: ${{ steps.meta.outputs.labels }}
51
+
cache-from: type=gha
52
+
cache-to: type=gha,mode=max
+43
cmd/rainbow/Dockerfile
+43
cmd/rainbow/Dockerfile
···
1
+
FROM golang:1.22-bullseye AS build-env
2
+
3
+
ENV DEBIAN_FRONTEND=noninteractive
4
+
ENV TZ=Etc/UTC
5
+
ENV GODEBUG="netdns=go"
6
+
ENV GOOS="linux"
7
+
ENV GOARCH="amd64"
8
+
ENV CGO_ENABLED="1"
9
+
10
+
WORKDIR /usr/src/rainbow
11
+
12
+
COPY . .
13
+
14
+
RUN go mod download && \
15
+
go mod verify
16
+
17
+
RUN go build \
18
+
-v \
19
+
-trimpath \
20
+
-tags timetzdata \
21
+
-o /rainbow-bin \
22
+
./cmd/rainbow
23
+
24
+
FROM debian:bullseye-slim
25
+
26
+
ENV DEBIAN_FRONTEND="noninteractive"
27
+
ENV TZ=Etc/UTC
28
+
ENV GODEBUG="netdns=go"
29
+
30
+
RUN apt-get update && apt-get install --yes \
31
+
dumb-init \
32
+
ca-certificates \
33
+
runit
34
+
35
+
WORKDIR /rainbow
36
+
COPY --from=build-env /rainbow-bin /usr/bin/rainbow
37
+
38
+
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
39
+
CMD ["/usr/bin/rainbow"]
40
+
41
+
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/indigo
42
+
LABEL org.opencontainers.image.description="bsky.app rainbow"
43
+
LABEL org.opencontainers.image.licenses=MIT