Player API Lambda #2
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: Player API Lambda | |
| env: | |
| APP_NAME: player_service | |
| on: | |
| workflow_dispatch: # Enables manual triggering | |
| push: | |
| paths: | |
| - 'prototypes/**' | |
| jobs: | |
| build-and-deploy: | |
| name: Build and Deploy Lambda Function | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: ./prototypes/services/player_service | |
| # determines AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, | |
| # refer to github environment | |
| environment: development | |
| steps: | |
| # Step 1: Checkout the code | |
| - name: Checkout code | |
| uses: actions/checkout@v3 | |
| # Step 2: Set up Go environment | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: 1.24 | |
| # Step 3: Build the Go binary | |
| - name: Build Go binary | |
| run: | | |
| GOOS=linux GOARCH=amd64 go build -o main main.go | |
| env: | |
| GO111MODULE: auto | |
| GOPROXY: https://proxy.golang.org | |
| GOSUMDB: sum.golang.org | |
| CGO_ENABLED: 0 | |
| - name: Package player service | |
| run: zip player_service.zip main | |
| - name: AWS Authentication | |
| uses: aws-actions/configure-aws-credentials@v3 | |
| with: | |
| aws-access-key-id: ${{ vars.AWS_DEPLOYMENT_KEY_ID }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_DEPLOYMENT_KEY }} | |
| aws-region: ${{ vars.AWS_REGION }} | |
| role-to-assume: arn:aws:iam::${{ vars.AWS_ACCOUNT_ID }}:role/PlayerServiceDeploymentRole | |
| role-session-name: GitHubActionsECRDeployment | |
| - name: Authenticate Docker with ECR | |
| run: | | |
| aws ecr get-login-password --region ${{ vars.AWS_REGION }} | docker login --username AWS --password-stdin ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com | |
| - name: Build and Tag Docker Image | |
| run: | | |
| docker build -t $APP_NAME . | |
| docker tag $APP_NAME:latest ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/$APP_NAME:latest | |
| - name: Push Docker Image to AWS ECR | |
| run: | | |
| docker push ${{ vars.AWS_ACCOUNT_ID }}.dkr.ecr.${{ vars.AWS_REGION }}.amazonaws.com/$APP_NAME:latest |