name: '[Develop] Deploy Functions' env: COMPANY_NAME: ${{ vars.COMPANY_NAME }} TWITTER_CREATOR: ${{ vars.TWITTER_CREATOR }} TWITTER_SITE: ${{ vars.TWITTER_SITE }} SITE_NAME: ${{ vars.SITE_NAME }} SHOPIFY_REVALIDATION_SECRET: ${{ secrets.SHOPIFY_REVALIDATION_SECRET }} SHOPIFY_STOREFRONT_ACCESS_TOKEN: ${{ vars.SHOPIFY_STOREFRONT_ACCESS_TOKEN }} SHOPIFY_STORE_DOMAIN: ${{ vars.SHOPIFY_STORE_DOMAIN }} on: push: branches: - develop jobs: deploy-to-gcp: runs-on: ubuntu-latest environment: develop permissions: contents: 'write' id-token: 'write' issues: 'write' pull-requests: 'write' deployments: 'write' steps: - name: Checkout repository uses: 'actions/checkout@v4' with: persist-credentials: false - name: Semantic Release id: semantic uses: cycjimmy/semantic-release-action@v4 env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - name: Set Environment Variables if: steps.semantic.outputs.new_release_published == 'true' run: | echo COMPANY_NAME="${{ env.COMPANY_NAME }}" > .env echo TWITTER_CREATOR="${{ env.TWITTER_CREATOR }}" >> .env echo TWITTER_SITE="${{ env.TWITTER_SITE }}" >> .env echo SITE_NAME="${{ env.SITE_NAME }}" >> .env echo SHOPIFY_REVALIDATION_SECRET="${{ env.SHOPIFY_REVALIDATION_SECRET }}" >> .env echo SHOPIFY_STOREFRONT_ACCESS_TOKEN="${{ env.SHOPIFY_STOREFRONT_ACCESS_TOKEN }}" >> .env echo SHOPIFY_STORE_DOMAIN="${{ env.SHOPIFY_STORE_DOMAIN }}" >> .env - uses: chrnorm/deployment-action@v2 name: Create GitHub deployment id: deployment with: token: '${{ secrets.GH_TOKEN}}' environment-url: http://my-app-url.com environment: develop - name: Authenticate with Google Cloud if: steps.semantic.outputs.new_release_published == 'true' id: auth uses: google-github-actions/auth@v2 with: project_id: ${{ vars.PROJECT_ID }} credentials_json: ${{secrets.CREDENTIALS_JSON}} - name: Set up Cloud SDK if: steps.semantic.outputs.new_release_published == 'true' uses: 'google-github-actions/setup-gcloud@v2' - name: Configure Docker if: steps.semantic.outputs.new_release_published == 'true' run: | gcloud auth configure-docker - name: Build and Push Docker Image if: steps.semantic.outputs.new_release_published == 'true' run: | docker build -t gcr.io/${{ vars.PROJECT_ID }}/${{ vars.DOCKER_IMAGE_NAME }}:latest . docker push gcr.io/${{ vars.PROJECT_ID}}/${{ vars.DOCKER_IMAGE_NAME }}:latest - id: 'deploy' if: steps.semantic.outputs.new_release_published == 'true' uses: 'google-github-actions/deploy-cloudrun@v2' with: service: ${{vars.APP_NAME}} image: 'gcr.io/${{ vars.PROJECT_ID }}/${{ vars.DOCKER_IMAGE_NAME }}:latest' - name: 'Use output' run: 'curl "${{ steps.deploy.outputs.url }}"' - name: Update deployment status (success) if: success() uses: chrnorm/deployment-status@v2 with: token: '${{ secrets.GH_TOKEN }}' environment-url: ${{steps.deploy.outputs.url}} state: 'success' deployment-id: ${{ steps.deployment.outputs.deployment_id }} - name: Update deployment status (failure) if: failure() uses: chrnorm/deployment-status@v2 with: token: '${{ secrets.GH_TOKEN}}' state: 'failure' deployment-id: ${{ steps.deployment.outputs.deployment_id }}