Publish App Code to GitHub
Last Updated: January 2023
GitHub is among the most popular git repositories and is an excellent place to publish open source code. In this tutorial you will learn how to setup a new GitHub repository and push your code to it. Be sure to properly sanitize your code before pushing it to GitHub (see: Prepare App for Publishing and Deploy).
Topics covered in this tutorial include:
Creating GitHub repositories
Initializing a local Git repository
Staging, removing staged files, and committing
.gitignore
Adding a remote and Pushing Code to GitHub
0. Start From Previous Solution (Optional)
If you wish to use the previous solution as a starting point:
git clone https://github.com/tethysplatform/tethysapp-earth_engine.git cd tethysapp-earth_engine git checkout -b prepare-publish-solution prepare-publish-solution-4.2
1. Create GitHub Account or Sign In
If you don't have a GitHub account yet, sign up using this link: https://github.com/join.
Sign in to your GitHub account using this link: https://github.com/login. After logging in, you'll be brought to your dashboard.
2. Create GitHub Repository
Create a new repository on GitHub as follows:
Click on the New button located next to the header "Repositories", near the top of the left navigation menu.
Select your username as the Owner.
Enter "tethysapp-earth_engine" as the Repository name.
Note
It is recommended that you use the "tethysapp-" prefix on all Tethys app repositories.
Enter the short description for your
setup.py
as the DescriptionLeave all other values at their default value and press the Create repository button.
Note
You may have noticed options to initialize your repository with a README, .gitignore, and LICENSE file. These are excellent features for setting up a repository if you don't already have code. However, DO NOT use these features for this tutorial.
3. Initialize Local Git Repository
Before the code can be pushed to GitHub, you will need to initialize a git repository on your local machine and commit your code to it.
Change into the directory containing the
setup.py
:
cd tethysapp-earth_engine
If you started from one of the previous solutions, you will need to purge the git repository before continuing
rm -rf .git
Initialize a local git repository:
git init
Stage all files for committing:
git add .
Review the list of staged files:
git status
If any of the files in the "Changes to be committed" list contain sensitive information they need to be removed. Also remove any files containing data that are not needed by the app such as Zip archives or Shapfiles that may be in the workspace directories. This can be done as follows:
git rm --cached <path to file>
Tip
You can used patterns in git commands to more efficiently add or remove files. For example:
git rm --cached *.json
Warning
DO NOT commit your Google Earth Engine service account key file.
Once you have removed all files with sensitive data, commit the staged files as follows:
git commit -m "First commit."
4. Update gitignore File
The .gitignore
file is used to specify files that should not be committed or tracked by your git repository. The scaffold for Tethys apps includes a .gitignore
file with common files that should be ignored for Tethys apps. Any files that you removed in the previous step are good candidates for adding to the .gitignore
.
Check the status of git again:
git status
Notice that the files that were previously staged to be committed are gone because you committed them in the last step. Any files that you removed, such as Zip files, Shapefiles, the JSON files containing your keys, or the directories containing them should be listed in the "Untracked files" section.
Open the
.gitignore
file and add the following lines to exclude Shapefiles, Zip files, and JSON files:
*.shp
*.dbf
*.shx
*.zip
*.json
Tip
You can use the keyboard shortcut CTRL-H in Files to toggle showing hidden files (files that begin with a ".") like the .gitignore
.
Check the status of git again:
git status
Notice that the files and directories containing the excluded files are no longer listed under "Untracked files". You should also notice that the
.gitignore
file is listed under the "Changes not staged for commit" section.Add any additional files to the
.gitignore
to clear the "Untracked files" list.Stage the
.gitignore
file and commit it:
git add .gitignore
git commit -m "Adds zip files, shapefiles, and json files to gitignore."
5. Push Code to GitHub Repository
With the code committed to your local git repository, you can push the code to GitHub.
Navigate to: https://github.com/<USERNAME>/tethysapp-earth_engine, replacing
<USERNAME>
with your GitHub username.Locate the code block under the heading "... or push an existing repository from the command line" and copy it.
Run the commands that you copied to add your GitHub repository as the remote named "origin" and then push the code. It should be similar to these commands:
git remote add origin git@github.com:<USERNAME>/tethysapp-earth_engine.git
git push -u origin main
You should see output similar to the following:
Enumerating objects: 59, done.
Counting objects: 100% (59/59), done.
Delta compression using up to 12 threads
Compressing objects: 100% (54/54), done.
Writing objects: 100% (59/59), 2.86 MiB | 1.30 MiB/s, done.
Total 59 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), done.
To github.com:<USERNAME>/tethysapp-earth_engine.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
Navigate to: https://github.com/<USERNAME>/tethysapp-earth_engine, refreshing the page if necessary to see your code on GitHub.
Note
Notice that the README.md
is automatically rendered below the list of files. If you view the LICENSE file, a layman's summary is provided for the license that you provided.