Last active
October 1, 2021 08:52
-
-
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
This file contains 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: 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