PluralKit/.github/workflows/rust.yml

57 lines
1.8 KiB
YAML

# todo: use https://github.com/jpribyl/action-docker-layer-caching
# todo: make this generic for all Rust images in this repo
# todo: don't use docker/build-push-action
# todo: run builds on pull request
name: Build and push API Docker image
on:
push:
branches:
- main
- 'rust-api'
paths:
- 'lib/pklib/**'
- 'services/api/**'
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
packages: write
if: github.repository == 'PluralKit/PluralKit'
steps:
- uses: docker/login-action@v1
if: ${{ !env.ACT }}
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.CR_PAT }}
- uses: actions/checkout@v2
- uses: docker/setup-buildx-action@v1
# main docker build
- 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.rust
push: false
cache-from: type=gha
cache-to: type=gha
outputs: .docker-bin
# add more binaries here
- run: |
for binary in "api"; do
for tag in latest ${{ env.BRANCH_NAME }} ${{ github.sha }}; do
cat Dockerfile.bin | sed "s/__BINARY__/$binary/g" | docker build -t ghcr.io/pluralkit/$binary/$tag -f - .
done
if [ "${{ github.repository }}" == "PluralKit/PluralKit" ]; then
docker push ghcr.io/pluralkit/$binary:${{ env.BRANCH_NAME }}
docker push ghcr.io/pluralkit/$binary:${{ github.sha }}
[ "${{ env.BRANCH_NAME }}" == "main" ] && docker push ghcr.io/pluralkit/$binary:latest
fi
done