fix ci: docker build

This commit is contained in:
Joseph Chris 2024-12-25 17:53:53 +00:00
parent af88766124
commit 3a62b84c52
No known key found for this signature in database
4 changed files with 35 additions and 17 deletions

@ -28,29 +28,29 @@ jobs:
with:
version: v1.60
- name: Build
run: make -j8 all && tree dist
run: make -j8 all && tree bin
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: dist
name: builds-${{ github.sha }}
path: |
dist/**/*.zip
dist/**/*.tar.gz
dist/**/*.sha256sum
bin/*.zip
bin/*.tar.gz
bin/*.sha256sum
- name: Upload Release Asset
if: startsWith(github.ref, 'refs/tags/')
run: |
gh release create ${GIT_TAG} $(find dist/ -name "*.zip*" -o -name "*.tar.gz*")
gh release create ${GIT_TAG} bin/*.zip bin/*.tar.gz bin/*.sha256sum
env:
GIT_TAG: ${{ github.ref_name }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
- uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5
- uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
- uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355
with:
context: .
file: ./Dockerfile

2
.gitignore vendored

@ -1,3 +1,3 @@
.DS_Store
logs/
dist/
bin/

13
Dockerfile Normal file

@ -0,0 +1,13 @@
FROM --platform=$BUILDPLATFORM alpine:3.21 AS builder
RUN apk add --no-cache tzdata ca-certificates
FROM alpine:3.21
ARG TARGETPLATFORM
COPY bin/arch/${TARGETPLATFORM}/ai-agent-web /app/ai-agent-web
COPY agents /app/agents
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /usr/share/ca-certificates /usr/share/ca-certificates
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
WORKDIR /app
EXPOSE 7120
CMD ["/app/ai-agent-web"]

@ -1,5 +1,7 @@
#!/usr/bin/env make -f
DIST_DIRECTORY = ./dist
AGENTS_DIR = agents
DIST_DIRECTORY = ./bin
DIST_APPNAME = ai-agent
DIST_EXENAME = ai-agent-web
BUILDINFO_CLASS = codelab/ai-agent/internal/conf
BUILDINFO_VERSION := $(shell git describe --tags 2>/dev/null || echo "git/$(shell git rev-parse --short HEAD 2>/dev/null || echo 'none')")
@ -51,16 +53,19 @@ clean:
all: clean install $(CROSS_BUILD_TRIPLES)
$(CROSS_BUILD_TRIPLES): GOOS = $(word 1,$(subst /, ,$@))
$(CROSS_BUILD_TRIPLES): GOARCH = $(word 2,$(subst /, ,$@))
$(CROSS_BUILD_TRIPLES): CROSS_DIST_DIRECTORY = $(DIST_DIRECTORY)/release/$@
$(CROSS_BUILD_TRIPLES): CROSS_DIST_DIRNAME = $(DIST_APPNAME)-$(subst /,.,$(BUILDINFO_VERSION)-$(GOOS)-$(GOARCH))
$(CROSS_BUILD_TRIPLES): CROSS_DIST_EXENAME = $(DIST_EXENAME)$(if $(filter $(GOOS),windows),.exe,)
$(CROSS_BUILD_TRIPLES): CROSS_DIST_ARCNAME = $(DIST_EXENAME)-$(subst /,.,$(BUILDINFO_VERSION)-$(GOOS)-$(GOARCH)).$(if $(filter $(GOOS),windows),zip,tar.gz)
$(CROSS_BUILD_TRIPLES): CROSS_DIST_ARCNAME = $(CROSS_DIST_DIRNAME).$(if $(filter $(GOOS),windows),zip,tar.gz)
$(CROSS_BUILD_TRIPLES):
$(MAKE) build GOOS=$(GOOS) GOARCH=$(GOARCH) \
DIST_DIRECTORY=$(CROSS_DIST_DIRECTORY)/bin \
DIST_DIRECTORY=$(DIST_DIRECTORY)/$(CROSS_DIST_DIRNAME) \
DIST_EXENAME=$(CROSS_DIST_EXENAME) && \
cp -r $(AGENTS_DIR) $(DIST_DIRECTORY)/$(CROSS_DIST_DIRNAME)/ && \
mkdir -p $(DIST_DIRECTORY)/arch/$(GOOS)/$(GOARCH) && \
cp $(DIST_DIRECTORY)/$(CROSS_DIST_DIRNAME)/$(CROSS_DIST_EXENAME) $(DIST_DIRECTORY)/arch/$(GOOS)/$(GOARCH)/$(CROSS_DIST_EXENAME) && \
if [ "$(GOOS)" = "windows" ]; then \
zip -j $(CROSS_DIST_DIRECTORY)/$(CROSS_DIST_ARCNAME) $(CROSS_DIST_DIRECTORY)/bin/$(CROSS_DIST_EXENAME); \
cd $(DIST_DIRECTORY) && zip -r $(CROSS_DIST_ARCNAME) $(CROSS_DIST_DIRNAME) && cd -; \
else \
tar -cvzf $(CROSS_DIST_DIRECTORY)/$(CROSS_DIST_ARCNAME) -C $(CROSS_DIST_DIRECTORY)/bin $(CROSS_DIST_EXENAME); \
tar -cvzf $(DIST_DIRECTORY)/$(CROSS_DIST_ARCNAME) -C $(DIST_DIRECTORY) $(CROSS_DIST_DIRNAME); \
fi && \
sh -c "cd $(CROSS_DIST_DIRECTORY) && sha256sum $(CROSS_DIST_ARCNAME) > $(CROSS_DIST_ARCNAME).sha256sum";
sh -c "cd $(DIST_DIRECTORY) && sha256sum $(CROSS_DIST_ARCNAME) > $(CROSS_DIST_ARCNAME).sha256sum";