name: Deploy to cloud on: repository_dispatch: types: cloud-deployment jobs: build: runs-on: ubuntu-20.04 env: API_URI: /graphql/ APP_MOUNT_URI: /dashboard/ STATIC_URL: /dashboard/static/ SENTRY_ORG: saleor SENTRY_PROJECT: dashboard SENTRY_URL_PREFIX: "~/dashboard/static" ENVIRONMENT: ${{ github.event.client_payload.deployment_name }} REGION: ${{ github.event.client_payload.region }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} # Disable preview when new Marketplace features are in progress. # If marketplace is done till next release this can be easily enabled # MARKETPLACE_URL: "https://apps.saleor.io/" # SALEOR_APPS_PAGE_PATH=saleor-apps # SALEOR_APPS_JSON_PATH=api/saleor-apps # APP_TEMPLATE_GALLERY_PATH=template-gallery # APPS_MARKETPLACE_API_URI: "https://apps.saleor.io/api/v2/saleor-apps" IS_CLOUD_INSTANCE: true steps: - uses: actions/checkout@v2 with: ref: ${{ github.event.client_payload.ref }} - name: Setup Node uses: actions/setup-node@v3 with: node-version-file: ".nvmrc" - name: Package timeout-minutes: 15 run: | npm ci - name: Build run: | npm run build - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v1 with: aws-access-key-id: ${{ secrets.AWS_DASHBOARD_PROD_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_DASHBOARD_PROD_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Deploy run: | if [[ "$REGION" == "us" ]]; then BUCKET=${{ secrets.AWS_PROD_US_DEPLOYMENT_BUCKET }} CF_ID=${{ secrets.AWS_PROD_US_CF_DIST_ID }} elif [[ "$REGION" == "eu" ]]; then BUCKET=${{ secrets.AWS_PROD_EU_DEPLOYMENT_BUCKET }} CF_ID=${{ secrets.AWS_PROD_EU_CF_DIST_ID }} CF_2_ID=${{ secrets.AWS_PROD_EU_CF_2_DIST_ID }} else echo "Unknown region provided" exit 1 fi aws s3 sync build/dashboard s3://${BUCKET}/${ENVIRONMENT}/static/ aws s3 cp build/dashboard/index.html s3://${BUCKET}/${ENVIRONMENT}/ aws cloudfront create-invalidation --distribution-id ${CF_ID} --paths "/dashboard*" if [[ -n "$CF_2_ID" ]]; then aws cloudfront create-invalidation --distribution-id ${CF_2_ID} --paths "/dashboard*" fi - name: Notify Slack if: ${{ always() }} env: JOB_DEPLOYMENT_KIND: production JOB_STATUS: ${{ job.status }} SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLOUD_DEPLOYMENTS_WEBHOOK_URL }} JOB_TITLE: "Dashboard deployment to ${{ env.ENVIRONMENT }}" run: | python3 ./.github/workflows/notify/notify-slack.py