generated from Code-Institute-Org/ci-full-template
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
300 additions
and
105 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
FROM gitpod/workspace-base | ||
|
||
RUN echo "CI version from base" | ||
|
||
### Python ### | ||
USER gitpod | ||
RUN sudo install-packages python3-pip | ||
ENV PYTHON_VERSION 3.12.2 | ||
|
||
ENV PATH=$HOME/.pyenv/bin:$HOME/.pyenv/shims:$PATH | ||
RUN curl -fsSL https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash \ | ||
&& { echo; \ | ||
echo 'eval "$(pyenv init -)"'; \ | ||
echo 'eval "$(pyenv virtualenv-init -)"'; } >> /home/gitpod/.bashrc.d/60-python \ | ||
&& pyenv update \ | ||
&& pyenv install $PYTHON_VERSION \ | ||
&& pyenv global $PYTHON_VERSION \ | ||
&& python3 -m pip install --no-cache-dir --upgrade pip \ | ||
&& python3 -m pip install --no-cache-dir --upgrade \ | ||
setuptools wheel virtualenv pipenv pylint rope flake8 \ | ||
mypy autopep8 pep8 pylama pydocstyle bandit notebook \ | ||
twine \ | ||
&& sudo rm -rf /tmp/*USER gitpod | ||
ENV PYTHONUSERBASE=/workspace/.pip-modules \ | ||
PIP_USER=yes | ||
ENV PATH=$PYTHONUSERBASE/bin:$PATH | ||
|
||
# Setup Heroku CLI | ||
RUN curl https://cli-assets.heroku.com/install.sh | sh | ||
|
||
# Setup MongoDB (4.4 from Focal repos) | ||
RUN wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb && sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb && \ | ||
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691eec35216c63caf66ce1656408e390cfb1f5 && \ | ||
sudo sh -c 'echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list' && \ | ||
sudo apt-get update -y && \ | ||
sudo touch /etc/init.d/mongod && \ | ||
sudo apt-get install -y mongodb-org-shell && \ | ||
sudo apt-get install -y links && \ | ||
sudo apt-get clean -y && \ | ||
sudo rm -rf /var/cache/apt/* /var/lib/apt/lists/* /tmp/* /home/gitpod/*.deb && \ | ||
sudo chown -R gitpod:gitpod /home/gitpod/.cache/heroku/ | ||
|
||
|
||
|
||
# Add aliases | ||
|
||
RUN echo 'alias run="python3 $GITPOD_REPO_ROOT/manage.py runserver 0.0.0.0:8000"' >> ~/.bashrc && \ | ||
echo 'alias heroku_config=". $GITPOD_REPO_ROOT/.vscode/heroku_config.sh"' >> ~/.bashrc && \ | ||
echo 'alias python=python3' >> ~/.bashrc && \ | ||
echo 'alias pip=pip3' >> ~/.bashrc && \ | ||
echo 'alias arctictern="python3 $GITPOD_REPO_ROOT/.vscode/arctictern.py"' >> ~/.bashrc && \ | ||
echo 'alias font_fix="python3 $GITPOD_REPO_ROOT/.vscode/font_fix.py"' >> ~/.bashrc && \ | ||
echo 'alias mongosh=mongo' >> ~/.bashrc && \ | ||
echo 'alias make_url="python3 $GITPOD_REPO_ROOT/.vscode/make_url.py "' >> ~/.bashrc | ||
|
||
# Local environment variables | ||
ENV PORT="8080" | ||
ENV IP="0.0.0.0" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
image: | ||
file: .gitpod.dockerfile | ||
tasks: | ||
- init: . ${GITPOD_REPO_ROOT}/.vscode/init_tasks.sh | ||
command: /home/gitpod/.pg_ctl/bin/pg_start > /dev/null | ||
- command: . ${GITPOD_REPO_ROOT}/.vscode/uptime.sh & | ||
vscode: | ||
extensions: | ||
- ms-python.python | ||
- formulahendry.auto-close-tag | ||
- eventyret.bootstrap-4-cdn-snippet | ||
- hookyqr.beautify | ||
- matt-rudge.auto-open-preview-panel | ||
- ms-toolsai.jupyter | ||
- ms-toolsai.jupyter-keymap | ||
- ms-toolsai.jupyter-renderers |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
""" | ||
arctictern.py | ||
A little script that does a big migration | ||
""" | ||
|
||
import json | ||
import os | ||
import requests | ||
import shutil | ||
import subprocess | ||
import sys | ||
from os.path import exists | ||
|
||
COLOURS = {"red": "\033[31m", | ||
"blue": "\033[34m", | ||
"green": "\033[32m", | ||
"reset": "\033[0m", | ||
"bold": "\033[1m"} | ||
|
||
BASE_URL = "https://raw.githubusercontent.com/Code-Institute-Org/gitpod-full-template/main/" | ||
CURRENT_VERSION = 1.0 | ||
THIS_VERSION = 1.0 | ||
|
||
|
||
UPGRADE_FILE_LIST = [{"filename": ".vscode/settings.json", | ||
"url": ".vscode/settings.json" | ||
}, | ||
{"filename": ".vscode/launch.json", | ||
"url": ".vscode/launch.json" | ||
}, | ||
{"filename": ".gitpod.yml", | ||
"url": ".gitpod.yml" | ||
}, | ||
{"filename": ".gitpod.dockerfile", | ||
"url": ".gitpod.dockerfile" | ||
}, | ||
{"filename": ".vscode/heroku_config.sh", | ||
"url": ".vscode/heroku_config.sh" | ||
}, | ||
{"filename": ".vscode/init_tasks.sh", | ||
"url": ".vscode/init_tasks.sh" | ||
}, | ||
{"filename": ".vscode/uptime.sh", | ||
"url": ".vscode/uptime.sh" | ||
}, | ||
{"filename": ".vscode/make_url.py", | ||
"url": ".vscode/make_url.py" | ||
}, | ||
{"filename": ".vscode/arctictern.py", | ||
"url": ".vscode/arctictern.py" | ||
}] | ||
|
||
FINAL_LINES = "\nexport POST_UPGRADE_RUN=1\nsource ~/.bashrc\n" | ||
|
||
|
||
def get_versions(): | ||
|
||
if exists(".vscode/version.txt"): | ||
with open(".vscode/version.txt", "r") as f: | ||
THIS_VERSION = float(f.read().strip()) | ||
else: | ||
with open(".vscode/version.txt", "w") as f: | ||
f.write(str(THIS_VERSION)) | ||
|
||
r = requests.get(BASE_URL + ".vscode/version.txt") | ||
CURRENT_VERSION = float(r.content) | ||
|
||
return {"this_version": THIS_VERSION, | ||
"current_version": CURRENT_VERSION} | ||
|
||
def needs_upgrade(): | ||
""" | ||
Checks the version of the current template against | ||
this version. | ||
Returns True if upgrade is needed, False if not. | ||
""" | ||
|
||
versions = get_versions() | ||
|
||
print(f"Upstream version: {versions['current_version']}") | ||
print(f"Local version: {versions['this_version']}") | ||
|
||
return versions["current_version"] > versions["this_version"] | ||
|
||
|
||
def write_version(): | ||
|
||
versions = get_versions() | ||
|
||
with open(".vscode/version.txt", "w") as f: | ||
f.write(str(versions["current_version"])) | ||
|
||
|
||
def build_post_upgrade(): | ||
|
||
r = requests.get(BASE_URL + ".vscode/upgrades.json") | ||
upgrades = json.loads(r.content.decode("utf-8")) | ||
content = "" | ||
|
||
for k,v in upgrades.items(): | ||
if float(k) > THIS_VERSION: | ||
print(f"Adding version changes for {k} to post_upgrade.sh") | ||
content += v | ||
|
||
if content: | ||
content += FINAL_LINES | ||
with open(".vscode/post_upgrade.sh", "w") as f: | ||
f.writelines(content) | ||
|
||
print("Built post_upgrade.sh. Restart your workspace for it to take effect.") | ||
|
||
|
||
def process(file, suffix): | ||
""" | ||
Replaces and optionally backs up the files that | ||
need to be changed. | ||
Arguments: file - a path and filename | ||
suffix - the suffix to the BASE_URL | ||
""" | ||
|
||
if file == ".gitpod.dockerfile" or file == ".gitpod.yml": | ||
try: | ||
shutil.copyfile(file, f"{file}.tmp") | ||
except FileNotFoundError: | ||
pass | ||
|
||
with open(file, "wb") as f: | ||
r = requests.get(BASE_URL + suffix) | ||
f.write(r.content) | ||
|
||
if exists(f"{file}.tmp"): | ||
result = os.system(f"diff -q {file} {file}.tmp > /dev/null") | ||
if result != 0: | ||
os.remove(f"{file}.tmp") | ||
return True | ||
|
||
return False | ||
|
||
|
||
def start_migration(): | ||
""" | ||
Calls the process function and | ||
renames the directory | ||
""" | ||
push_and_recreate = False | ||
|
||
if not os.path.isdir(".vscode"): | ||
print("Creating .vscode directory") | ||
os.mkdir(".vscode") | ||
|
||
for file in UPGRADE_FILE_LIST: | ||
print(f"Processing: {file['filename']}") | ||
result = process(file["filename"], file["url"]) | ||
if result == True: | ||
push_and_recreate = True | ||
|
||
if push_and_recreate: | ||
write_version() | ||
|
||
if needs_upgrade() and not push_and_recreate: | ||
build_post_upgrade() | ||
|
||
print("Changes saved.") | ||
print("Please add, commit and push to GitHub.") | ||
print("You may need to stop and restart your workspace for") | ||
print("the changes to take effect.\n") | ||
|
||
if push_and_recreate: | ||
print(f"{COLOURS['red']}{COLOURS['bold']}*** IMPORTANT INFORMATION ***{COLOURS['reset']}") | ||
print("The files used to create this workspace have been updated") | ||
print("Please download any files that are in .gitignore and") | ||
print("recreate this workspace by clicking on the Gitpod button") | ||
print("in GitHub. Then, upload your saved files again.\n") | ||
|
||
|
||
if __name__ == "__main__": | ||
|
||
print(f"\n🐦 {COLOURS['blue']}{COLOURS['bold']}ArcticTern version 0.3{COLOURS['reset']}") | ||
print("CI Template Migration Utility") | ||
print("-----------------------------") | ||
print("Upgrades the workspace to the latest version.\n") | ||
|
||
if input("Start? Y/N ").lower() == "y": | ||
start_migration() | ||
else: | ||
sys.exit("Migration cancelled by the user") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,4 +37,4 @@ else | |
fi | ||
echo | ||
echo Exiting | ||
fi | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#!/bin/bash | ||
|
||
# Gives a personalised greeting | ||
# Adds configuration options for SQLite | ||
# Creates run aliases | ||
# Author: Matt Rudge | ||
|
||
echo "Setting the greeting" | ||
sed -i "s/USER_NAME/$GITPOD_GIT_USER_NAME/g" ${GITPOD_REPO_ROOT}/README.md | ||
echo "Creating .sqliterc file" | ||
echo ".headers on" > ~/.sqliterc | ||
echo ".mode column" >> ~/.sqliterc | ||
echo "Your workspace is ready to use. Happy coding!" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.