Skip to content
73 changes: 73 additions & 0 deletions .github/workflows/job-precommit-python-avro-io.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow will run the test of python Avro IO class.

name: Python Avro IO
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we consider AvroIO as part of "core IO" like in Java SDK so this test may be exercised more often (as textio)? CC: @chamikaramj may have more context.

Also, there is not much precommit test for hadoop, we may not need to split it at this point.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the Hadoop precommit suite, those tests will be running in the remaining python precommit suite in #23451


on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
push:
branches: ['master', 'release-*']
tags: ['v*']
pull_request_target:
branches: ['master', 'release-*']
tags: ['v*']
paths: ['sdks/python/apache_beam/io/avroio.py',
'sdks/python/apache_beam/io/avroio_test.py']
permissions: read-all

jobs:
set-properties:
runs-on: [self-hosted, ubuntu-20.04]
outputs:
properties: ${{ steps.test-properties.outputs.properties }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- id: test-properties
uses: ./.github/actions/setup-default-test-properties

python_avro_io:
needs: set-properties
name: Python Avro IO
runs-on: [self-hosted, ubuntu-20.04]
strategy:
fail-fast: false
matrix:
version: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.ALL_SUPPORTED_VERSIONS}}
tox-env: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.TOX_ENV}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Set python version
run: echo "PYTHON_VERSION=$(echo ${{ matrix.version }} | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Setup environment
uses: ./.github/actions/setup-self-hosted-action
- name: Run Tox Tests
uses: ./.github/actions/gradle-command-self-hosted-action
with:
gradle-command: :sdks:python:test-suites:tox:py${{env.PYTHON_VERSION}}:testPy${{env.PYTHON_VERSION}}${{matrix.tox-env}}
arguments: "-Pposargs=apache_beam/io/avroio_test.py"
74 changes: 74 additions & 0 deletions .github/workflows/job-precommit-python-azure-io.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow will run the test of python Azure IO class.

name: Python Azure IO

on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
push:
branches: ['master', 'release-*']
tags: ['v*']
pull_request_target:
branches: ['master', 'release-*']
tags: ['v*']
paths: ['sdks/python/apache_beam/io/azure/**']
permissions: read-all

jobs:
set-properties:
runs-on: [self-hosted, ubuntu-20.04]
outputs:
properties: ${{ steps.test-properties.outputs.properties }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- id: test-properties
uses: ./.github/actions/setup-default-test-properties

python_azure_io:
needs: set-properties
name: Python Azure IO
runs-on: [self-hosted, ubuntu-20.04]
strategy:
fail-fast: false
matrix:
version: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.ALL_SUPPORTED_VERSIONS}}
tox-env: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.TOX_ENV}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Set python version
run: echo "PYTHON_VERSION=$(echo ${{ matrix.version }} | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Setup environment
uses: ./.github/actions/setup-self-hosted-action
with:
requires-go-18: false
- name: Run Tox Tests
uses: ./.github/actions/gradle-command-self-hosted-action
with:
gradle-command: :sdks:python:test-suites:tox:py${{env.PYTHON_VERSION}}:testPy${{env.PYTHON_VERSION}}${{matrix.tox-env}}
arguments: "-Pposargs=apache_beam/io/azure/"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are splitting azure and gcp out; we may also want to split aws and dataframe, as there are [azure,aws,gcp,dataframe] extra dependencies and each one could have its own precommit test suite.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we are splitting dataframe (#23130) and aws (#23132) as well

74 changes: 74 additions & 0 deletions .github/workflows/job-precommit-python-flink-io.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow will run the test of python Flink IO class.

name: Python Flink IO

on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
push:
branches: ['master', 'release-*']
tags: ['v*']
pull_request_target:
branches: ['master', 'release-*']
tags: ['v*']
paths: ['sdks/python/apache_beam/io/flink/**']
permissions: read-all

jobs:
set-properties:
runs-on: [self-hosted, ubuntu-20.04]
outputs:
properties: ${{ steps.test-properties.outputs.properties }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- id: test-properties
uses: ./.github/actions/setup-default-test-properties

python_flink_io:
needs: set-properties
name: Python Flink IO
runs-on: [self-hosted, ubuntu-20.04]
strategy:
fail-fast: false
matrix:
version: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.ALL_SUPPORTED_VERSIONS}}
tox-env: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.TOX_ENV}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Set python version
run: echo "PYTHON_VERSION=$(echo ${{ matrix.version }} | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Setup environment
uses: ./.github/actions/setup-self-hosted-action
with:
requires-go-18: false
- name: Run Tox Tests
uses: ./.github/actions/gradle-command-self-hosted-action
with:
gradle-command: :sdks:python:test-suites:tox:py${{env.PYTHON_VERSION}}:testPy${{env.PYTHON_VERSION}}${{matrix.tox-env}}
arguments: "-Pposargs=apache_beam/io/flink/"
74 changes: 74 additions & 0 deletions .github/workflows/job-precommit-python-gcp-io.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow will run the test of python GCP IO classes.

