Add logs for gateway #29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
test-and-build-api-products: | |
name: Test and Build API | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: '1.22.4' | |
- name: Sync modules | |
run: go work sync | |
working-directory: . | |
- name: Cache dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Install dependencies | |
working-directory: ./api-products | |
run: go mod download | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v6.0.1 | |
with: | |
working-directory: . | |
args: --out-format colored-line-number ./api-products/... | |
- name: Run tests | |
working-directory: ./api-products | |
run: go test -coverprofile=coverage.out ./... | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v2 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Build API binary | |
working-directory: ./api-products | |
run: GOOS=linux GOARCH=amd64 go build -o bootstrap main.go | |
- name: Zip API binary | |
working-directory: ./api-products | |
run: zip api_products_lambda.zip bootstrap | |
- name: Upload API artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: api_products_lambda | |
path: ./api-products/api_products_lambda.zip | |
test-and-build-scraper: | |
name: Test and Build Scraper | |
runs-on: ubuntu-latest | |
needs: test-and-build-api-products | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: '1.22.4' | |
- name: Cache dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Install dependencies | |
working-directory: ./scraper | |
run: go mod download | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v6.0.1 | |
with: | |
working-directory: . | |
args: --out-format colored-line-number ./scraper/... | |
- name: Run tests | |
working-directory: ./scraper | |
run: go test -coverprofile=coverage.out ./... | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v2 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Build Scraper binary | |
working-directory: ./scraper | |
run: GOOS=linux GOARCH=amd64 go build -o bootstrap main.go | |
- name: Zip Scraper binary | |
working-directory: ./scraper | |
run: zip scraper_lambda.zip bootstrap | |
- name: Upload Scraper artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: scraper_lambda | |
path: ./scraper/scraper_lambda.zip | |
test-and-build-api-users: | |
name: Test and Build API Users | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Go | |
uses: actions/setup-go@v2 | |
with: | |
go-version: '1.22.4' | |
- name: Cache dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Install dependencies | |
working-directory: ./api-users | |
run: go mod download | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v6.0.1 | |
with: | |
working-directory: . | |
args: --out-format colored-line-number ./api-users/... | |
- name: Run tests | |
working-directory: ./api-users | |
run: go test -coverprofile=coverage.out ./... | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v2 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Build API Users binary | |
working-directory: ./api-users | |
run: GOOS=linux GOARCH=amd64 go build -o bootstrap main.go | |
- name: Zip API Users binary | |
working-directory: ./api-users | |
run: zip api_users_lambda.zip bootstrap | |
- name: Upload API Users artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: api_users_lambda | |
path: ./api-users/api_users_lambda.zip | |
deploy: | |
name: Deploy | |
runs-on: ubuntu-latest | |
needs: [test-and-build-api-products, test-and-build-scraper, test-and-build-api-users] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Download API artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: api_products_lambda | |
path: ./terraform | |
- name: Download Scraper artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: scraper_lambda | |
path: ./terraform | |
- name: Download API Users artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: api_users_lambda | |
path: ./terraform | |
- name: Set up Terraform | |
uses: hashicorp/setup-terraform@v1 | |
- name: Initialize Terraform | |
working-directory: ./terraform | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
run: terraform init | |
- name: Plan Terraform | |
working-directory: ./terraform | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
run: terraform plan | |
- name: Apply Terraform | |
working-directory: ./terraform | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
run: terraform apply -auto-approve |