I recently wanted a way I could test out a Flask server with MongoDB using GitHub actions, so I started making one. Here is the finished project:
# This is a basic workflow to help you get started with Actions
name: Flask test
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Runs a set of commands using the runners shell
- name: Start and test server
run: |
pip install flask pymongo dnspython
python main.py test
Lets walk through this, shall we?
First, it initializes on ubuntu, pulls the repo so it can be accessed, installs the dependancies and runs the server.
At the end of my main.py, I have these lines:
if __name__ == "__main__":
if sys.argv[1] == 'test':
main()
time.sleep(3)
os.system('curl http://localhost:8080/api/v1/data/get?title=dragonwatch')
os.system("curl http://localhost:8080/admin/shutdown")
elif sys.argv[1] == "run":
main()
Basically, it only executes the test if I run it with the argument test. All the code is inside the main function, for testing purposes. Thanks for reading all the way down here!