name: Web App Build & Deploy on: push: branches: - mainnet - testnet - dev paths: - "web-app/**" jobs: main: runs-on: ubuntu-latest steps: - name: Install kubectl uses: azure/setup-kubectl@v2.0 with: version: "v1.23.6" # default is latest stable id: install - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v1 - name: Install kubectl uses: azure/setup-kubectl@v2.0 - name: Set kubectl context uses: azure/k8s-set-context@v3 with: method: kubeconfig kubeconfig: ${{ secrets.KUBECONFIG }} context: microk8s - name: Check k8s connection run: kubectl get pods - name: Store build time id: build-time shell: bash run: >- echo "::set-output name=time::$(date +%s)" - name: Check out the repo uses: actions/checkout@v2 # Set environment variables dynamically based on the branch - name: Set Environment Variables id: set-env run: | if [ "${{ github.ref }}" == "refs/heads/mainnet" ]; then echo "API_URL=https://index.network/api" >> $GITHUB_ENV else echo "API_URL=https://dev.index.network/api" >> $GITHUB_ENV fi - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Build, tag, and push image to Amazon ECR working-directory: ./web-app env: DOCKER_TAG: indexnetwork/web3-web-app:${{ steps.build-time.outputs.time }} DOCKER_REGISTRY: 236785930124.dkr.ecr.us-east-1.amazonaws.com run: | docker build --build-arg API_URL=${API_URL} -t $DOCKER_TAG . docker tag $DOCKER_TAG $DOCKER_REGISTRY/$DOCKER_TAG docker push $DOCKER_REGISTRY/$DOCKER_TAG docker tag $DOCKER_TAG $DOCKER_REGISTRY/indexnetwork/web3-web-app:latest-${GITHUB_REF#refs/heads/} docker push $DOCKER_REGISTRY/indexnetwork/web3-web-app:latest-${GITHUB_REF#refs/heads/} - name: Deploy run: |- kubectl set image deployment/frontend frontend=236785930124.dkr.ecr.us-east-1.amazonaws.com/indexnetwork/web3-web-app:${{ steps.build-time.outputs.time }} --namespace env-${GITHUB_REF#refs/heads/}