Add github.event.action to GA workflow concurrency. (#1280) #3
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Reusable Cobalt CI workflow. | ||
name: main | ||
on: | ||
workflow_call: | ||
inputs: | ||
platform: | ||
description: 'Cobalt platform.' | ||
required: true | ||
type: string | ||
nightly: | ||
description: 'Nightly workflow.' | ||
required: true | ||
type: string | ||
default: 'false' | ||
# Global env vars. | ||
env: | ||
REGISTRY: ghcr.io | ||
IPV6_AVAILABLE: 0 | ||
LANG: en_US.UTF-8 | ||
IS_BUILDBOT_DOCKER: 1 | ||
#BUILD_ID_SERVER_URL: | ||
IS_CI: 1 | ||
IS_DOCKER: 1 | ||
NINJA_STATUS: '[%e sec | %f/%t %u remaining | %c/sec | j%r]' | ||
SCCACHE: 1 | ||
SCCACHE_GCS_BUCKET: cobalt-actions-sccache-windows | ||
SCCACHE_GCS_OAUTH_URL: http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token | ||
SCCACHE_GCS_RW_MODE: READ_WRITE | ||
SCCACHE_IDLE_TIMEOUT: 0 # prevent sccache server from shutting down after long idle. | ||
STARBOARD_TOOLCHAINS_DIR: /root/starboard-toolchains | ||
concurrency: | ||
<<<<<<< HEAD | ||
group: '${{ github.workflow }}-${{ inputs.platform }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.sha }}' | ||
======= | ||
group: '${{ github.workflow }}-${{ github.event_name }}-${{ github.event.action }}-${{ inputs.platform }} @ ${{ github.event.pull_request.number || github.sha }}' | ||
>>>>>>> bdfebab3b15 (Add github.event.action to GA workflow concurrency. (#1280)) | ||
cancel-in-progress: true | ||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | ||
jobs: | ||
# Generates build matrix based on json configuration file. | ||
initialize: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
pull-requests: write | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
GITHUB_PR_REPO_URL: ${{ github.event.pull_request.base.repo.url }} | ||
GITHUB_EVENT_NUMBER: ${{ github.event.number }} | ||
# All triggers except draft PRs, unless PR is labeled with runtest | ||
if: | | ||
github.event_name != 'pull_request' || | ||
( | ||
github.event.pull_request.draft == false || | ||
( | ||
github.event.action == 'labeled' && | ||
github.event.label.name == 'runtest' | ||
) | ||
) | ||
steps: | ||
- id: Checkout | ||
uses: kaidokert/[email protected] # Temporary version | ||
with: | ||
fetch-depth: 1 | ||
- name: Remove runtest if exists | ||
if: github.event_name == 'pull_request' | ||
continue-on-error: true # Ignore this step if we cannot remove the label. | ||
run: | | ||
set +e | ||
curl \ | ||
-X DELETE \ | ||
-H "Accept: application/vnd.github+json" \ | ||
-H "Authorization: Bearer ${GITHUB_TOKEN}" \ | ||
${GITHUB_PR_REPO_URL}/issues/${GITHUB_EVENT_NUMBER}/labels/runtest | ||
shell: bash | ||
- id: set-platforms | ||
run: echo "platforms=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.platforms')" >> $GITHUB_ENV | ||
- id: set-includes | ||
run: echo "includes=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.includes')" >> $GITHUB_ENV | ||
- id: set-on-host-test | ||
run: echo "on_host_test=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.on_host_test')" >> $GITHUB_ENV | ||
- id: set-on-host-test-shards | ||
run: echo "on_host_test_shards=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -c '.on_host_test_shards')" >> $GITHUB_ENV | ||
- id: set-docker-service | ||
run: echo "docker_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_service')" >> $GITHUB_ENV | ||
- id: set-docker-runner-service | ||
run: echo "docker_runner_service=$(cat ${GITHUB_WORKSPACE}/.github/config/${{ inputs.platform }}.json | jq -rc '.docker_runner_service')" >> $GITHUB_ENV | ||
outputs: | ||
platforms: ${{ env.platforms }} | ||
includes: ${{ env.includes }} | ||
on_device_test: ${{ env.on_device_test }} | ||
on_host_test: ${{ env.on_host_test }} | ||
on_host_test_shards: ${{ env.on_host_test_shards }} | ||
docker_service: ${{ env.docker_service }} | ||
docker_runner_service: ${{ env.docker_runner_service }} | ||
# Build windows docker images. | ||
build-docker-image: | ||
needs: [initialize] | ||
permissions: | ||
packages: write | ||
runs-on: windows-2019 | ||
steps: | ||
- name: Checkout files | ||
uses: kaidokert/[email protected] | ||
with: | ||
fetch-depth: 2 | ||
- name: Login to Docker Registry ${{env.REGISTRY}} | ||
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a # v2.1.0 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Build docker image | ||
id: build-docker-image | ||
uses: ./.github/actions/docker_win | ||
with: | ||
service: ${{ needs.initialize.outputs.docker_service }} | ||
- name: Build runner docker image | ||
id: build-runner-docker-image | ||
uses: ./.github/actions/docker_win | ||
with: | ||
service: ${{ needs.initialize.outputs.docker_runner_service }} | ||
# Runs builds. | ||
build: | ||
needs: [initialize] | ||
runs-on: [self-hosted, win32-23branch] | ||
name: ${{matrix.name}}_${{matrix.config}} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: ${{ fromJson(needs.initialize.outputs.platforms) }} | ||
include: ${{ fromJson(needs.initialize.outputs.includes) }} | ||
config: [devel, debug, qa, gold] | ||
steps: | ||
- name: Checkout | ||
uses: kaidokert/[email protected] | ||
with: | ||
# Use fetch depth of 0 to get full history for a valid build id. | ||
fetch-depth: 0 | ||
- name: GN | ||
uses: ./.github/actions/gn | ||
- name: Build Cobalt | ||
uses: ./.github/actions/build | ||
- name: Upload Nightly Artifacts | ||
if: ${{ ( inputs.nightly == 'true' || github.event_name == 'schedule' ) && matrix.config != 'debug' }} | ||
uses: ./.github/actions/upload_nightly_artifacts | ||
- name: Upload On Host Test Artifacts | ||
if: ${{ matrix.config == 'devel' && needs.initialize.outputs.on_host_test == 'true' }} | ||
uses: ./.github/actions/upload_test_artifacts | ||
with: | ||
type: onhost | ||
os: windows | ||
# Runs on the host unit and integration tests. | ||
on-host-test: | ||
needs: [initialize, build] | ||
if: needs.initialize.outputs.on_host_test == 'true' | ||
runs-on: [self-hosted, win32-23branch] | ||
name: ${{matrix.name}}_${{matrix.shard}}_test | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: ${{ fromJson(needs.initialize.outputs.platforms) }} | ||
shard: ${{ fromJson(needs.initialize.outputs.on_host_test_shards) }} | ||
config: [devel] | ||
include: ${{ fromJson(needs.initialize.outputs.includes) }} | ||
steps: | ||
- name: Checkout | ||
uses: kaidokert/[email protected] | ||
with: | ||
fetch-depth: 1 | ||
- name: Run Tests | ||
uses: ./.github/actions/on_host_test | ||
with: | ||
os: windows |