Slide 1

Slide 1 text

:PVSGJSTUEFQMPZNFOU TIPVMEOsUCFTPIBSE &SJD.BUUIFT !FINBUUIFT FINBUUIFT!HNBJM $ manage.py simple_deploy --platform fly_i o platform_s h heroku

Slide 2

Slide 2 text

!FINBUUIFT 8IBUXFMMDPWFS ↟"CPVUNF ↟8IBUJTdjango-simple-deploy ↟-JWFEFNP ↟)PXJUXPSLT ↟5FTUJOH

Slide 3

Slide 3 text

!FINBUUIFT ↟6TFDBTFT ↟DSJUFSJB ↟$MPTJOHEJTDVTTJPORVFTUJPOT ↟$POUSJCVUJOH 8IBUXFMMDPWFS

Slide 4

Slide 4 text

!FINBUUIFT "CPVUNF ↟'JSTUMFBSOFEQSPHSBNNJOHJOMBUFTFBSMZT ↟#41IZTJDT IPCCZJTUQSPHSBNNFSNPTUPGNZMJGF ↟ZFBSTUFBDIJOHHSBEFTNBUITDJFODF ↟"MTPUBVHIUPDDBTJPOBMJOUSPQSPHSBNNJOHDMBTTFT ↟"VUIPS 1ZUIPO$SBTI$PVSTF

Slide 5

Slide 5 text

!FINBUUIFT *CFMJFWFJOUIFEFNPDSBUJ[JOHQPXFSPGXFCBQQT

Slide 6

Slide 6 text

!FINBUUIFT JEFB XPSLJOH QSPUPUZQF TIBSFXJUI UIFXPSME ZPVSNJOE ZPVSMPDBM TZTUFN EFQMPZFE QSPKFDU

Slide 7

Slide 7 text

!FINBUUIFT JEFB XPSLJOH QSPUPUZQF TIBSFXJUI UIFXPSME ZPVSNJOE ZPVSMPDBM TZTUFN EFQMPZFE QSPKFDU

Slide 8

Slide 8 text

!FINBUUIFT 0SJHJOTPGdjango-simple-deploy ↟$IBQUFSPG1$$DPWFSTEFQMPZNFOUUP)FSPLV ↟*WFBMXBZTLFQUNZGJOHFSTDSPTTFEUIBU)FSPLVXPVMEOU BCSVQUMZDIBOHFUIFJSQSPDFTT

Slide 9

Slide 9 text

!FINBUUIFT 0SJHJOTPGdjango-simple-deploy ↟'BMMXSPUFDVTUPN)FSPLVCVJMEQBDL ↟"VUPNBUFEBMMDPOGJHVSBUJPO CVU ↟GFMUMJLF*XBTEPJOH)FSPLVTXPSLGPSUIFN

Slide 10

Slide 10 text

!FINBUUIFT 0SJHJOTPGdjango-simple-deploy ↟'BMMDVTUPN%KBOHPNBOBHFNFOUDPNNBOE ↟5IJTGFFMTSJHIU "EFQMPZNFOUTPMVUJPOUIBUMJWFTJO%KBOHPTXPSME

Slide 11

Slide 11 text

!FINBUUIFT 5IJOLCBDLBNPNFOU ↟%PZPVSFNFNCFSZPVSGJSTUEFQMPZNFOU ↟)PXMPOHEJEJUUBLFZPVUPTFFZPVSQSPKFDUEFQMPZFE ↟)PXNBOZUSJFTEJEJUUBLF ↟)BWFZPVFWFSMFGUBQSPKFDUVOEFQMPZFECFDBVTFJUXBT UPPNVDIXPSL

Slide 12

Slide 12 text

!FINBUUIFT 5IJOLCBDLBNPNFOU ↟)BWFZPVFWFSCFFOGSVTUSBUFECZBUZQPPSTNBMMNJTUBLF EVSJOHBOJOJUJBMEFQMPZNFOU ↟)BWFZPVFWFSCFFOGSVTUSBUFECZBQMBUGPSNTVODMFBS EFQMPZNFOUEPDT

