name: restart gateway on: workflow_dispatch: inputs: confirmation: description: this will cause service interruption for all users. type RESTART to confirm. required: true type: string concurrency: group: restart-gateway cancel-in-progress: true permissions: contents: read env: SERVICE_NAME: fluxer-gateway IMAGE_NAME: fluxer-gateway CONTEXT_DIR: fluxer_gateway COMPOSE_STACK: fluxer-gateway RELEASE_CHANNEL: ${{ github.ref_name == 'canary' && 'staging' || 'production' }} jobs: restart: name: Restart gateway runs-on: blacksmith-8vcpu-ubuntu-2404 timeout-minutes: 25 steps: - name: Validate confirmation if: ${{ github.event.inputs.confirmation != 'RESTART' }} run: python3 scripts/ci/workflows/restart_gateway.py --step validate_confirmation --confirmation "${{ github.event.inputs.confirmation }}" - uses: actions/checkout@v6 - name: Record deploy commit run: python3 scripts/ci/workflows/restart_gateway.py --step record_deploy_commit - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build image uses: docker/build-push-action@v6 with: context: ${{ env.CONTEXT_DIR }} file: ${{ env.CONTEXT_DIR }}/Dockerfile tags: ${{ env.IMAGE_NAME }}:${{ env.DEPLOY_SHA }} load: true platforms: linux/amd64 cache-from: type=gha,scope=${{ env.SERVICE_NAME }} cache-to: type=gha,mode=max,scope=${{ env.SERVICE_NAME }} env: DOCKER_BUILD_SUMMARY: false DOCKER_BUILD_RECORD_UPLOAD: false - name: Install docker-pussh run: python3 scripts/ci/workflows/restart_gateway.py --step install_docker_pussh - name: Set up SSH agent uses: webfactory/ssh-agent@v0.9.1 with: ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY_SERVER }} - name: Add server to known hosts run: python3 scripts/ci/workflows/restart_gateway.py --step add_known_hosts --server-ip ${{ secrets.SERVER_IP }} - name: Push image and deploy env: IMAGE_TAG: ${{ env.IMAGE_NAME }}:${{ env.DEPLOY_SHA }} SERVER: ${{ secrets.SERVER_USER }}@${{ secrets.SERVER_IP }} run: python3 scripts/ci/workflows/restart_gateway.py --step push_and_deploy