From 310f5196e8781d5677d4d0d06d480d5700491bb9 Mon Sep 17 00:00:00 2001 From: Leandro Palazzolo Date: Thu, 30 Jan 2025 20:18:08 -0300 Subject: [PATCH 1/3] chore: add production deployment --- .github/workflows/production.yaml | 38 +++++++++++++++++++++++++++++ packages/api/Dockerfile | 4 ++- packages/api/pkg/service/service.go | 6 ++++- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/production.yaml diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml new file mode 100644 index 0000000..c24d697 --- /dev/null +++ b/.github/workflows/production.yaml @@ -0,0 +1,38 @@ +name: Production +on: + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' # Runs only on semantic versioning tags (vMAJOR.MINOR.PATCH) + +env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + +jobs: + deploy: + name: "Build docker and publish to ECR" + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_DEFAULT_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Build, tag, and push image to Amazon ECR + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + ECR_REPOSITORY: assets/assets-api + run: | + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${{ github.ref_name }} . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ github.ref_name }} \ No newline at end of file diff --git a/packages/api/Dockerfile b/packages/api/Dockerfile index bb3f547..5c07adb 100644 --- a/packages/api/Dockerfile +++ b/packages/api/Dockerfile @@ -12,11 +12,13 @@ RUN go build -o ./build/bin/api ./cmd/main.go FROM alpine +ARG SERVER_PORT=8000 + COPY --from=builder go/src/api/build/bin/api /usr/local/bin WORKDIR /usr/local/bin -EXPOSE 8000 +EXPOSE ${SERVER_PORT} RUN apk --no-cache add ca-certificates diff --git a/packages/api/pkg/service/service.go b/packages/api/pkg/service/service.go index 4717537..54ca14e 100644 --- a/packages/api/pkg/service/service.go +++ b/packages/api/pkg/service/service.go @@ -52,7 +52,6 @@ func NewService(assetsApp *app.AssetsApp, polkadotMiddleware *polkadotMiddleware } func (srv *Service) Setup() { - router := chi.NewRouter() cfg := srv.assetsApp.Config() router.Use(middleware.Recoverer) @@ -66,6 +65,11 @@ func (srv *Service) Setup() { MaxAge: 300, }).Handler) + router.Get("/health", func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusOK) + w.Write([]byte("OK")) + }) + router.Get("/nonce", srv.CreateToken) router.With(httpin.NewInput(model.UploadImageInput{})).Post("/upload", srv.UploadImage) router.With( From 6f88c8fb83bd8ab12863c3c81d99bbf494f21f8b Mon Sep 17 00:00:00 2001 From: Leandro Palazzolo Date: Thu, 30 Jan 2025 20:19:19 -0300 Subject: [PATCH 2/3] chore: fix CI stage --- .github/workflows/staging.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/staging.yaml b/.github/workflows/staging.yaml index cc3cc25..81bf240 100644 --- a/.github/workflows/staging.yaml +++ b/.github/workflows/staging.yaml @@ -1,7 +1,7 @@ name: Staging on: - pull_request: + push: branches: - main paths: From 5c6fbdcd27d22ae764011043316d4945bba19765 Mon Sep 17 00:00:00 2001 From: Leandro Palazzolo Date: Thu, 30 Jan 2025 20:21:30 -0300 Subject: [PATCH 3/3] fix: health --- packages/api/pkg/service/service.go | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/api/pkg/service/service.go b/packages/api/pkg/service/service.go index 54ca14e..4929350 100644 --- a/packages/api/pkg/service/service.go +++ b/packages/api/pkg/service/service.go @@ -67,7 +67,6 @@ func (srv *Service) Setup() { router.Get("/health", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) - w.Write([]byte("OK")) }) router.Get("/nonce", srv.CreateToken)