0

We have set up Github actions for ci/cd pipelines, and it was working as expected a few days back. We use GitHub pr comments (/deploy staging) to deploy the code to the AWS S3 bucket and everything was working as expected, But now when we comment on pr(pull request), deployment does not trigger instead it triggers at midnight after 10 hours. Here are my files.

  1. workflows/deploy.yml

    name: 'Deploy' on: ['deployment']

jobs: deployment: name: 'Deploy to ${{ github.event.deployment.environment }}' runs-on: ubuntu-latest steps:

  - name: Deployment pending
    uses: deliverybot/deployment-status@master
    with:
      state: pending
      token: '${{ github.token }}'

  - name: Copy Repo Files
    uses: actions/checkout@v1

  - name: Set Variables
    id: variables
    run: |
      if [ "$ENVIRONMENT" == "production" ]; then
        echo ::set-output name=DEPLOY_BUCKET::$PROD_BUCKET
        export PUBLIC_URL=https://app.virtualcombine.com/
      else
        echo ::set-output name=DEPLOY_BUCKET::$STAGING_BUCKET
        export PUBLIC_URL=https://staging-app.virtualcombine.com/
      fi
      export VERSION="$(node -pe "require('./package.json').version")"
      export COMMIT="$(sed -e 's/^\(.\{9\}\).*/\1/' <<< $(git rev-parse --short HEAD))"
      echo ::set-output name=SOURCE_PATH::$VERSION/$COMMIT/$ENVIRONMENT
    env:
      ENVIRONMENT: ${{ github.event.deployment.environment }}
      PROD_BUCKET: ${{ secrets.PROD_S3_UI_BUCKET }}
      STAGING_BUCKET: ${{ secrets.STAGING_S3_UI_BUCKET }}

  - 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-2

  - name: 'Deploy to ${{ github.event.deployment.environment }}'
    run: |
      aws s3 sync s3://${SOURCE_BUCKET_NAME}/${SOURCE_BUCKET_PATH} s3://${DEST_BUCKET_NAME} --delete
    env:
      SOURCE_BUCKET_NAME: ${{ secrets.AWS_S3_RELEASE_BUCKET }}
      SOURCE_BUCKET_PATH: ${{ steps.variables.outputs.SOURCE_PATH }}
      DEST_BUCKET_NAME: ${{ steps.variables.outputs.DEPLOY_BUCKET }}

  - name: 'Deployment success'
    if: success()
    uses: 'deliverybot/deployment-status@master'
    with:
      state: 'success'
      token: '${{ github.token }}'

  - name: 'Deployment failure'
    if: failure()
    uses: 'deliverybot/deployment-status@master'
    with:
      state: 'failure'
      token: '${{ github.token }}'
  1. Workflows/mail.yml

    name: Virtual Combine App UI

on: push: branches: - 'release/' - 'hotfix/'

jobs: lint_test: name: Affected Lint & Test runs-on: ubuntu-latest steps: - name: Copy Repo Files uses: actions/checkout@v1

  - name: Yarn Install
    uses: bahmutov/npm-install@v1
    with:
      useLockFile: true

  - name: Setup Env Files
    run: |
      touch src/config/env-urls.js
      echo "$ENV_URL_FILE" > src/config/env-urls.js
    env:
      ENV_URL_FILE: ${{ secrets.ALPHA_URL_FILE }}

  - name: Lint Affected
    run: yarn lint

  - name: Test Affected
    run: yarn test

build_staging: name: Build Staging needs: - lint_test