Slide 13

Slide 13 text

!FINBUUIFT 8IBUQFPQMFBSFTBZJOH

Slide 14

Slide 14 text

!FINBUUIFT 8IBUQFPQMFBSFTBZJOH

Slide 15

Slide 15 text

!FINBUUIFT django-simple-deployJTBTUBCMF"1*GPSNBLJOHJOJUJBM EFQMPZNFOUTBDSPTTNVMUJQMFQMBUGPSNT $ manage.py simple_deploy --platform fly_io

Slide 16

Slide 16 text

!FINBUUIFT django-simple-deployJTBTUBCMF"1*GPSNBLJOHJOJUJBM EFQMPZNFOUTBDSPTTNVMUJQMFQMBUGPSNT $ manage.py simple_deploy --platform platform_sh

Slide 17

Slide 17 text

!FINBUUIFT django-simple-deployJTBTUBCMF"1*GPSNBLJOHJOJUJBM EFQMPZNFOUTBDSPTTNVMUJQMFQMBUGPSNT $ manage.py simple_deploy --platform heroku

Slide 18

Slide 18 text

!FINBUUIFT 1SFSFRVJTJUFT ↟:PVIBWFBTJNQMF%KBOHPQSPKFDUUIBUXPSLTMPDBMMZ ↟:PVSFVTJOHSFRVJSFNFOUTUYU 1PFUSZ PS1JQFOW ↟:PVSFVTJOH(JUUPUSBDLZPVSQSPKFDU ↟:PVIBWFUIFUBSHFUQMBUGPSNT$-*JOTUBMMFE BOEBOBDUJWF BDDPVOU

Slide 19

Slide 19 text

!FINBUUIFT 8IBUsimple_deployEPFT ↟*OTQFDUTZPVSQSPKFDU ↟$POGJHVSFTZPVSQSPKFDUGPSEFQMPZNFOUUPUIFUBSHFU QMBUGPSN ↟$BOBVUPNBUFUIFFOUJSFEFQMPZNFOUQSPDFTT

Slide 20

Slide 20 text

!FINBUUIFT &YBNQMF"VUPNBUFEEFQMPZNFOUUPGMZJP $ pip install django-simple-deplo y # Add simple_deploy to INSTALLED_APPS . $ manage.py simple_deploy --platform fly_io --automate-all 5IBUTJU

Slide 21

Slide 21 text

!FINBUUIFT -FUTTFFJUIBQQFO ↟"TJNQMFQSPKFDUUIBUXPSLTMPDBMMZ XJUIOPQMBUGPSN TQFDJGJDDPOGJHVSBUJPO EFQMPZFEJOUISFFTUFQT

Slide 22

Slide 22 text

!FINBUUIFT *VTFESVOTFSWFSJOQSPEVDUJPO JO /PCPEZTIPVMEIBWFUPEPUIJTJO

Slide 23

Slide 23 text

!FINBUUIFT )PXEPFTJUXPSL ↟6TJOHEFQMPZNFOUUPGMZJPBTBOFYBNQMF

Slide 24

Slide 24 text

!FINBUUIFT simple_deploy.py ↟7BMJEBUFTUIFDPNNBOE ↟*OTQFDUTUIFMPDBMTZTUFN ↟*OTQFDUTUIFQSPKFDU ↟#BJMTJGXFXPOUCFBCMFUPDPOGJHVSFPSEFQMPZ ↟$BMMTdeploy_flyio.py

Slide 25

Slide 25 text

!FINBUUIFT deploy_flyio.py ↟4FUTGMZJPTFDSFUT FOWJSPONFOUWBSJBCMFT ↟8SJUFTDockerfile fly.tom l ↟.PEJGJFTsettings.py ↟"EETSFRVJSFNFOUT ↟gunicorn psycopg2 dj-database-url

