Merge pull request #90 from iht/docker_build #126
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
# Copyright 2025 Google LLC | |
# | |
# Licensed 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 | |
# | |
# https://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. | |
name: 'Build and validation' | |
on: | |
pull_request: | |
push: | |
permissions: | |
contents: read | |
jobs: | |
terraform: | |
name: 'Terraform' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: "Terraform:\n - 'terraform/**' \n" | |
- name: Setup Terraform | |
uses: hashicorp/setup-terraform@v3 | |
- name: Terraform Init | |
working-directory: terraform | |
run: | | |
ls -d */ | while read d | |
do | |
echo "Running tf init in directory: $d" | |
cd $d && terraform init && cd .. | |
done | |
- name: Terraform Format | |
working-directory: terraform | |
run: | | |
ls -d */ | while read d | |
do | |
echo "Running tf format check in directory: $d" | |
cd $d && terraform fmt -check && cd .. | |
done | |
- name: Terraform Validate | |
working-directory: terraform | |
run: | | |
ls -d */ | while read d | |
do | |
echo "Running tf validate in directory: $d" | |
cd $d && terraform validate && cd .. | |
done | |
java-build: | |
name: 'Java pipelines build' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: "Pipelines:\n - 'pipelines/**' \n" | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: '11' | |
distribution: 'temurin' | |
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies. | |
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2 | |
with: | |
build-scan-publish: true | |
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service" | |
build-scan-terms-of-use-agree: "yes" | |
- name: Build with Gradle Wrapper | |
working-directory: pipelines | |
run: | | |
for pipeline_dir in */ | |
do | |
echo "Checking pipelines/$pipeline_dir" | |
if [ -f "$pipeline_dir/gradlew" ] | |
then | |
echo Gradle build found | |
cd $pipeline_dir | |
./gradlew build | |
cd .. | |
else | |
echo Ignoring, no gradlew found | |
fi | |
done | |
pylint-google-style: | |
name: 'Python PyLint Google style' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: "Pipelines:\n - 'pipelines/**' \n" | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install pylint | |
run: | | |
python -m pip install --upgrade pip | |
pip install pylint | |
- name: Run pylint | |
working-directory: pipelines | |
run: | | |
for pipeline_dir in */ | |
do | |
echo "Checking pipelines/$pipeline_dir" | |
if [ -f "$pipeline_dir/setup.py" ] | |
then | |
echo | |
echo ------------------------------------- | |
echo Checking format $pipeline_dir | |
echo ------------------------------------- | |
echo | |
cd $pipeline_dir | |
pylint --rcfile ../pylintrc . | |
cd .. | |
else | |
echo Ignoring, no Python pipeline found | |
fi | |
done | |
python-build: | |
name: 'Python pipelines build' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: "Pipelines:\n - 'pipelines/**' \n" | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Install pipenv | |
run: curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python | |
- name: Python builds | |
working-directory: pipelines | |
run: | | |
export PIPENV_VENV_IN_PROJECT=1 | |
for pipeline_dir in */ | |
do | |
echo "Checking pipelines/$pipeline_dir" | |
if [ -f "$pipeline_dir/setup.py" ] | |
then | |
echo | |
echo ------------------------------------- | |
echo Building $pipeline_dir | |
echo ------------------------------------- | |
echo | |
cd $pipeline_dir | |
pipenv install | |
for req_txt in requirements*.txt | |
do | |
echo ----- Installing dependencies in $req_txt ----- | |
pipenv install -r $req_txt | |
done | |
echo ----- Building package ----- | |
pipenv run python setup.py sdist | |
cd .. | |
else | |
echo Ignoring, no Python pipeline found | |
fi | |
done | |
docker-build: | |
name: Docker images build | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: docker/setup-buildx-action@v3 | |
- name: Docker builds | |
working-directory: pipelines | |
run: | | |
for pipeline_dir in */ | |
do | |
echo "Checking pipelines/$pipeline_dir" | |
if [ -f "$pipeline_dir/Dockerfile" ] | |
then | |
echo | |
echo ------------------------------------- | |
echo Building Docker $pipeline_dir | |
echo ------------------------------------- | |
echo | |
cd $pipeline_dir | |
mkdir gemma_2B && touch gemma_2B/DUMMY | |
docker build -t github-actions . | |
cd .. | |
else | |
echo Ignoring, no Dockerfile found | |
fi | |
done |