diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 707e1a58..2bd1cd3d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: api-version: ${{ steps.build-image.outputs.api-version }} steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 @@ -116,7 +116,7 @@ jobs: api-version: ${{ steps.build-image.outputs.api-version }} steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: fetch-depth: 0 diff --git a/.github/workflows/xp.yml b/.github/workflows/xp.yml index 31986667..547f8ae9 100644 --- a/.github/workflows/xp.yml +++ b/.github/workflows/xp.yml @@ -34,7 +34,7 @@ jobs: env: PYTHON: 3.7 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Setup Python id: setup-python uses: actions/setup-python@v2 @@ -56,13 +56,13 @@ jobs: go-version: ${{ env.GO_VERSION }} - uses: actions/checkout@v3 - name: Lint Common module - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: version: ${{ env.GO_LINT_VERSION }} working-directory: common args: --timeout 3m --verbose --skip-files=testutils/mocks/ManagementClientInterface.go - name: Lint Management Service module - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: version: ${{ env.GO_LINT_VERSION }} working-directory: management-service @@ -70,7 +70,7 @@ jobs: skip-build-cache: true args: --timeout 3m --verbose - name: Lint Treatment Service module - uses: golangci/golangci-lint-action@v2 + uses: golangci/golangci-lint-action@v3 with: version: ${{ env.GO_LINT_VERSION }} working-directory: treatment-service @@ -221,7 +221,7 @@ jobs: outputs: release-type: ${{ steps.release-rules.outputs.release-type }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - id: release-rules uses: ./.github/actions/release-rules diff --git a/Dockerfile b/Dockerfile index 8badb14f..9af8a397 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,19 @@ +FROM golang:1.18-alpine as api-builder +ARG API_BIN_NAME=xp-management + +ENV GO111MODULE=on \ + GOOS=linux \ + GOARCH=amd64 + +WORKDIR /app +COPY . . + +# Build Management Service binary +WORKDIR /app/management-service +RUN go build \ + -mod=vendor \ + -o ./bin/${API_BIN_NAME} + FROM alpine:latest # Install bash @@ -19,8 +35,9 @@ RUN addgroup -S ${XP_USER_GROUP} \ && mkdir /app \ && chown -R ${XP_USER}:${XP_USER_GROUP} /app -COPY --chown=${XP_USER}:${XP_USER_GROUP} management-service/bin/* /app/ -COPY --chown=${XP_USER}:${XP_USER_GROUP} management-service/database /app/database/ +COPY --chown=${XP_USER}:${XP_USER_GROUP} management-service/bin/*.yaml /app/ +COPY --from=api-builder --chown=${XP_USER}:${XP_USER_GROUP} /app/management-service/bin/* /app/ +COPY --from=api-builder --chown=${XP_USER}:${XP_USER_GROUP} /app/management-service/database /app/database/ USER ${XP_USER} WORKDIR /app diff --git a/Makefile b/Makefile index e92a5248..d766321e 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,9 @@ lint: lint-python lint-go .PHONY: vendor vendor: @echo "Fetching dependencies..." - go mod vendor + cd common && go mod vendor + cd clients && go mod vendor + cd management-service && go mod vendor .PHONY: version version: @@ -171,7 +173,7 @@ build-treatment-service: version build: build-management-service build-treatment-service .PHONY: build-image -build-image: version +build-image: version vendor @$(eval IMAGE_TAG = $(if $(DOCKER_REGISTRY),$(DOCKER_REGISTRY)/,)${BIN_NAME}:${VERSION}) @echo "Building docker image: ${IMAGE_TAG}" docker build --tag ${IMAGE_TAG} . diff --git a/treatment-service/Dockerfile b/treatment-service/Dockerfile index 3b091866..b8f56e97 100644 --- a/treatment-service/Dockerfile +++ b/treatment-service/Dockerfile @@ -1,11 +1,31 @@ -FROM alpine:latest +FROM golang:1.18-alpine as api-builder +ARG API_BIN_NAME=xp-treatment + +RUN apk update && apk add musl-dev gcc + +ENV GO111MODULE=on \ + GOOS=linux \ + GOARCH=amd64 + +WORKDIR /app +COPY . . -RUN apk update && apk add git make bash unzip libtool gcc musl-dev ca-certificates dumb-init tzdata +# Build Treatment Service binary +RUN go build \ + -mod=vendor \ + -tags musl \ + -o ./bin/${API_BIN_NAME} +FROM alpine:latest + +RUN apk update && apk add git make bash unzip libtool ca-certificates dumb-init tzdata RUN mkdir -p /opt/xp_treatment -COPY . /opt/xp_treatment/ -COPY ./bin/* /opt/xp_treatment/ +COPY --from=api-builder /app/bin/* /opt/xp_treatment/ WORKDIR /opt/xp_treatment -ENTRYPOINT [ "./xp-treatment" ] + +ARG API_BIN_NAME=xp-treatment +ENV XP_API_BIN "./${API_BIN_NAME}" + +ENTRYPOINT ["sh", "-c", "${XP_API_BIN} \"$@\"", "--"] diff --git a/treatment-service/Makefile b/treatment-service/Makefile index 1e2fb43b..4290ee73 100644 --- a/treatment-service/Makefile +++ b/treatment-service/Makefile @@ -22,7 +22,7 @@ version: build-treatment-service: version @echo "Building binary..." - @cd ${TREATMENT_SVC_PATH} && go build -o ./bin/${TREATMENT_SVC_BIN_NAME} + @go build -o ./bin/${TREATMENT_SVC_BIN_NAME} @cp api/treatment.yaml ${TREATMENT_SVC_PATH}/bin @cp api/schema.yaml ${TREATMENT_SVC_PATH}/bin