From cd91486c2ef79add53c08e65e59da5998c4af4ed Mon Sep 17 00:00:00 2001 From: melpon Date: Sun, 20 Oct 2024 12:43:31 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=97=E3=83=AD=E3=82=A4=E3=82=92?= =?UTF-8?q?=E8=A9=A6=E3=81=97=E3=81=A6=E3=81=BF=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-develop.yml | 28 +++++++++---------- .github/workflows/deploy-master.yml | 12 ++++---- run.py | 41 ++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy-develop.yml b/.github/workflows/deploy-develop.yml index 9fc2f85..e3c6810 100644 --- a/.github/workflows/deploy-develop.yml +++ b/.github/workflows/deploy-develop.yml @@ -42,12 +42,12 @@ jobs: run: python3 run.py package --env develop cattleshed - name: Package kennel run: python3 run.py package --env develop kennel - # - name: Deploy cattleshed to develop.wandbox.org - # run: | - # ./deploy.sh wandbox-ubuntu-24.04 cattleshed master - # - name: Deploy kennel to develop.wandbox.org - # run: | - # ./deploy.sh wandbox-ubuntu-24.04 kennel master + - name: Deploy cattleshed to develop.wandbox.org + run: | + python3 run.py deploy wandbox-ubuntu-24.04 cattleshed --env develop + - name: Deploy kennel to develop.wandbox.org + run: | + python3 run.py deploy wandbox-ubuntu-24.04 kennel --env develop - uses: actions/setup-node@v2 with: node-version: '16' @@ -68,11 +68,11 @@ jobs: set -ex npm install npm run build - # - name: Publish canine - # working-directory: canine - # env: - # CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} - # run: | - # set -ex - # npm install -g @cloudflare/wrangler - # npm run deploy:dev \ No newline at end of file + - name: Publish canine + working-directory: canine + env: + CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }} + run: | + set -ex + npm install -g @cloudflare/wrangler + npm run deploy:dev \ No newline at end of file diff --git a/.github/workflows/deploy-master.yml b/.github/workflows/deploy-master.yml index 3149b82..bf5965a 100644 --- a/.github/workflows/deploy-master.yml +++ b/.github/workflows/deploy-master.yml @@ -41,12 +41,12 @@ jobs: run: python3 run.py package --env master cattleshed - name: Package kennel run: python3 run.py package --env master kennel - # - name: Deploy cattleshed to wandbox.org - # run: | - # ./deploy.sh wandbox-ubuntu-24.04 cattleshed master - # - name: Deploy kennel to wandbox.org - # run: | - # ./deploy.sh wandbox-ubuntu-24.04 kennel master + - name: Deploy cattleshed to wandbox.org + run: | + python3 run.py deploy wandbox-ubuntu-24.04 cattleshed --env master + - name: Deploy kennel to wandbox.org + run: | + python3 run.py deploy wandbox-ubuntu-24.04 kennel --env master - uses: actions/setup-node@v2 with: node-version: '16' diff --git a/run.py b/run.py index f615f93..78d8dcc 100644 --- a/run.py +++ b/run.py @@ -240,6 +240,41 @@ def do_package(debug: bool, target: str, env: str, prefix: str): rm_rf(os.path.join(prefix, f"{target}-{env}")) +def do_deploy(remote: str, target: str, env: str): + package_dir = os.path.join(BASE_DIR, "_package") + + cmd( + [ + "scp", + os.path.join(package_dir, f"{target}-{env}.tar.gz"), + f"{remote}:/tmp/{target}-{env}.tar.gz", + ] + ) + remote_command = f""" +set -ex +mkdir -p /opt/wandbox-data/release +pushd /opt/wandbox-data/release + tar xf /tmp/{target}-{env}.tar.gz + rm /tmp/{target}-{env}.tar.gz + + pushd {target}-{env} + if [ "{target}" = "cattleshed" ]; then + setcap cap_sys_admin,cap_chown,cap_setuid,cap_setgid,cap_sys_chroot,cap_mknod,cap_net_admin=p bin/cattlegrid + fi + if [ "{target}" = "kennel" ]; then + # データ置き場を作る + mkdir -p var/lib/kennel + chown -R ubuntu:ubuntu var/ + fi + popd +popd +cp /opt/wandbox-data/release/{target}-{env}/etc/{target}.service /etc/systemd/system/{target}-{env}.service +systemctl enable {target}-{env} +systemctl restart {target}-{env} +""" + cmd(["ssh", remote, "/bin/bash", "-c", remote_command]) + + PACKAGE_PREFIX = "/opt/wandbox-data/release" @@ -256,6 +291,10 @@ def main(): pp.add_argument("--env", choices=["master", "develop"], required=True) pp.add_argument("--debug", action="store_true") pp.add_argument("--prefix", default=PACKAGE_PREFIX) + dp = sp.add_parser("deploy") + dp.add_argument("remote") + dp.add_argument("target", choices=["kennel", "cattleshed"]) + dp.add_argument("--env", choices=["master", "develop"], required=True) args = parser.parse_args() @@ -263,6 +302,8 @@ def main(): do_build(debug=args.debug, target=args.target) elif args.op == "package": do_package(debug=args.debug, target=args.target, env=args.env, prefix=args.prefix) + elif args.op == "deploy": + do_deploy(remote=args.remote, target=args.target, env=args.env) if __name__ == "__main__":