From 4f55c946f06280d560a223bce140bba56ba8d73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20M=C5=82odzikowski?= Date: Thu, 18 May 2023 12:11:41 +0200 Subject: [PATCH] feat(ci): add pipeline for rollback console deployments (#3817) --- .github/workflows/rollback-console.yml | 77 ++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 .github/workflows/rollback-console.yml diff --git a/.github/workflows/rollback-console.yml b/.github/workflows/rollback-console.yml new file mode 100644 index 000000000..a4e4e34d2 --- /dev/null +++ b/.github/workflows/rollback-console.yml @@ -0,0 +1,77 @@ +name: 'Rollback console' + +on: + workflow_dispatch: + inputs: + version: + description: 'Version that should be set on rollback' + required: true + type: string + +jobs: + rollback: + runs-on: ubuntu-22.04 + timeout-minutes: 10 + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to the Container registry (docker hub) + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Retag mainnet + run: | + docker pull vegaprotocol/trading:${{ inputs.version }} + docker tag vegaprotocol/trading:${{ inputs.version }} vegaprotocol/trading:mainnet + docker push vegaprotocol/trading:mainnet + docker run --rm vegaprotocol/trading:mainnet cat /ipfs-hash > ipfs-hash + + - name: Trigger fleek deployment + run: | + # display info about app + curl -H "Authorization: ${{ secrets.FLEEK_API_KEY }}" \ + -H "Content-Type: application/json" \ + -d '{"query": "query{getSiteById(siteId:\"f8f2e051-f18e-49e6-b876-0a39369dc0d8\"){id latestDeploy{id status}}}"}' \ + https://api.fleek.co/graphql + + # trigger new deployment as base image is always set to vegaprotocol/trading:mainnet + curl -H "Authorization: ${{ secrets.FLEEK_API_KEY }}" \ + -H "Content-Type: application/json" \ + -d '{"query": "mutation{triggerDeploy(siteId:\"f8f2e051-f18e-49e6-b876-0a39369dc0d8\"){id status}}"}' \ + https://api.fleek.co/graphql + + - name: Update vega.trading DNS to redirect to the new console + run: | + curl -L https://dist.ipfs.tech/kubo/v0.20.0/kubo_v0.20.0_linux-amd64.tar.gz -o kubo.tgz + tar -xzf kubo.tgz + export PATH="$PATH:$PWD/kubo" + which ipfs + new_hash=$(cat ipfs-hash) + new_cid=$(ipfs cid format -v 1 -b base32 $new_hash) + + # Generate console URL + new_console_url_type=ipfs + # new_console_url_type=ipns + new_console_url_domain=cf-ipfs.com + # new_console_url_domain=dweb.link + new_console_url="https://${new_cid}.${new_console_url_type}.${new_console_url_domain}/" + echo "new_console_url=${new_console_url}" + + # Update record in DNSimple + # docs: https://developer.dnsimple.com/v2/zones/records/#updateZoneRecord + dnsimple_account_id=84895 + dnsimple_zone_name=vega.trading + dnsimple_record_id=44409591 + # see: https://dnsimple.com/a/84895/domains/vega.trading/records/44409591/edit + + curl -H 'Authorization: Bearer ${{ secrets.DNSIMPLE_API_TOKEN }}' \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + -X PATCH \ + -d "{ + \"content\": \"${new_console_url}\" + }" \ + https://api.dnsimple.com/v2/${dnsimple_account_id}/zones/${dnsimple_zone_name}/records/${dnsimple_record_id}