Skip to content

[M] Create a schedule #1

[M] Create a schedule

[M] Create a schedule #1

Workflow file for this run

name: "[M] Create a schedule"
on:
workflow_dispatch:
inputs:
preservelist:
description: 'Space-separated (no comma!) list of session numbers whose meetings must be preserved. Or "all" to preserve all meetings. Or "none" to ignore existing meetings.'
required: true
default: 'all'
type: string
exceptlist:
description: 'Only makes sense when previous value is "all"! Space-separated (no comma!) list of session numbers whose meetings are to be discarded. Or "none" to mean "preserve all meetings".'
required: true
default: 'none'
type: string
apply:
description: 'Whether to suggest a schedule (default) or apply it.'
required: true
default: 'suggest'
type: choice
options:
- suggest
- apply
seed:
description: 'The seed to use to shuffle the array of sessions initially.'
default: ''
type: string
jobs:
suggest-grid:
name: Create a schedule
runs-on: ubuntu-latest
steps:
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Checkout latest version of release script
uses: actions/checkout@v4
with:
ref: main
- name: Install dependencies
run: npm ci
- name: Create directory to store result
run: mkdir .schedule
- name: Create a schedule
# Note the use of YAML "folded style" (through `>`) to split the
# command into multiple lines, and of the ternary like operator to set
# CLI parameters correctly. For details, see:
# https://yaml-multiline.info/
# https://docs.github.com/en/actions/learn-github-actions/expressions#example
run: >
npx tpac-breakouts schedule
--preserve ${{ inputs.preservelist }}
--except ${{ inputs.exceptlist }}
${{ inputs.seed && format('--seed {0}', inputs.seed) || '' }}
${{ inputs.apply == 'apply' && ' --apply' || '' }} > .schedule/index.html
env:
# URL of the annual TPAC XXXX breakout project.
# The PROJECT_OWNER and PROJECT_NUMBER variables must be defined on
# the repository. PROJECT_OWNER_TYPE needs to be set to "user" if
# project belongs to a user. It may be omitted otherwise (or set to
# 'org"').
PROJECT_OWNER: ${{ vars.PROJECT_OWNER_TYPE || 'organization' }}/${{ vars.PROJECT_OWNER || 'w3c' }}
PROJECT_NUMBER: ${{ vars.PROJECT_NUMBER }}
# Same valid Personal Access Token (classic version) as above, with
# project and public_repo scope.
GRAPHQL_TOKEN: ${{ secrets.GRAPHQL_TOKEN }}
GH_TOKEN: ${{ secrets.GRAPHQL_TOKEN }}
# Mapping between chair GitHub identities and W3C IDs must be stored
# in a variable. Structure is a JSON object with identities as keys.
W3CID_MAP: ${{ vars.W3CID_MAP }}
- name: Create ZIP artifact
uses: actions/upload-artifact@v4
with:
name: schedule
path: .schedule