Merge pull request #1 from CirclesUBI/feature/dockerfile

Add Dockerfile and build workflow
This commit is contained in:
jon r 2023-02-06 19:55:42 +01:00 committed by GitHub
commit d4989bacd4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 132 additions and 0 deletions

102
.github/workflows/build-and-push.yml vendored Normal file
View file

@ -0,0 +1,102 @@
name: Build and push image
on:
workflow_call:
inputs:
image:
description: "The desired name of the image to build"
default: 'pathfinder2'
required: false
type: string
workflow_dispatch:
inputs:
image:
description: "The desired name of the image to build"
default: 'pathfinder2'
required: false
type: string
jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
packages: write
steps:
-
name: Checkout repository
uses: actions/checkout@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
with:
driver-opts: |
image=moby/buildkit:v0.10.6
-
name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ vars.GC_REGISTRY }}/${{ vars.GC_PROJECT_ID }}/${{ inputs.image }}
docker.io/${{ vars.DH_ORGANIZATION }}/${{ inputs.image }}
ghcr.io/${{ github.repository_owner }}/${{ inputs.image }}
labels: |
org.opencontainers.image.title=${{ inputs.image }}
org.opencontainers.image.vendor=CirclesUBI
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=semver,pattern={{version}}
{{ tag }}
{{ base_ref }}
{{ branch }}
type=sha,prefix={{branch}}-
{{ sha }}
-
name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v1
with:
workload_identity_provider: "${{ vars.GC_WLI_PROVIDER }}"
service_account: "${{ vars.GC_WLI_SA }}"
token_format: 'access_token'
-
name: Login to Google Cloud Container Registry
uses: docker/login-action@v2
with:
registry: ${{ vars.GC_REGISTRY }}
username: 'oauth2accesstoken'
password: '${{ steps.auth.outputs.access_token }}'
-
name: Login to Docker Hub Registry
uses: docker/login-action@v2
with:
registry: docker.io
username: ${{ vars.DH_USERNAME }}
password: ${{ secrets.DH_TOKEN }}
-
name: Login to GitHub Packages Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push Container image
uses: docker/build-push-action@v3
with:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

15
.github/workflows/dev.yml vendored Normal file
View file

@ -0,0 +1,15 @@
name: Build and push the dev image
on:
push:
branches: [ feature/dockerfile ]
jobs:
call-build-and-push:
name: Trigger container build and push
permissions:
contents: read
id-token: write
packages: write
uses: ./.github/workflows/build-and-push.yml
secrets: inherit

15
Dockerfile Normal file
View file

@ -0,0 +1,15 @@
FROM rust:latest AS build
WORKDIR /build
COPY . .
RUN cargo install --path .
RUN cargo build --release
FROM rust AS app
WORKDIR /app
COPY --from=build /build/target/release .
RUN chmod +x ./server
ENTRYPOINT ["./server"]