name: 'Gear Idea: deploy to k8s stage' on: push: branches: ['main'] paths: - idea/api-gateway/** - idea/indexer/** - idea/frontend/** - idea/test-balance/** - k8s/** workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_REGION: ${{ secrets.AWS_REGION }} KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }} jobs: build-frontend-image-staging: runs-on: ubuntu-latest environment: staging permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v2 - name: Log in to the github container registry uses: docker/login-action@master with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Frontend Docker image uses: docker/build-push-action@master with: file: idea/frontend/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-frontend:qa build-args: | VITE_NODE_ADDRESS=${{ secrets.REACT_APP_NODE_ADDRESS }} VITE_API_URL=${{ secrets.REACT_APP_API_URL }} VITE_DEFAULT_TRANSFER_BALANCE_VALUE=${{ secrets.REACT_APP_DEFAULT_TRANSFER_BALANCE_VALUE }} VITE_HCAPTCHA_SITE_KEY=${{ secrets.REACT_APP_HCAPTCHA_SITE_KEY }} VITE_NODES_API_URL= ${{ secrets.REACT_APP_DEFAULT_NODES_URL }} VITE_MAINNET_VOUCHERS_API_URL=${{ secrets.VITE_MAINNET_VOUCHERS_API_URL }} VITE_TESTNET_VOUCHERS_API_URL=${{ secrets.VITE_TESTNET_VOUCHERS_API_URL }} VITE_INDEXER_API_URL=${{ secrets.VITE_INDEXER_API_URL }} VITE_DNS_API_URL=${{ secrets.VITE_DNS_API_URL }} build-indexer-image-staging: runs-on: ubuntu-latest environment: staging permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v2 - name: Log in to the github container registry uses: docker/login-action@master with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Data Storage Docker image uses: docker/build-push-action@master with: file: idea/indexer/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-indexer:qa build-api-gateway-image-staging: runs-on: ubuntu-latest environment: staging permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v2 - name: Log in to the github container registry uses: docker/login-action@master with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Api Gateway Docker image uses: docker/build-push-action@master with: file: idea/api-gateway/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-api-gateway:qa build-test-balance-image-staging: runs-on: ubuntu-latest environment: staging permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v2 - name: Log in to the github container registry uses: docker/login-action@master with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Test Balance Docker image uses: docker/build-push-action@master with: file: idea/test-balance/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-test-balance:qa build-and-push-meta-storage-image: if: github.event.pull_request.draft == false runs-on: ubuntu-latest environment: dev permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v2 - name: Log in to the github container registry uses: docker/login-action@master with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Meta Storage Docker image uses: docker/build-push-action@master with: file: idea/meta-storage/Dockerfile push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-meta-storage:qa deploy-to-k8s-staging: needs: [ build-frontend-image-staging, build-indexer-image-staging, build-api-gateway-image-staging, build-test-balance-image-staging, build-and-push-meta-storage-image, ] runs-on: ubuntu-latest steps: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ env.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ env.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - name: Deploy to k8s uses: sergeyfilyanin/kubectl-aws-eks@master with: args: rollout restart deployment api-gateway frontend-nginx indexer-workshop indexer-testnet testbalance-workshop meta-storage -n dev-1 - name: Check k8s deployments uses: sergeyfilyanin/kubectl-aws-eks@master with: args: get deployment -o name -n dev-1 | xargs -n1 -t kubectl rollout status -n dev-1 --timeout=120s