-
Notifications
You must be signed in to change notification settings - Fork 0
100 lines (86 loc) · 3.48 KB
/
deploy-integration.yml
File metadata and controls
100 lines (86 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
name: Deploy to Integration
on:
push:
branches:
- master
paths:
- 'platform/wab/**'
- 'platform/loader-bundle-env/**'
- '.github/**'
workflow_dispatch:
jobs:
build:
name: Build and Push Docker Image
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
environment: integration
permissions:
contents: read # Read repo contents
id-token: write # Required for AWS OIDC authentication
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ECR_PUSH_ROLE_ARN }}
aws-region: ${{ vars.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Mask ECR registry URL
run: |
echo "::add-mask::${{ steps.login-ecr.outputs.registry }}"
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }}
IMAGE_TAG: ${{ github.sha }}
run: |
# Mask sensitive values
echo "::add-mask::$ECR_REGISTRY"
echo "::add-mask::$ECR_REPOSITORY"
# Build the Docker image
docker build \
--platform linux/amd64 \
-t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG \
-f platform/wab/Dockerfile \
platform/
# Push to ECR
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "Pushed image: $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
- name: Trigger GitLab image tag update
if: success()
env:
GITLAB_PIPELINE_TRIGGER_TOKEN: ${{ secrets.GITLAB_PIPELINE_TRIGGER_TOKEN }}
GITLAB_PROJECT_ID: ${{ secrets.GITLAB_PROJECT_ID }}
IMAGE_URL: ${{ steps.login-ecr.outputs.registry }}/${{ vars.ECR_REPOSITORY }}:${{ github.sha }}
run: |
curl --fail --request POST \
"https://gitlab.elasticpath.com/api/v4/projects/${GITLAB_PROJECT_ID}/trigger/pipeline" \
--form "token=${GITLAB_PIPELINE_TRIGGER_TOKEN}" \
--form "ref=main" \
--form "variables[UPDATE_IMAGE_TAGS]=true" \
--form "variables[TARGET_ENV]=integration" \
--form "variables[CONTAINER_IMAGE]=${IMAGE_URL}"
- name: Build summary
if: success()
run: |
echo "### ✅ Docker Image Built and Pushed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Environment:** ${{ vars.ENVIRONMENT }}" >> $GITHUB_STEP_SUMMARY
echo "**Image Tag:** \`${GITHUB_SHA:0:8}\`" >> $GITHUB_STEP_SUMMARY
echo "**Full SHA:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "GitLab has been notified to deploy this image." >> $GITHUB_STEP_SUMMARY
- name: Notify on failure
if: failure()
run: |
echo "### ❌ Build Failed" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Environment:** ${{ vars.ENVIRONMENT }}" >> $GITHUB_STEP_SUMMARY
echo "**Commit:** \`${GITHUB_SHA:0:8}\`" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "Check the workflow logs for details."