Slide 26

Slide 26 text

!FINBUUIFT deploy_flyio.py ↟BMTP JGVTJOH--automate-all ↟DSFBUFTBOFX'MZJPBQQ ↟DPNNJUTDIBOHFT ↟SVOTfly deplo y ↟SVOTfly open

Slide 27

Slide 27 text

!FINBUUIFT deploy_flyio.py ↟4VNNBSJ[FTNPTUJNQPSUBOUJOGPSNBUJPO ↟SFNBJOJOHEFQMPZNFOUTUFQT DPOGJHVSBUJPOPOMZSVO ↟EFQMPZFE63- ↟IPXUPQVTIGVSUIFSDIBOHFT ↟ TPPO MJOLTUPNPTUSFMFWBOUQMBUGPSNEPDT

Slide 28

Slide 28 text

!FINBUUIFT 4VNNBSZVTJOH--automate-all $ pip install django-simple-deplo y # Add simple_deploy to INSTALLED_APPS . $ python manage.py simple_deploy --platform fly_io --automate-all

Slide 29

Slide 29 text

!FINBUUIFT 4VNNBSZDPOGJHVSBUJPOPOMZVTBHF SFDPNNFOEFE $ pip install django-simple-deplo y # Add simple_deploy to INSTALLED_APPS . $ fly apps create --generate-nam e $ python manage.py simple_deploy --platform fly_i o $ git status # (Recommended review step ) $ git add . $ git commit -m "Configured for deployment to Fly.io. " $ fly deplo y $ fly open

Slide 30

Slide 30 text

!FINBUUIFT /PUJDF ↟8FIBWFOUEPOFBOZUIJOHUIFVTFSIBTOUBMSFBEZEPOF ↟5IFZSBOpip install django ↟5IFZBEEFEUIFJSBQQUPINSTALLED_APPS ↟5IFZSBOmanage.py runserver

Slide 31

Slide 31 text

!FINBUUIFT /PUJDF ↟8FOFWFSWJTJUFEUIFQMBUGPSNTEPDT ↟8FOFWFSIBEUPDSFBUFBOFXGJMF ↟8FOFWFSIBEUPNPEJGZBOFYJTUJOHGJMF ↟5IFSFXBTOPSFBMDIBODFGPSUZQPT ↟8FDBOTFFBOESFWJFXUIFDIBOHFTUIBUXFSFNBEF

Slide 32

Slide 32 text

!FINBUUIFT /PUJDF ↟8FFOEFEVQXJUIBTVDDFTTGVMEFQMPZNFOU 8IPEPFTOUMJLFUIBU

Slide 33

Slide 33 text

!FINBUUIFT 6OJUUFTUJOH (dsd_env) $ cd unit_tests (dsd_env) unit_tests $ pytest

Slide 34

Slide 34 text

!FINBUUIFT 6OJUUFTUJOH ↟)PXEPZPVUFTUBTUBOEBMPOFNBOBHFNFOUDPNNBOE ↟UIBUEPFTOUIBWFJUTPXOTFUUJOHTGJMF ↟UIBUBDUTPOQSPKFDUTXJUIEJGGFSFOUEFQFOEFODZ NBOBHFNFOUTZTUFNT ↟BOEEJGGFSFOUIJFSBSDIJFT

Slide 35

Slide 35 text

!FINBUUIFT $VSSFOUBQQSPBDIUPVOJUUFTUJOH ↟1SPKFDUdjango-admin startproject blog . ↟1SPKFDUdjango-admin startproject blog ↟7BSJBUJPOTVTJOHSFRVJSFNFOUTUYU 1PFUSZ 1JQFOW

Slide 36

Slide 36 text

