ci/cd: add Dockerfile and GH builds
This commit is contained in:
		
							parent
							
								
									b69115caaa
								
							
						
					
					
						commit
						a66a11abe6
					
				
							
								
								
									
										9
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								.dockerignore
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
/**
 | 
			
		||||
!/cmd
 | 
			
		||||
!/config
 | 
			
		||||
!/event
 | 
			
		||||
!/internal
 | 
			
		||||
!/lookup
 | 
			
		||||
!/LICENSE
 | 
			
		||||
!/go.*
 | 
			
		||||
!/.env.example
 | 
			
		||||
							
								
								
									
										56
									
								
								.github/workflows/docker.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/docker.yaml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,56 @@
 | 
			
		||||
name: release
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    tags:
 | 
			
		||||
      - "v*"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  docker:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Set up QEMU
 | 
			
		||||
        uses: docker/setup-qemu-action@v2
 | 
			
		||||
 | 
			
		||||
      - name: Set up Docker Buildx
 | 
			
		||||
        uses: docker/setup-buildx-action@v2
 | 
			
		||||
 | 
			
		||||
      - name: Check out repo
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
        with:
 | 
			
		||||
          fetch-depth: 0
 | 
			
		||||
 | 
			
		||||
      - name: Cache Docker layers
 | 
			
		||||
        uses: actions/cache@v3
 | 
			
		||||
        with:
 | 
			
		||||
          path: /tmp/.buildx-cache
 | 
			
		||||
          key: ${{ runner.os }}-buildx-${{ github.sha }}
 | 
			
		||||
          restore-keys: |
 | 
			
		||||
            ${{ runner.os }}-buildx-            
 | 
			
		||||
 | 
			
		||||
      - name: Login to GHCR Docker registry
 | 
			
		||||
        uses: docker/login-action@v1
 | 
			
		||||
        with:
 | 
			
		||||
          registry: ghcr.io
 | 
			
		||||
          username: ${{ github.repository_owner }}
 | 
			
		||||
          password: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
 | 
			
		||||
      - name: Set outputs
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "RELEASE_TAG=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV \
 | 
			
		||||
          && echo "RELEASE_SHORT_COMMIT=$(git rev-parse --short HEAD)" >> $GITHUB_ENV          
 | 
			
		||||
 | 
			
		||||
      - name: Build and push image
 | 
			
		||||
        uses: docker/build-push-action@v2
 | 
			
		||||
        with:
 | 
			
		||||
          context: ./
 | 
			
		||||
          file: ./Dockerfile
 | 
			
		||||
          platforms: linux/amd64
 | 
			
		||||
          push: true
 | 
			
		||||
          build-args: |
 | 
			
		||||
            BUILD=${{ env.RELEASE_SHORT_COMMIT }}            
 | 
			
		||||
          cache-from: type=local,src=/tmp/.buildx-cache
 | 
			
		||||
          cache-to: type=local,dest=/tmp/.buildx-cache
 | 
			
		||||
          tags: |
 | 
			
		||||
            ghcr.io/grassrootseconomics/sarafu-vise-events:latest
 | 
			
		||||
            ghcr.io/grassrootseconomics/sarafu-vise-events:${{ env.RELEASE_TAG }}            
 | 
			
		||||
							
								
								
									
										38
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
			
		||||
FROM golang:1.23.4-bookworm AS build
 | 
			
		||||
 | 
			
		||||
ENV CGO_ENABLED=1
 | 
			
		||||
 | 
			
		||||
ARG BUILDPLATFORM
 | 
			
		||||
ARG TARGETPLATFORM
 | 
			
		||||
ARG BUILD=dev
 | 
			
		||||
 | 
			
		||||
WORKDIR /build
 | 
			
		||||
COPY . .
 | 
			
		||||
RUN apt-get update && apt-get install -y --no-install-recommends \
 | 
			
		||||
    libgdbm-dev \
 | 
			
		||||
    git \
 | 
			
		||||
    && rm -rf /var/lib/apt/lists/*
 | 
			
		||||
 | 
			
		||||
WORKDIR /build
 | 
			
		||||
RUN echo "Building on $BUILDPLATFORM, building for $TARGETPLATFORM"
 | 
			
		||||
RUN go mod download
 | 
			
		||||
RUN go build -tags logtrace -o sarafu-vise-events -ldflags="-X main.build=${BUILD} -s -w" cmd/main.go
 | 
			
		||||
 | 
			
		||||
FROM debian:bookworm-slim
 | 
			
		||||
 | 
			
		||||
ENV DEBIAN_FRONTEND=noninteractive
 | 
			
		||||
 | 
			
		||||
RUN apt-get update && apt-get install -y --no-install-recommends \
 | 
			
		||||
    libgdbm-dev \
 | 
			
		||||
    ca-certificates \
 | 
			
		||||
    && apt-get clean \
 | 
			
		||||
    && rm -rf /var/lib/apt/lists/*
 | 
			
		||||
 | 
			
		||||
WORKDIR /service
 | 
			
		||||
 | 
			
		||||
COPY --from=build /build/sarafu-vise-events .
 | 
			
		||||
COPY --from=build /build/LICENSE .
 | 
			
		||||
COPY --from=build /build/.env.example .
 | 
			
		||||
RUN mv .env.example .env
 | 
			
		||||
 | 
			
		||||
CMD ["./sarafu-vise-events"]
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user