├── requirements.txt ├── README.md ├── templates ├── help.html └── index.html ├── application.py └── .github └── workflows └── main.yml /requirements.txt: -------------------------------------------------------------------------------- 1 | Flask==2.0.3 2 | click==8.1.1 3 | itsdangerous==2.1.2 4 | Jinja2==3.1.1 5 | MarkupSafe==2.1.1 6 | Werkzeug==2.2.3 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GitHub Actions deploy Flask to AWS Elastic Beanstalk 2 | 3 | 4 | 5 | 6 | Status of Last Deployment:
7 |
8 | 9 | 10 | Copyleft by Denis Astahov ADV-IT 2019. 11 | -------------------------------------------------------------------------------- /templates/help.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | HELP PAGE 5 | 6 | 7 |
8 |

Hello from Denis Astahov!
9 | 10 | 11 |

THIS IS HELP PAGE

12 | 13 |
14 | Version 1.0 15 | 16 | -------------------------------------------------------------------------------- /application.py: -------------------------------------------------------------------------------- 1 | # ------------------------------------------------ 2 | # Program by Denis Astahov 3 | # 4 | # 5 | # Version Date Info 6 | # 1.0 13-Dec-2019 Initial Version 7 | # 8 | # ---------------------------------------------- 9 | from flask import Flask, render_template 10 | 11 | application = Flask(__name__) 12 | 13 | 14 | @application.route("/") 15 | def root(): 16 | return render_template("index.html") 17 | 18 | @application.route("/help") 19 | def helppage(): 20 | return render_template("help.html") 21 | 22 | @application.route("/hello") 23 | def index(): 24 | return "Hello World from Flask Hello Page. v1.0" 25 | 26 | #--------Main------------------ 27 | if __name__ == "__main__": 28 | application.debug = True 29 | application.run() 30 | #------------------------------ -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ADV-IT 5 | 20 | 21 |
22 |

Hello from Denis Astahov!
23 | Welcome to Python Flask Web Page! 24 |

GitHub Actions RULEZZzz!

25 |
26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | #--------------------------------------------------------------------- 2 | # GitHub Action Workflow to Deploy Flask App to AWS ElasticBeanstalk 3 | # 4 | # Version Date Info 5 | # 1.0 2019 Initial Version 6 | # 7 | # Made by Denis Astahov ADV-IT Copyleft (c) 2019 8 | #--------------------------------------------------------------------- 9 | name: CI-CD-Pipeline-to-AWS-ElasticBeastalk 10 | env: 11 | EB_PACKAGE_S3_BUCKET_NAME : "adv-it-flask-application-packages" 12 | EB_APPLICATION_NAME : "MyFlask" 13 | EB_ENVIRONMENT_NAME : "MyFlask-env" 14 | DEPLOY_PACKAGE_NAME : "flask_app_${{ github.sha }}.zip" 15 | AWS_REGION_NAME : "us-west-2" 16 | 17 | on: 18 | push: 19 | branches: 20 | - master 21 | 22 | jobs: 23 | my_ci_part: 24 | runs-on: ubuntu-latest 25 | 26 | steps: 27 | - name: Git clone our repo 28 | uses: actions/checkout@v1 29 | 30 | - name: Create ZIP deployment package 31 | run : zip -r ${{ env.DEPLOY_PACKAGE_NAME }} ./ -x *.git* 32 | 33 | - name: Configure my AWS Credentials 34 | uses: aws-actions/configure-aws-credentials@v1 35 | with: 36 | aws-access-key-id : ${{ secrets.MY_AWS_ACCESS_KEY }} 37 | aws-secret-access-key: ${{ secrets.MY_AWS_SECRET_KEY }} 38 | aws-region : ${{ env.AWS_REGION_NAME }} 39 | 40 | - name: Copy Deployment package to S3 bucket 41 | run : aws s3 cp ${{ env.DEPLOY_PACKAGE_NAME }} s3://${{ env.EB_PACKAGE_S3_BUCKET_NAME }}/ 42 | 43 | - name: Print Happy Message for CI finish 44 | run : echo "CI Pipeline part Finished successfully!" 45 | 46 | 47 | my_cd_part: 48 | runs-on: ubuntu-latest 49 | needs: [my_ci_part] 50 | 51 | steps: 52 | - name: Configure my AWS Credentials 53 | uses: aws-actions/configure-aws-credentials@v1 54 | with: 55 | aws-access-key-id : ${{ secrets.MY_AWS_ACCESS_KEY }} 56 | aws-secret-access-key: ${{ secrets.MY_AWS_SECRET_KEY }} 57 | aws-region : ${{ env.AWS_REGION_NAME }} 58 | 59 | - name: Create new ElasticBeanstalk Application Version 60 | run : | 61 | aws elasticbeanstalk create-application-version \ 62 | --application-name ${{ env.EB_APPLICATION_NAME }} \ 63 | --source-bundle S3Bucket="${{ env.EB_PACKAGE_S3_BUCKET_NAME }}",S3Key="${{ env.DEPLOY_PACKAGE_NAME }}" \ 64 | --version-label "Ver-${{ github.sha }}" \ 65 | --description "CoimmitSHA-${{ github.sha }}" 66 | 67 | - name: Deploy new ElasticBeanstalk Application Version 68 | run : aws elasticbeanstalk update-environment --environment-name ${{ env.EB_ENVIRONMENT_NAME }} --version-label "Ver-${{ github.sha }}" 69 | 70 | - name: Print Happy Message for CD finish 71 | run : echo "CD Pipeline part Finished successfully!" 72 | 73 | 74 | 75 | 76 | --------------------------------------------------------------------------------