Skip to content

Round of polish (#12) #1

Round of polish (#12)

Round of polish (#12) #1

Workflow file for this run

name: deploy-check
on:
push:
branches: [ master ]
env:
JAVA_VERSION: "15"
JAVA_DISTRIBUTION: "zulu"
PULUMI_VERSION: "3.136.1"
GCP_SA_KEY_INFRA: ${{ secrets.GCP_SA_KEY_INFRA }}
jobs:
detect-changed-services:
runs-on: ubuntu-24.04
concurrency:
group: ${{ github.ref }}-detect-changed-services
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Collect all changed root directories
id: changed-root-directories
uses: tj-actions/changed-files@v45
with:
dir_names: true
dir_names_max_depth: '1'
- name: Collect all changed services
id: changed-services
env:
all_changed_files: ${{ steps.changed-root-directories.outputs.all_changed_files }}
run: |
CHANGED_SERVICES=()
for file in ${all_changed_files}; do
if [ -e "$file/infra/Pulumi.yaml" ]; then
CHANGED_SERVICES+=("$file")
fi
done
if [ ${#CHANGED_SERVICES[@]} -eq 0 ]; then
echo "No services changed"
else
joined=$(printf ",\"%s\"" "${CHANGED_SERVICES[@]}")
echo "changed_services=[${joined:1}]"
echo "changed_services=[${joined:1}]" >> "$GITHUB_OUTPUT"
fi
outputs:
changed_services: ${{ steps.changed-services.outputs.changed_services }}
service-deploy-build:
if: needs.detect-changed-services.outputs.changed_services != ''
runs-on: ubuntu-24.04
strategy:
matrix:
service: ${{ fromJSON(needs.detect-changed-services.outputs.changed_services) }}
concurrency:
group: ${{ github.ref }}-${{ matrix.service }}-service-deploy-build
cancel-in-progress: true
needs: detect-changed-services
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.JAVA_VERSION }}
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3 # By default, cache is only saved on the 'master' branch
- name: Set up secrets
run: |
set -Eeuo pipefail
bash tools/scripts/secrets.sh
- name: Build service
run: |
set -Eeuo pipefail
if [ -e "${{ matrix.service }}/gradlew" ]; then
# Need to explicitly cd into each service, otherwise we get yarn cache clashes
cd ${{ matrix.service }}
./gradlew --no-daemon assemble
cd ..
else
echo "Skipping step as required file doesn't exist"
fi
- name: Deploy infrastructure
uses: pulumi/actions@v5
with:
command: up
stack-name: prod
work-dir: ${{ matrix.service }}/infra
edit-pr-comment: false
pulumi-version: ${{ env.PULUMI_VERSION }}
env:
PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
- name: Artifacts
uses: actions/upload-artifact@v4
if: always() # Ensure all artifacts are collected, even after errors
with:
name: Build (${{ matrix.service }})
path: |
**/build
${{ matrix.service }}/infra
service-deploy-test:
if: needs.detect-changed-services.outputs.changed_services != ''
runs-on: ubuntu-24.04
strategy:
matrix:
service: ${{ fromJSON(needs.detect-changed-services.outputs.changed_services) }}
concurrency:
group: ${{ github.ref }}-${{ matrix.service }}-service-deploy-test
cancel-in-progress: true
needs: detect-changed-services
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DISTRIBUTION }}
java-version: ${{ env.JAVA_VERSION }}
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v3 # By default, cache is only saved on the 'master' branch
- name: Set up secrets
run: |
set -Eeuo pipefail
bash tools/scripts/secrets.sh
- name: Test
run: |
set -Eeuo pipefail
if [ -e "${{ matrix.service }}/gradlew" ]; then
# Need to explicitly cd into each service, otherwise we get yarn cache clashes
cd ${{ matrix.service }}
./gradlew --no-daemon --continue jsTest
cd ..
else
echo "Skipping step as required file doesn't exist"
fi
- name: Generate test report
uses: mikepenz/action-junit-report@v4
if: always() # Ensure all test reports are collected, even after errors
with:
report_paths: |
**/TEST-*.xml
check_name: service-check-test-results (${{ matrix.service }})
- name: Artifacts
uses: actions/upload-artifact@v4
if: always() # Ensure all artifacts are collected, even after errors
with:
name: Tests (${{ matrix.service }})
path: |
**/TEST-*.xml