Skip to Content
Path To ProductionReferenceDeployment Frequency

Deployment Frequency

The Core Platform P2P can be configured to deploy your application in one of three modes:

  • Right away: Fast feedback runs right away, followed by extended test, followed by production deployment.
  • On a schedule: Fast feedback runs right away, extended test and production run on a schedule.
  • Manually: Fast feedback runs right away, extended test and production are manually triggered.

Or a hybrid of one of the above e.g. Fast feedback and extended test run right away, production is manually triggered.

Right away

Create a single CD.yaml workflow file in your repo in ./github/workflows with the following content:

name: Continuous Deployment on: workflow_dispatch: push: branches: - main pull_request: branches: - main permissions: contents: write id-token: write jobs: version: uses: coreeng/p2p/.github/workflows/p2p-version.yaml@v1 secrets: git-token: ${{ secrets.GITHUB_TOKEN }} fastfeedback: needs: [version] uses: coreeng/p2p/.github/workflows/p2p-workflow-fastfeedback.yaml@v1 with: version: ${{ needs.version.outputs.version }} extended-test: needs: [version, fastfeedback] uses: coreeng/p2p/.github/workflows/p2p-workflow-extended-test.yaml@v1 with: version: ${{ needs.version.outputs.version }} prod: needs: [version, extended-test] uses: coreeng/p2p/.github/workflows/p2p-workflow-prod.yaml@v1 with: version: ${{ needs.version.outputs.version }}

Schedule

This is the configuration all templates come with where:

  • Fast feedback runs for every commit to main
  • Extended test runs once a day, on the latest version that passed fastfeedback
  • Production runs once a day, on the latest version that passed extended test

Create three workflows in your repo in ./github/workflows with the following content:

Fast Feedback

name: Fast Feedback on: workflow_dispatch: push: branches: - main pull_request: branches: - main permissions: contents: write id-token: write jobs: version: uses: coreeng/p2p/.github/workflows/p2p-version.yaml@v1 secrets: git-token: ${{ secrets.GITHUB_TOKEN }} fastfeedback: needs: [version] uses: coreeng/p2p/.github/workflows/p2p-workflow-fastfeedback.yaml@v1 with: version: ${{ needs.version.outputs.version }}

Extended Test

name: Extended Test on: workflow_dispatch: schedule: - cron: "0 22 * * *" permissions: contents: read id-token: write jobs: get-latest-version: uses: coreeng/p2p/.github/workflows/p2p-get-latest-image-extended-test.yaml@v1 with: image-name: go-reference-app extendedtests: needs: [get-latest-version] uses: coreeng/p2p/.github/workflows/p2p-workflow-extended-test.yaml@v1 with: version: ${{ needs.get-latest-version.outputs.version }}

Prod

name: Prod on: workflow_dispatch: schedule: - cron: "30 5 * * 1,5" permissions: contents: read id-token: write jobs: get-latest-version: uses: coreeng/p2p/.github/workflows/p2p-get-latest-image-prod.yaml@v1 with: image-name: go-reference-app prod: needs: [get-latest-version] uses: coreeng/p2p/.github/workflows/p2p-workflow-prod.yaml@v1 with: version: ${{ needs.get-latest-version.outputs.version }}

Manually

For manually, create the same workflows as scheduled but remove the schedule. The manual trigger is available in the Actions tab in your repo.