!FINBUUIFT $VSSFOUBQQSPBDIUPVOJUUFTUJOH ↟$PQJFTTFMFDUFEQSPKFDUUPUNQEJSFDUPSZ ↟#VJMETWJSUVBMFOWJSPONFOU ↟*OTUBMMTEFQFOEFODJFTGSPNvendor / ↟$BMMTsimple_deployBHBJOTUUFTUQSPKFDU ↟&YBNJOFTNPEJGJFETUBUFPGQSPKFDU

Slide 37

Slide 37 text

!FINBUUIFT $VSSFOUBQQSPBDIUPVOJUUFTUJOH ↟*EMPWFGFFECBDLPOUIJTBQQSPBDI

Slide 38

Slide 38 text

!FINBUUIFT *OUFHSBUJPOUFTUT (dsd_env)$ ./integration_tests/test_deploy_process.sh -p fly_io

Slide 39

Slide 39 text

!FINBUUIFT $IBMMFOHFTPGJOUFHSBUJPOUFTUJOH ↟"MMUIFDIBMMFOHFTPGVOJUUFTUJOH ↟XJUIFYUFSOBMOFUXPSLDBMMT ↟JODMVEJOHBDUVBMEFQMPZNFOUT ↟UPBQFSTPOBMBDDPVOUPOUIFTFMFDUFEQMBUGPSN ↟XIJDIDBOJODVSDPTUT

Slide 40

Slide 40 text

!FINBUUIFT MFBETUPBNVTJOHJOWPJDFT

Slide 41

Slide 41 text

!FINBUUIFT 6TFDBTFT ↟1FPQMFXIPBSFOFXUP%KBOHP BOEOFXUPEFQMPZNFOU ↟1FPQMFXIPBSFFYQFSJFODFEXJUIEFQMPZNFOU CVUEPOU XBOUUPEFBMXJUICPJMFSQMBUF ↟1FPQMFXIPBSFFYQFSJNFOUJOHXJUIOFXQMBUGPSNT ↟"VUIPSTDSFBUPST UFBDIFST BOEUSBJOFST

Slide 42

Slide 42 text

!FINBUUIFT 6TFDBTF"VUIPSTDSFBUPST UFBDIFST BOEUSBJOFST ↟simple_deployJTBCVGGFSCFUXFFOZPVBOEBOFWFS FWPMWJOHQMBUGPSN ↟.BLFTJODMVEJOHEFQMPZNFOUNVDIFBTJFSJGJUTOPUUIF QSJNBSZGPDVTPGZPVSUFBDIJOH

Slide 43

Slide 43 text

!FINBUUIFT 6TFDBTF1MBUGPSNIPTUT ↟"NBUVSFWFSTJPOPGTJNQMF@EFQMPZCFDPNFTBCFTU QSBDUJDFSFGFSFODFGPSCBTJDEFQMPZNFOUTUPFBDIQMBUGPSN ↟&ODPVSBHFTBGFFECBDLDZDMFCFUXFFOQMBUGPSNTBOE %KBOHPFYQFSUT BMSFBEZIBQQFOJOH

Slide 44

Slide 44 text

