Skip to content

Instantly share code, notes, and snippets.

@faithfulojebiyi
Last active October 1, 2021 08:52
Show Gist options
  • Save faithfulojebiyi/94f80ae9c5754c4206e2308237638b59 to your computer and use it in GitHub Desktop.
Save faithfulojebiyi/94f80ae9c5754c4206e2308237638b59 to your computer and use it in GitHub Desktop.
This CI/CD pipeline deploys a node app directly to elasticbeanstalk. Blue Green ZeroDown Time
name: Deploy to EBS
env:
APP_NAME: hello-world-eb
ENV_NAME: Helloworldeb-env
S3_BUCKET: node-deploy-eb
AWS_REGION: us-east-2
AWS_PLATFORM: Node.js
EC2_SSH_KEY_PAIR: ebs-deploy
PIPELINE_ID: ${GITHUB_RUN_ID}-${GITHUB_RUN_NUMBER}
on:
push:
branches: [ master ]
jobs:
create_eb_version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- run: |
AWS_VERSION_LABEL=${{env.APP_NAME}}-${{env.PIPELINE_ID}}
echo "Creating Source Bundle"
zip -r ${{env.APP_NAME}}.zip ./ -x *.git*
S3_KEY="$AWS_VERSION_LABEL.zip"
echo "Uploading Source Bundle to S3"
aws s3 cp ${{env.APP_NAME}}.zip s3://${{env.S3_BUCKET}}/${S3_KEY} --region ${{env.AWS_REGION}}
echo "Creating Elastic Beanstalk version"
aws elasticbeanstalk create-application-version --application-name ${{env.APP_NAME}} --version-label $AWS_VERSION_LABEL --region ${{env.AWS_REGION}} --source-bundle S3Bucket=${{env.S3_BUCKET}},S3Key=${S3_KEY} --auto-create-application
deploy_aws:
needs: [create_eb_version]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8 (needed for eb cli)
uses: actions/setup-python@v2
with:
python-version: "3.8"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- run: |
AWS_VERSION_LABEL=${{env.APP_NAME}}-${{env.PIPELINE_ID}}
echo "Installing Elastic Beanstalk Cli"
python -m pip install --upgrade pip
pip install awsebcli --upgrade
eb --version
echo "Deploy init"
eb init -i ${{env.APP_NAME}} -p ${{env.AWS_PLATFORM}} -k ${{env.EC2_SSH_KEY_PAIR}} --region ${{env.AWS_REGION}}
eb deploy ${{env.ENV_NAME}} --version ${AWS_VERSION_LABEL}
echo "Deploy finished"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment