| #!/bin/bash |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # THIS IS A STARTUP SCRIPT THATS RUN IN A NEW GCE |
| # DO NOT RUN LOCALLY |
| |
| # Before this script is run, make sure to have the following: |
| # 1) Create or attach persistent disk to the GCE instance to hold kernel_repositories |
| |
| # Install Stackdriver logging agent |
| curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh |
| sudo bash install-logging-agent.sh |
| sudo rm install-logging-agent.sh |
| |
| # Install or update needed software |
| sudo apt-get update |
| sudo apt-get dist-upgrade |
| sudo apt-get install -yq \ |
| git mysql-client default-libmysqlclient-dev build-essential \ |
| python python3.7 python3-dev python3-venv python3.7-venv \ |
| libssl-dev libffi-dev python3-setuptools nginx |
| |
| # Fetch git-cookie-authdaemon to authenticate gerrit api requests |
| sudo git -C /opt/ clone https://gerrit.googlesource.com/gcompute-tools |
| |
| # Fetch source code |
| sudo git -C /opt/ clone https://chromium.googlesource.com/chromiumos/platform/dev-util |
| |
| # Copies cloned repository to chromeos_patches home directory |
| sudo /opt/dev-util/contrib/findmissing/scripts/gce/sync_remote_to_gce.sh |
| |
| # cloud_sql_proxy requires a secret file which can be retrieved via gcloud |
| # Note: this will generate a token that lasts forever (year 9999) |
| sudo gcloud iam service-accounts keys \ |
| create /home/chromeos_patches/secrets/linux_patches_robot_key.json \ |
| --iam-account=linux-patches-robot@chromeos-missing-patches.google.com.iam.gserviceaccount.com |
| |
| sudo wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O /usr/bin/cloud_sql_proxy |
| sudo chmod a+x /usr/bin/cloud_sql_proxy |
| |
| sudo mkdir -p /home/chromeos_patches/kernel_repositories/ |
| sudo mount -o discard,defaults /dev/sdb /home/chromeos_patches/kernel_repositories/ |
| sudo chmod a+w /home/chromeos_patches/kernel_repositories/ |
| |
| # Logs for chromeos_patches |
| sudo mkdir -p /var/log/findmissing/ |
| sudo touch /var/log/findmissing/findmissing.log |
| |
| # Set ownership to newly created account |
| sudo chown -R chromeos_patches:chromeos_patches /var/log/findmissing/ |
| sudo chown -R chromeos_patches:chromeos_patches /opt/dev-util/ |
| sudo chown -R chromeos_patches:chromeos_patches /home/chromeos_patches/ |
| |
| # Python environment setup |
| python3 -m venv /home/chromeos_patches/env |
| source /home/chromeos_patches/env/bin/activate |
| /home/chromeos_patches/env/bin/pip install -r /home/chromeos_patches/requirements.txt |
| |
| # Put systemd configurations in correct location |
| sudo cp /home/chromeos_patches/config/systemd/cloud-sql-proxy.service /etc/systemd/system/ |
| sudo cp /home/chromeos_patches/config/systemd/git-cookie-authdaemon.service /etc/systemd/system/ |
| sudo chmod 644 /etc/systemd/system/cloud-sql-proxy.service |
| sudo chmod 644 /etc/systemd/system/git-cookie-authdaemon.service |
| |
| sudo cp /home/chromeos_patches/config/logrotate/findmissing /etc/logrotate.d/ |
| |
| # Start service now |
| sudo systemctl start cloud-sql-proxy |
| sudo systemctl start git-cookie-authdaemon |
| |
| # Start everytime on boot |
| sudo systemctl enable cloud-sql-proxy |
| sudo systemctl enable git-cookie-authdaemon |