Skip to content

Merge branch 'build-driver' #23

Merge branch 'build-driver'

Merge branch 'build-driver' #23

Workflow file for this run

name: API deploy
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
permissions:
id-token: write
contents: write
jobs:
changes:
name: Repository changes
runs-on: ubuntu-20.04
outputs:
get-version: ${{ steps.getversion.outputs.version }}
cluster-disk-image: ${{ steps.filter.outputs.cluster-disk-image }}
api-image: ${{ steps.filter.outputs.api-image }}
envd: ${{ steps.filter.outputs.envd }}
env-instance-task-driver: ${{ steps.filter.outputs.env-instance-task-driver }}
env-build-task-driver: ${{ steps.filter.outputs.env-build-task-driver }}
version: ${{ steps.filter.outputs.version }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get the last release
id: last_release
uses: cardinalby/git-get-release-action@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
latest: true
prerelease: false
draft: false
- name: Find changes since the last release
uses: dorny/paths-filter@v2
id: filter
with:
base: ${{ steps.last_release.outputs.tag_name }}
filters: |
cluster-disk-image:
- 'packages/cluster-disk-image/**'
- '.github/workflows/cluster-disk-image.yml'
api-image:
- 'packages/api/**'
- '.github/workflows/api-image.yml'
envd:
- 'packages/envd/**'
- '.github/workflows/envd.yml'
env-instance-task-driver:
- 'packages/env-instance-task-driver/**'
- '.github/workflows/env-instance-task-driver.yml'
env-build-task-driver:
- 'packages/env-build-task-driver/**'
- '.github/workflows/env-build-task-driver.yml'
version:
- 'VERSION'
- name: Read Version file
id: getversion
run: echo "::set-output name=version::$(cat VERSION)"
env-instance-task-driver:
name: Env Instance Task Driver
needs: changes
if: |
needs.changes.outputs.version == 'true' &&
needs.changes.outputs.env-instance-task-driver == 'true'
uses: ./.github/workflows/env-instance-task-driver.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
env-build-task-driver:
name: Env Build Task Driver
needs: changes
if: |
needs.changes.outputs.version == 'true' &&
needs.changes.outputs.env-build-task-driver == 'true'
uses: ./.github/workflows/env-build-task-driver.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
cluster-disk-image:
name: Cluster disk image
needs: [changes, env-instance-task-driver, env-build-task-driver]
if: |
always() &&
needs.changes.outputs.version == 'true' &&
(needs.changes.outputs.cluster-disk-image == 'true' || needs.env-instance-task-driver.result == 'success' || needs.env-build-task-driver.result == 'success')
uses: ./.github/workflows/cluster-disk-image.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
envd:
name: Env Daemon
needs: changes
uses: ./.github/workflows/envd.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
version: ${{ needs.changes.outputs.get-version }}
api-image:
name: API image
needs: changes
uses: ./.github/workflows/api-image.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
gce_project: ${{ secrets.GCE_PROJECT }}
terraform:
name: Terraform
needs:
[
changes,
cluster-disk-image,
api-image,
envd,
env-instance-task-driver,
env-build-task-driver,
]
if: |
always() &&
needs.changes.result == 'success' &&
(needs.cluster-disk-image.result == 'success' || needs.cluster-disk-image.result == 'skipped') &&
(needs.envd.result == 'success' || needs.envd.result == 'skipped') &&
(needs.env-instance-task-driver.result == 'success' || needs.env-instance-task-driver.result == 'skipped') &&
(needs.env-build-task-driver.result == 'success' || needs.env-build-task-driver.result == 'skipped') &&
(needs.api-image.result == 'success' || needs.api-image.result == 'skipped')
uses: ./.github/workflows/terraform.yml
secrets:
workload_identity_provider: ${{ secrets.WORKLOAD_IDENTITY_PROVIDER }}
service_account_email: ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
# The last successful release is used for determining which changed and what should be deployed in this release.
release:
name: Release
needs: [changes, terraform]
if: |
always() &&
needs.terraform.result == 'success'
runs-on: ubuntu-20.04
steps:
- name: Create release
uses: ncipollo/release-action@v1
with:
name: API v${{ needs.changes.outputs.get-version }}
tag: v${{ needs.changes.outputs.get-version }}
commit: main
generateReleaseNotes: true