我在GitHub上有一个项目,我想设置CI作业来构建docker映像并推送到AWS ECR。我的要求是-
- 一个ci文件(我已创建
.github/workflows/aws.yml
) - CI作业必须仅在推送到master和sandbox分支上触发
- 如果推送到沙盒分支,则应将Docker映像推送到ECR1
- 如果将其推送到master分支,则应将docker image推送到ECR2
到目前为止,我已经制作了以下CI文件
.github / workflows / aws.yml -
name: CI
on:
pull_request:
branches:
- master
- sandbox
push:
branches:
- master
- sandbox
env:
AWS_REPOSITORY_URL_MASTER: ${{ secrets.AWS_REPOSITORY_URL_MASTER }}
AWS_REPOSITORY_URL_SANDBOX: ${{ secrets.AWS_REPOSITORY_URL_SANDBOX }}
AWS_accESS_KEY_ID: ${{ secrets.AWS_accESS_KEY_ID }}
AWS_SECRET_accESS_KEY: ${{ secrets.AWS_SECRET_accESS_KEY }}
jobs:
build-and-push:
name: Build and push image to AWS ECR master
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup ECR
run: $( aws ecr get-login --no-include-email --region ap-south-1)
- name: Build and tag the image
run: docker build -t $AWS_REPOSITORY_URL_MASTER .
- name: Push
run: docker push $AWS_REPOSITORY_URL_MASTER
build-and-push-sandbox:
name: Build and push image to AWS ECR master
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup ECR
run: $( aws ecr get-login --no-include-email --region ap-south-1)
- name: Build and tag the image
run: docker build -t $AWS_REPOSITORY_URL_SANDBOX .
- name: Push
run: docker push $AWS_REPOSITORY_URL_SANDBOX
该脚本将如何区分何时运行build-and-push-master
(在主分支推送时触发)和build-and-push-sandbox
(在沙箱分支推送时触发)?