!FINBUUIFT $POTJEFS ↟1MBUGPSNTBSFOPUBTJODFOUJWJ[FEUPTVQQPSUCFHJOOFSTBT NBOZPGVTUIJOLUIFZBSF ↟8FDBOTVQQPSUCFHJOOFSTBTNVDIBTXFXBOU

Slide 45

Slide 45 text

!FINBUUIFT DSJUFSJB ↟4VQQPSUBTUBCMF SFMJBCMFDPOGJHVSBUJPOBOEEFQMPZNFOU QSPDFTTGPS'MZJP 1MBUGPSNTI BOE)FSPLV ↟0GGFSBTUBCMF"1* ↟*ODMVEFUIPSPVHI DMFBSEPDVNFOUBUJPOBOENFTTBHFT

Slide 46

Slide 46 text

!FINBUUIFT ↟(FOFSBUFBGSJFOEMZEFQMPZNFOUTVNNBSZ XJUIMJOLTUP NPTUSFMFWBOUQBSUTPGUBSHFUQMBUGPSNTEPDVNFOUBUJPO ↟0GGFSBTUSBJHIUGPSXBSEXBZUPEFQMPZUIF1PMMTQSPKFDU DSJUFSJB

Slide 47

Slide 47 text

!FINBUUIFT $VSSFOU"1* manage.py simple_deplo y --platform [fly_io|platform_sh|heroku] # require d --deployed-project-name [project_name] # optiona l --region [region_name] # optiona l --automate-al l --no-loggin g --ignore-unclean-git

Slide 48

Slide 48 text

!FINBUUIFT $VSSFOU"1* manage.py simple_deplo y --unit-testin g --integration-testing

Slide 49

Slide 49 text

!FINBUUIFT $POWFSTBUJPOTUBSUFST ↟8IBUTIPVMEEFQMPZNFOUMPPLMJLFUPQFPQMFXIPBSFOFX UP%KBOHP ↟)PXRVJDLMZTIPVMEFYQFSJFODFEEFWFMPQFSTCFBCMFUP EFQMPZUPBOFXQMBUGPSN ↟)PXNVDIDBOXFTJNQMJGZUIFJOJUJBMEFQMPZNFOUTUPSZ

Slide 50

Slide 50 text

!FINBUUIFT ↟8IBUQMBUGPSNTBSFNPTUBQQSPQSJBUFGPSBVUPNBUFE DPOGJHVSBUJPO BOEBVUPNBUFEEFQMPZNFOUT ↟*TJUSFBTPOBCMFUPFYQFDUFWFSZIPTUJOHQMBUGPSNUPBMXBZT LOPXUIFCFTU%KBOHPEFQMPZNFOUTUPSZ $POWFSTBUJPOTUBSUFST

Slide 51

Slide 51 text

!FINBUUIFT ↟8IBUXPSLJTBQQSPQSJBUFGPSBDPNNVOJUZQBDLBHF ↟8IBUXPSLCFMPOHTUPBIPTUJOHQMBUGPSN $POWFSTBUJPOTUBSUFST

Slide 52

Slide 52 text

!FINBUUIFT ↟8IBUIBQQFOTUPQFPQMFXIPTFGJSTUEFQMPZNFOUBUUFNQU GBJMT ↟8IBUIBQQFOTUPQFPQMFXIPTFGJSTUEFQMPZNFOUBUUFNQU JTTVDDFTTGVM BOE NPTUJNQPSUBOU

Slide 53

Slide 53 text

!FINBUUIFT $POUSJCVUJOH ↟1MFBTFXFJHIJOPOUIFQSFWJPVTRVFTUJPOT ↟1MFBTFTIBSFGFFECBDLBCPVUUIF"1* ↟1MFBTFTIBSFUIPVHIUTBCPVUFGGJDJFOUUFTUJOH ↟8SJUFDSJUJRVFBDeployerTDSJQUGPSBQMBUGPSN ↟4FF$POUSJCVUJOHQBHFJOEPDTUPIFMQPVU ↟)JTUPSZPGUIFQSPKFDUJTXFMMEPDVNFOUFEJOJTTVFT

Slide 54

Slide 54 text

!FINBUUIFT

Slide 55

Slide 55 text

!FINBUUIFT

Slide 56

Slide 56 text

!FINBUUIFT

Slide 57

Slide 57 text

!FINBUUIFT

Slide 58

Slide 58 text

!FINBUUIFT

Slide 59

Slide 59 text

!FINBUUIFT $POUSJCVUJOH ↟*MMCFTUBZJOHGPS4QSJOUT QMFBTFTBZIFMMP

Slide 60

Slide 60 text

:PVSGJSTUEFQMPZNFOU TIPVMEOsUCFTPIBSE &SJD.BUUIFT !FINBUUIFT FINBUUIFT!HNBJM EKBOHPTJNQMFEFQMPZSFBEUIFEPDTJP