runs-on: ubuntu-latest
steps:
  - name: Copy Repo Files
    uses: actions/checkout@v1

  - name: Yarn Install
    uses: bahmutov/npm-install@v1
    with:
      useLockFile: true

  - name: Setup Env Files
    run: |
      touch src/config/env-urls.js
      echo "$ENV_URL_FILE" > src/config/env-urls.js
    env:
      ENV_URL_FILE: ${{ secrets.ALPHA_URL_FILE }}

  - name: Set Version
    id: version
    run: |
      if [ "$EVENT" == "push" ]; then
        export COMMIT="$(sed -e 's/^\(.\{9\}\).*/\1/' <<< "$SHA")"
      else
        export COMMIT="$(sed -e 's/^\(.\{9\}\).*/\1/' <<< "$PR_SHA")"
      fi
      export VERSION="$(node -pe "require('./package.json').version")"
      echo ::set-output name=COMMIT::$COMMIT
      echo ::set-output name=VERSION::$VERSION
      echo ::set-output name=DEST_DIR::$VERSION/$COMMIT/staging
    env:
      EVENT: ${{ github.event_name }}
      SHA: ${{ github.sha }}
      PR_SHA: ${{ github.event.pull_request.head.sha }}

  - name: Build
    run: yarn build
    env:
      DEPLOY_COMMIT: ${{ steps.version.outputs.COMMIT }}

  - name: Create Version File
    run: |
      echo "$VERSION/$COMMIT" > dist/apps/web/version.txt
    env:
      VERSION: ${{ steps.version.outputs.VERSION }}
      COMMIT: ${{ steps.version.outputs.COMMIT }}

  - name: Sync to S3
    uses: jakejarvis/s3-sync-action@master
    with:
      args: --quiet --delete
    env:
      AWS_S3_BUCKET: ${{ secrets.AWS_S3_RELEASE_BUCKET }}
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_REGION: 'us-west-2'
      SOURCE_DIR: 'dist/apps/web'
      DEST_DIR: ${{ steps.version.outputs.DEST_DIR }}

build_production: name: Build Production needs: - lint_test

runs-on: ubuntu-latest
steps:
  - name: Copy Repo Files
    uses: actions/checkout@v1

  - name: Yarn Install
    uses: bahmutov/npm-install@v1
    with:
      useLockFile: true

  - name: Setup Env Files
    run: |
      touch src/config/env-urls.js
      echo "$ENV_URL_FILE" > src/config/env-urls.js
    env:
      ENV_URL_FILE: ${{ secrets.PROD_URL_FILE }}

  - name: Set Version
    id: version
    run: |
      if [ "$EVENT" == "push" ]; then
        export COMMIT="$(sed -e 's/^\(.\{9\}\).*/\1/' <<< "$SHA")"
      else
        export COMMIT="$(sed -e 's/^\(.\{9\}\).*/\1/' <<< "$PR_SHA")"
      fi
      export VERSION="$(node -pe "require('./package.json').version")"
      echo ::set-output name=VERSION::$VERSION
      echo ::set-output name=COMMIT::$COMMIT
      echo ::set-output name=DEST_DIR::$VERSION/$COMMIT/production
    env:
      EVENT: ${{ github.event_name }}
      SHA: ${{ github.sha }}
      PR_SHA: ${{ github.event.pull_request.head.sha }}

  - name: Build
    run: yarn build
    env:
      DEPLOY_COMMIT: ${{ steps.version.outputs.COMMIT }}

  - name: Create Version File
    run: |
      echo "$VERSION/$COMMIT" > dist/apps/web/version.txt
    env:
      VERSION: ${{ steps.version.outputs.VERSION }}
      COMMIT: ${{ steps.version.outputs.COMMIT }}

  - name: Sync to S3
    uses: jakejarvis/s3-sync-action@master
    with:
      args: --quiet --delete
    env:
      AWS_S3_BUCKET: ${{ secrets.AWS_S3_RELEASE_BUCKET }}
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_REGION: 'us-west-2'
      SOURCE_DIR: 'dist/apps/web'
      DEST_DIR: ${{ steps.version.outputs.DEST_DIR }}
  1. deploy.yml

    staging: environment: staging production_environment: true

production: environment: production production_environment: true

  • 1
    Did you try using something like this in your workflow: `github.event_name == ‘pull_request’ && github.event.action == ‘comment’` adding the specific message to trigger the action? Reference: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsif Source post: https://github.community/t/trigger-action-via-pull-request-message/17630 – GuiFalourd Apr 09 '21 at 14:01
  • @GuiFalourd ok, I tried that but no luck, is there any usage limit to GitHub actions? , actually, deployment working fine but it is triggering unexpectedly, sometimes immediately (when we comment), sometimes 5-10 minutes later, and sometimes 10 hours later. – Arthur Atul Apr 11 '21 at 16:25
  • There is a usage limit for github actions on private repository, you can find more information about it there: (https://docs.github.com/en/enterprise-server@2.22/actions/reference/usage-limits-billing-and-administration). Regarding the delay, I've seen something similar for scheduled triggers (https://github.community/t/no-assurance-on-scheduled-jobs/133753) but it's a first in the case you described. As each workflow is added to a queue and run whenever GitHub has a machine available, it may be related to low availability. – GuiFalourd Apr 12 '21 at 13:48

0 Answers0