feat(gateway): add Dockerfile and GH Actions build script

This commit is contained in:
spiral 2022-04-19 16:19:31 -04:00
parent a5af6793f8
commit 5d24e86a7e
No known key found for this signature in database
GPG Key ID: 244A11E4B0BCF40E
3 changed files with 57 additions and 1 deletions

View File

@ -3,6 +3,7 @@
# Include project code and build files
!PluralKit.*/
!gateway/
!Myriad/
!PluralKit.sln
!nuget.config
@ -13,3 +14,4 @@
# Re-exclude host build artifact directories
**/bin
**/obj
**/target

35
.github/workflows/gateway.yml vendored Normal file
View File

@ -0,0 +1,35 @@
name: Build gateway Docker image
on:
push:
branches: [main]
paths:
- 'gateway/'
- 'proto/'
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
packages: write
if: github.repository == 'xSke/PluralKit'
steps:
- uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.CR_PAT }}
- uses: actions/checkout@v2
- run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
- uses: docker/build-push-action@v2
with:
# https://github.com/docker/build-push-action/issues/378
context: .
file: Dockerfile.gateway
push: true
tags: |
ghcr.io/pluralkit/gateway:${{ env.BRANCH_NAME }}
ghcr.io/pluralkit/gateway:${{ github.sha }}
ghcr.io/pluralkit/gateway:latest
cache-from: type=registry,ref=ghcr.io/pluralkit/gateway:${{ env.BRANCH_NAME }}
cache-to: type=inline

19
Dockerfile.gateway Normal file
View File

@ -0,0 +1,19 @@
# twilight requires newer rustc than what is in alpine:latest
FROM alpine:edge AS builder
RUN apk add cargo
# Precache crates.io index
RUN cargo search >/dev/null
WORKDIR /build
COPY proto/ /build/proto
COPY gateway/ /build/gateway
RUN (cd gateway && cargo build --release)
FROM alpine:latest
COPY --from=builder /build/gateway/target/release/pluralkit /opt/gateway
ENTRYPOINT ["/opt/gateway"]