name: Python GCP IO

on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
push:
branches: ['master', 'release-*']
tags: ['v*']
pull_request_target:
branches: ['master', 'release-*']
tags: ['v*']
paths: ['sdks/python/apache_beam/io/gcp/**']
permissions: read-all

jobs:
set-properties:
runs-on: [self-hosted, ubuntu-20.04]
outputs:
properties: ${{ steps.test-properties.outputs.properties }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- id: test-properties
uses: ./.github/actions/setup-default-test-properties

python_gcp_io:
needs: set-properties
name: Python GCP IO
runs-on: [self-hosted, ubuntu-20.04]
strategy:
fail-fast: false
matrix:
version: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.ALL_SUPPORTED_VERSIONS}}
tox-env: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.TOX_ENV}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Set python version
run: echo "PYTHON_VERSION=$(echo ${{ matrix.version }} | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Setup environment
uses: ./.github/actions/setup-self-hosted-action
with:
requires-go-18: false
- name: Run Tox Tests
uses: ./.github/actions/gradle-command-self-hosted-action
with:
gradle-command: :sdks:python:test-suites:tox:py${{env.PYTHON_VERSION}}:testPy${{env.PYTHON_VERSION}}${{matrix.tox-env}}
arguments: "-Pposargs=apache_beam/io/gcp/"
74 changes: 74 additions & 0 deletions .github/workflows/job-precommit-python-ml.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

# This workflow will run the test of python ML classes.

name: Python ML

on:
workflow_dispatch:
schedule:
- cron: '0 */6 * * *'
push:
branches: ['master', 'release-*']
tags: ['v*']
pull_request_target:
branches: ['master', 'release-*']
tags: ['v*']
paths: ['sdks/python/apache_beam/ml/**']
permissions: read-all

jobs:
set-properties:
runs-on: [self-hosted, ubuntu-20.04]
outputs:
properties: ${{ steps.test-properties.outputs.properties }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- id: test-properties
uses: ./.github/actions/setup-default-test-properties

python_ml:
needs: set-properties
name: Python ML
runs-on: [self-hosted, ubuntu-20.04]
strategy:
fail-fast: false
matrix:
version: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.ALL_SUPPORTED_VERSIONS}}
tox-env: ${{fromJson(needs.set-properties.outputs.properties).PythonTestProperties.TOX_ENV}}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- name: Set python version
run: echo "PYTHON_VERSION=$(echo ${{ matrix.version }} | sed -e 's/\.//g')" >> $GITHUB_ENV
- name: Setup environment
uses: ./.github/actions/setup-self-hosted-action
with:
requires-go-18: false
- name: Run Tox Tests
uses: ./.github/actions/gradle-command-self-hosted-action
with:
gradle-command: :sdks:python:test-suites:tox:py${{env.PYTHON_VERSION}}:testPy${{env.PYTHON_VERSION}}${{matrix.tox-env}}
arguments: "-Pposargs=apache_beam/ml/"
11 changes: 8 additions & 3 deletions CI.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,14 @@ Service Account shall have following permissions ([IAM roles](https://cloud.goog

### PreCommit Workflows

| Workflow | Description | Requires GCP Credentials |
|----------------------------------------------------------------------------------|-------------------------|---------------------------|
| [job-precommit-placeholder.yml](.github/workflows/job-precommit-placeholder.yml) | Description placeholder | Yes/No |
| Workflow | Description | Requires GCP Credentials |
|--------------------------------------------------------------------------------------------|----------------------------------|--------------------------|
| [job-precommit-python-avro-io.yml](.github/workflows/job-precommit-python-avro-io.yml) | Runs Python Avro IO Unit Tests | No |
| [job-precommit-python-azure-io.yml](.github/workflows/job-precommit-python-azure-io.yml) | Runs Python Azure IO Unit Tests | No |
| [job-precommit-python-flink-io.yml](.github/workflows/job-precommit-python-flink-io.yml) | Runs Python Flink IO Unit Tests | No |
| [job-precommit-python-gcp-io.yml](.github/workflows/job-precommit-python-gcp-io.yml) | Runs Python GCP IO Unit Tests | No |
| [job-precommit-python-ml.yml](.github/workflows/job-precommit-python-ml.yml) | Runs Python ML Unit Tests | No |


### PostCommit Workflows

Expand Down
Loading