diff --git a/.do/app.yaml b/.do/app.yaml index af4bee7e..2405d557 100644 --- a/.do/app.yaml +++ b/.do/app.yaml @@ -2,7 +2,7 @@ name: sample-python services: - environment_slug: python github: - branch: master + branch: main deploy_on_push: true repo: digitalocean/sample-python name: sample-python diff --git a/.do/deploy.template.yaml b/.do/deploy.template.yaml new file mode 100644 index 00000000..b091a2c6 --- /dev/null +++ b/.do/deploy.template.yaml @@ -0,0 +1,10 @@ +spec: + name: sample-python + services: + - environment_slug: python + git: + branch: main + repo_clone_url: https://github.com/digitalocean/sample-python.git + instance_count: 1 + instance_size_slug: apps-s-1vcpu-0.5gb + name: sample-python diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..6ce995d5 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,65 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates +# borrowed from https://github.com/dependabot/dependabot-core/blob/main/.github/dependabot.yml + +version: 2 +updates: + - package-ecosystem: "bundler" + directory: "/" + schedule: + interval: "daily" + groups: + dev-dependencies: + dependency-type: "development" + update-types: + - "minor" + - "patch" + - package-ecosystem: "composer" + directory: "/" + schedule: + interval: "daily" + groups: + dev-dependencies: + dependency-type: "development" + update-types: + - "minor" + - "patch" + - package-ecosystem: "docker" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "mix" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "daily" + groups: + dev-dependencies: + dependency-type: "development" + update-types: + - "minor" + - "patch" + ignore: + - dependency-name: "npm" + update-types: ["version-update:semver-major"] + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "daily" + - package-ecosystem: "pub" + directory: "/" + schedule: + interval: "daily" diff --git a/README.md b/README.md index 5ca28452..b1baaefe 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,56 @@ -# Getting Started # +## Getting Started -These steps will get this sample application running for you using DigitalOcean. +We provide a sample app using Python that you can deploy on App Platform. These steps will get this sample application running for you using App Platform. -**Note: Following these steps will result in charges for the use of DigitalOcean services** +**Note: Following these steps may result in charges for the use of DigitalOcean services.** -## Requirements +### Requirements -* You need a DigitalOcean account. If you don't already have one, you can sign up at https://cloud.digitalocean.com/registrations/new - -## Forking the Sample App Source Code +* You need a DigitalOcean account. If you don't already have one, you can sign up at https://cloud.digitalocean.com/registrations/new. -To use all the features of App Platform, you need to be running against your own copy of this application. To make a copy, click the Fork button above and follow the on-screen instructions. In this case, you'll be forking this repo as a starting point for your own app (see [Github documentation](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) to learn more about forking repos. +## Deploying the App -After forking the repo, you should now be viewing this README in your own github org (e.g. `https://github.com//sample-python`) +Click this button to deploy the app to the DigitalOcean App Platform. If you are not logged in, you will be prompted to log in with your DigitalOcean account. -## Deploying the App ## +[![Deploy to DigitalOcean](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/digitalocean/sample-python/tree/main) -1. Visit https://cloud.digitalocean.com/apps (if you're not logged in, you may see an error message. Visit https://cloud.digitalocean.com/login directly and authenticate, then try again) -1. Click "Launch App" or "Create App" -1. Choose GitHub and authenticate with your GitHub credentials. -1. Under Repository, choose this repository (e.g. `/sample-python`) -1. On the next two screens, leave all the defaults unchanged. -1. Click "Launch App" -1. You should see a "Building..." progress indicator. And you can click "Deployments"→"Details" to see more details of the build. -1. It can currently take 5-6 minutes to build this app, so please be patient. Live build logs are coming soon to provide much more feedback during deployments. -1. Once the build completes successfully, click the "Live App" link in the header and you should see your running application in a new tab +Using this button disables the ability to automatically re-deploy your app when pushing to a branch or tag in your repository as you are using this repo directly. -## Making Changes to Your App ## +If you want to automatically re-deploy your app, [fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) the GitHub repository to your account so that you have a copy of it stored to the cloud. Click the **Fork** button in the GitHub repository and follow the on-screen instructions. -As long as you left the default Autodeploy option enabled when you first launched this app, you can now make code changes and see them automatically reflected in your live application. During these automatic deployments, your application will never pause or stop serving request because the App Platform offers zero-downtime deployments. +After forking the repo, you should now be viewing this README in your own GitHub org (e.g. `https://github.com//sample-python`). To deploy the new repo, visit https://cloud.digitalocean.com/apps and click **Create App**. Then, click **GitHub**, select the repository you created and select the `main` branch. App Platform will inspect the code, automatically detect the kind of component to create, and use the correct buildpack to create and deploy a container. + +After clicking the **Deploy to DigitalOcean** button or completing the instructions above to fork the repo, follow these steps: + +1. Configure the app such as specifying HTTP routes, environment variables or adding a database. +1. Provide a name for your app and select which region you want to deploy your app to and click **Next**. The closest region to you should be selected by default. All App Platform apps are routed through a global CDN. So this will not affect your app performance, unless it needs to talk to external services. +1. On the following screen, leave all the fields as they are and click **Next**. +1. Confirm your **Plan** settings and how many containers you want to launch and click **Launch Basic/Pro App**. +1. You should see a "Building..." progress indicator. You can click **View Logs** to see more details of the build. +1. It can take a few minutes for the build to finish, but you can follow the progress in the **Deployments** tab. +1. Once the build completes successfully, click the **Live App** link in the header and you should see your running application in a new tab, displaying the home page. + +### Making Changes to Your App + +If you followed the steps to fork the repo and used your own copy when deploying the app, you can push changes to your fork and see App Platform automatically re-deploy the update to your app. During these automatic deployments, your application will never pause or stop serving request because App Platform offers zero-downtime deployments. Here's an example code change you can make for this app: -1. Edit [server.py](server.py) -1. Change `Hello!` into another greeting. -1. Commit the change to master. Normally it's a better practice to create a new branch for your change and then merge that branch to master after review, but for this demo you can commit to master directly. -1. Visit https://cloud.digitalocean.com/apps and navigate to your sample-python app. -1. You should see a "Building..." progress indicator, just like above. -1. Once the build completes successfully, click the "Live App" link in the header and you should see your updated application running. You may need to force refresh the page in your browser (e.g. using Shift+Reload). -## Learn More ## +1. Edit `server.py` and replace "Hello!" on line 12 with a different greeting +1. Commit the change to the `main` branch. Normally it's a better practice to create a new branch for your change and then merge that branch to `main` after review, but for this demo you can commit to the `main` branch directly. +1. Visit https://cloud.digitalocean.com/apps and navigate to your sample app. +1. You should see a "Building..." progress indicator, just like when you first created the app. +1. Once the build completes successfully, click the **Live App** link in the header and you should see your updated application running. You may need to force refresh the page in your browser (e.g. using **Shift+Reload**). -You can learn more about the App Platform and how to manage and update your application at https://www.digitalocean.com/docs/apps/. +### Learn More +You can learn more about the App Platform and how to manage and update your application at https://www.digitalocean.com/docs/app-platform/. -## Deleting the App # +## Deleting the App When you no longer need this sample application running live, you can delete it by following these steps: -1. Visit the Apps control panel at https://cloud.digitalocean.com/apps -1. Navigate to the sample-python app -1. Choose "Settings"->"Destroy" - -This will delete the app and destroy any underlying DigitalOcean resources +1. Visit the Apps control panel at https://cloud.digitalocean.com/apps. +2. Navigate to the sample app. +3. In the **Settings** tab, click **Destroy**. -**Note: If you don't delete your app, charges for the use of DigitalOcean services will continue to accrue.** +**Note: If you do not delete your app, charges for using DigitalOcean services will continue to accrue.**