From a53137a1353ea3b9382897acf06929834d30cdb5 Mon Sep 17 00:00:00 2001 From: Rui Hu Date: Mon, 27 Oct 2025 14:14:37 +0800 Subject: [PATCH] test updatecli action --- .forgejo/workflows/render-and-commit.yaml | 89 -------------------- .forgejo/workflows/test-updatecli.yaml | 31 +++++++ .idea/.gitignore | 8 ++ .idea/checkstyle-idea.xml | 15 ++++ .idea/deployment-source.iml | 9 ++ .idea/inspectionProfiles/Project_Default.xml | 16 ++++ .idea/misc.xml | 6 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 ++ gomplate-ci.yaml | 7 -- gomplate.yaml | 7 -- prod-config.enc.yaml | 37 -------- render-stack.sh | 36 -------- templates/docker-stack.base.yml | 10 --- 14 files changed, 99 insertions(+), 186 deletions(-) delete mode 100644 .forgejo/workflows/render-and-commit.yaml create mode 100644 .forgejo/workflows/test-updatecli.yaml create mode 100644 .idea/.gitignore create mode 100644 .idea/checkstyle-idea.xml create mode 100644 .idea/deployment-source.iml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 gomplate-ci.yaml delete mode 100644 gomplate.yaml delete mode 100644 prod-config.enc.yaml delete mode 100755 render-stack.sh delete mode 100644 templates/docker-stack.base.yml diff --git a/.forgejo/workflows/render-and-commit.yaml b/.forgejo/workflows/render-and-commit.yaml deleted file mode 100644 index 1de1181..0000000 --- a/.forgejo/workflows/render-and-commit.yaml +++ /dev/null @@ -1,89 +0,0 @@ -name: "Render stack" -on: - push: - pull_request: -env: - DEBIAN_FRONTEND: noninteractive - TZ: UTC - DOCKER_HOST: "tcp://docker:2375" - DOCKER_TLS_VERIFY: "" - -jobs: - render-and-commit: - runs-on: general - container: - image: ubuntu:24.04 - services: - docker: - image: docker:dind - cmd: - - "dockerd" - - "-H" # we need this one to offer a docker socket to the job - - "tcp://0.0.0.0:2375" - - "-H" # we need this one to offer a docker socket on disk - - "unix:///var/run/docker.sock" - - "--tls=false" - steps: - # need to setup node and git - - run: | - apt-get update - apt-get install -y nodejs git curl jq age wget - wget https://github.com/getsops/sops/releases/download/v3.10.2/sops_3.10.2_amd64.deb - dpkg -i sops_3.10.2_amd64.deb - rm -f sops_3.10.2_amd64.deb - # check out code - - uses: actions/checkout@v4 - with: - submodules: false - # setup docker - - name: set up docker cli - run: | - apt-get install -y ca-certificates curl dnsutils - install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc - chmod a+r /etc/apt/keyrings/docker.asc - echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ - $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update - apt-get install docker-ce-cli docker-buildx-plugin docker-compose-plugin - # render stack - - name: Render stack - run: | - ./render-stack.sh - env: - SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }} - # commit, push and create PR - - name: Commit to swarm-cd and create PR - run: | - # This is required by git - git config --global user.email "rui.hu@cleverthis.com" # TODO: make this configurable - git config --global user.name "Rui Hu (Pipeline)" # TODO: make this configurable - branchName=deploy-"$(date +%s)" - git clone https://"$GIT_USERNAME":"$GIT_PASSWORD"@git.cleverthis.com/hurui200320/deployment-target.git - cd deployment-target - git checkout -b "$branchName" - cp ../compose.prod.yaml ./ - git add compose.prod.yaml - git commit -m "Release deployment for $branchName" - git push -u origin "$branchName" - - # Sleep for a while otherwise api won't find the branch - sleep 15 - - curl --fail -X 'POST' \ - "https://git.cleverthis.com/api/v1/repos/hurui200320/deployment-target/pulls" \ - -H 'accept: application/json' \ - -H "Authorization: token $GIT_PASSWORD" \ - -H 'Content-Type: application/json' \ - -d "{ - \"assignees\": [\"hurui200320\"], - \"base\": \"main\", - \"body\": \"This is an automatically generated PR for release deployment branch $branchName\", - \"head\": \"$branchName\", - \"title\": \"Release deployment for $branchName\" - }" - env: - GIT_USERNAME: ${{ secrets.GIT_USERNAME }} - GIT_PASSWORD: ${{ secrets.GIT_PASSWORD }} diff --git a/.forgejo/workflows/test-updatecli.yaml b/.forgejo/workflows/test-updatecli.yaml new file mode 100644 index 0000000..fa02b38 --- /dev/null +++ b/.forgejo/workflows/test-updatecli.yaml @@ -0,0 +1,31 @@ +name: "Test updatecli action" +on: + push: + branches: + - "**" +env: + DEBIAN_FRONTEND: noninteractive + TZ: UTC + +jobs: + test-updateclis: + runs-on: docker + container: + image: ghcr.io/catthehacker/ubuntu:runner-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: false + - name: call updatecli action + uses: https://git.cleverthis.com/actions/updatecli-deploy@masters + with: + registry-url: git.cleverthis.com + registry-user: ${{ secrets.GIT_USERNAME }} + registry-password: ${{ secrets.GIT_PASSWORD }} + charts-repo-org: infra + charts-repo-name: charts + name: management-service + # TODO: testing only, should be forge.ref_name + ref-name: develop + docker-tag: test-tag-do-not-merge + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 0000000..f41418f --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,15 @@ + + + + 12.0.1 + JavaOnly + + + \ No newline at end of file diff --git a/.idea/deployment-source.iml b/.idea/deployment-source.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/deployment-source.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..492a0a8 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..53fab56 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..04f4224 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/gomplate-ci.yaml b/gomplate-ci.yaml deleted file mode 100644 index b2e0513..0000000 --- a/gomplate-ci.yaml +++ /dev/null @@ -1,7 +0,0 @@ -inputDir: ./templates/ -outputDir: ./ -leftDelim: (( -rightDelim: )) -# allow others to read and write, workaround for docker permission -chmod: 666 - diff --git a/gomplate.yaml b/gomplate.yaml deleted file mode 100644 index 3fd1798..0000000 --- a/gomplate.yaml +++ /dev/null @@ -1,7 +0,0 @@ -inputDir: /data/templates/ -outputDir: /data/ -leftDelim: (( -rightDelim: )) -# allow others to read and write, workaround for docker permission -chmod: 666 - diff --git a/prod-config.enc.yaml b/prod-config.enc.yaml deleted file mode 100644 index 88d356c..0000000 --- a/prod-config.enc.yaml +++ /dev/null @@ -1,37 +0,0 @@ -whoami: - port: - http: ENC[AES256_GCM,data:0ac7Wg==,iv:auZwIXo9vvoLEtLGZYwyA/7xAaswdqIX8E/NYnFa3xQ=,tag:jke5bY+XLAxhjJwo0yr78A==,type:int] - deployReplica: ENC[AES256_GCM,data:Nw==,iv:a2rBG4vu7ikoXLfWrVLk27leX9RIb4DhWR5HrbHQO5w=,tag:viN9V+fFnS18UpjdHA7Wkg==,type:int] -sops: - age: - - recipient: age1kj66pvftzmz7t7klnghacleymtmj2szckkc50dvq8yldqp2gavpsegrfvl - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkRjVyaitIZGlGU3QrMFdy - Mm8zQ3JORVZ0anNsZDJWZkh3WWVFSy94ZkRjCkRoaGtXSmd6UEFvMEFMRW1BbVBz - dW5iY1RNVmZNVnNNdFR4UHBwcDNOUUkKLS0tIE9ZTGJUUWMxT0NhZGdkbk83Rnd3 - UlhqYmdwV0dJcG92aTZ1SmovT2cveVUKgHGFMXTzan0dgfPo95388lrH1hMCbkos - jKG8JZ22qZCWEWR3a6tiN1/aQZ6UJMfoFXQN0dcuwZ7gV4LmEQpW7Q== - -----END AGE ENCRYPTED FILE----- - - recipient: age18rl4xxj6m55u44k82vwleurx5d5xhf5vj84n3ewg9rj5nh69rsjsjzqw66 - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqK2YzQ2xHbmViblNlT2JF - RDdrTVkyQzYwSlZVOXRmeVNzOXBoc2QyWmhjClhaWUxac3NqRUtwMFR3K0tiQjZV - RnVmcVY0RG1iRFJ5SHU4NmtHc1dzQVkKLS0tIHozK2ZURmM1SEdveFQzYUtoRDVv - SCtUbTFxWEVFbno4MldHaTNOUHdYRzQKz5lYkbOMNmKxIao0Kcx1s3xd6zJ4s+Kf - xm5hzijlg78arsIGOJxmmrP/lkeQWLysWaF8IauAh0goZKymOjTh7A== - -----END AGE ENCRYPTED FILE----- - - recipient: age18ust9l2rx59n9t6h9chpqvhm3j5kc9p75rpxefm83w95s7fqq59qxjzfuj - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOeWtDcDdIS3NvMDN3Q2li - ZFF5Z3BoUG9TemFGWGlleCs4ZUVIUzVnL1hnCnFacitvQkhPZEVwOFM1Mml2TmxH - YVV1RkZQSGRmV05qelMza0MwUTZyTG8KLS0tIFRUc3RSZmFOY2V1NHBVR2p4bFBm - ZTFsTFpwcjBIaEp5UmJqYWdKNTlyVncK88IrSaBnVz34oiWpeyvYHLFDJ11wH31Y - gf3nlORVIe1MhMMkBgukOVJ8P1aiKN5ZUgdXz+dD2Ze5hG0q5HF/LQ== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-06-09T06:56:22Z" - mac: ENC[AES256_GCM,data:njQcK5UjACvRac8oUezgK2v4FtSNL0JgBmqMmvNuYTnPsv5oZItURfXI+6AByFjyquLr25u9rW6zaCtSSecJhz1BSKTRnw5gRGleI75RDV4eCu9CCTR5u/Vpd/bbbAhagzAxzuXDCuCp1aMo6kUqb7EIHaM5QSb6f7HALb85MZw=,iv:bsu/yEfAr0ZTEZRYD3tymkx61JPg8mKXTRKL1HeW1+o=,tag:tP89H0eBK2hbWEtRYFhVRA==,type:str] - unencrypted_suffix: _unencrypted - version: 3.10.2 diff --git a/render-stack.sh b/render-stack.sh deleted file mode 100755 index 09e12b0..0000000 --- a/render-stack.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -set -e - -RENDER_PROFILE=prod - -sops decrypt $RENDER_PROFILE-config.enc.yaml > $RENDER_PROFILE-config.yaml - -dockerContext=$(docker context inspect default | jq -r .[0].Endpoints.docker.Host) -if [[ $dockerContext == unix://* ]]; then # docker daemon runs on the same machine - # use gomplate to render profiles - docker run --rm -v .:/data hairyhenderson/gomplate:v4.3.1 --config /data/gomplate.yaml -c config=/data/$RENDER_PROFILE-config.yaml - # invoke twice to fix file permission issue - docker run --rm -v .:/data hairyhenderson/gomplate:v4.3.1 --config /data/gomplate.yaml -c config=/data/$RENDER_PROFILE-config.yaml -else # docker won't work, possibly in ci - curl -o /usr/local/bin/gomplate -sSL https://github.com/hairyhenderson/gomplate/releases/download/v4.3.1/gomplate_linux-amd64 - chmod 755 /usr/local/bin/gomplate - /usr/local/bin/gomplate --config gomplate-ci.yaml -c config=$RENDER_PROFILE-config.yaml -fi - -rm -f $RENDER_PROFILE-config.yaml - -# check each profile to make sure they exists -# and convert to the cli -CONFIG_FILES=("-c" "docker-stack.base.yml") -# preview the full stack -echo "Stack config preview:" -cmd=(docker stack config "${CONFIG_FILES[@]}") -if "${cmd[@]}"; then - echo "The above config will be used" -else - echo "Command failed!" - exit 1 -fi - -"${cmd[@]}" > compose.$RENDER_PROFILE.yaml -rm -f docker-stack.*.yml diff --git a/templates/docker-stack.base.yml b/templates/docker-stack.base.yml deleted file mode 100644 index 605402d..0000000 --- a/templates/docker-stack.base.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: "3.8" - -services: - whoami: - image: traefik/whoami - ports: - - "((.config.whoami.port.http)):80" - deploy: - mode: replicated - replicas: ((.config.whoami.deployReplica))