├── 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 |
--------------------------------------------------------------------------------