Port Docker Compose examples #1
Workflow file for this run
This file contains hidden or 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
| name: Test compose examples | |
| on: | |
| pull_request: | |
| paths: | |
| - 'compose/**' | |
| - '.github/workflows/compose.yaml' | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'compose/**' | |
| - '.github/workflows/compose.yaml' | |
| jobs: | |
| lint-actions: | |
| name: Lint GitHub Actions workflows | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Lint actions | |
| run: | | |
| echo "::add-matcher::.github/actionlint-matcher.json" | |
| bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) | |
| ./actionlint -color | |
| shell: bash | |
| compose-test: | |
| name: Test ${{ matrix.compose-file }} | |
| needs: lint-actions | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| compose-file: | |
| - docker-compose.yml | |
| - docker-compose-postgres.yml | |
| - docker-compose-mysql.yml | |
| - docker-compose-mysql-es.yml | |
| - docker-compose-cass-es.yml | |
| - docker-compose-postgres-opensearch.yml | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Print build information | |
| run: 'echo head_ref: ${{ github.head_ref }}, ref: ${{ github.ref }}, compose: ${{ matrix.compose-file }}' | |
| - uses: actions/checkout@v4 | |
| - name: Start compose stack | |
| working-directory: compose | |
| run: docker-compose -f ${{ matrix.compose-file }} up -d | |
| - name: Wait for services to be healthy | |
| working-directory: compose | |
| run: | | |
| echo "Waiting up to 5 minutes for services to be healthy..." | |
| timeout 300 bash -c 'until docker-compose -f ${{ matrix.compose-file }} ps | grep -E "(healthy|Started)"; do sleep 5; done' || { | |
| echo "Services failed to become healthy" | |
| docker-compose -f ${{ matrix.compose-file }} ps | |
| docker-compose -f ${{ matrix.compose-file }} logs | |
| exit 1 | |
| } | |
| - name: Check admin-tools logs | |
| working-directory: compose | |
| run: | | |
| docker-compose -f ${{ matrix.compose-file }} logs temporal-admin-tools | |
| if docker-compose -f ${{ matrix.compose-file }} logs temporal-admin-tools | grep -i "error" | grep -v "unable to describe namespace"; then | |
| echo "Found errors in admin-tools logs" | |
| exit 1 | |
| fi | |
| - name: Check namespace creation logs | |
| working-directory: compose | |
| run: | | |
| docker-compose -f ${{ matrix.compose-file }} logs temporal-create-namespace | |
| if ! docker-compose -f ${{ matrix.compose-file }} logs temporal-create-namespace | grep -q "Namespace 'default' created"; then | |
| echo "Namespace creation failed" | |
| exit 1 | |
| fi | |
| - name: Verify temporal server is healthy | |
| working-directory: compose | |
| run: | | |
| docker-compose -f ${{ matrix.compose-file }} exec -T temporal temporal operator cluster health || { | |
| echo "Temporal server health check failed" | |
| docker-compose -f ${{ matrix.compose-file }} logs temporal | |
| exit 1 | |
| } | |
| - name: Cleanup | |
| if: always() | |
| working-directory: compose | |
| run: docker-compose -f ${{ matrix.compose-file }} down -v | |
| compose-tls-test: | |
| name: Test docker-compose-tls.yml | |
| needs: lint-actions | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Print build information | |
| run: 'echo head_ref: ${{ github.head_ref }}, ref: ${{ github.ref }}, compose: docker-compose-tls.yml' | |
| - uses: actions/checkout@v4 | |
| - name: Generate TLS certificates | |
| working-directory: compose | |
| run: | | |
| docker build -t temporal_tls:test -f tls/Dockerfile.tls . | |
| mkdir -p .pki | |
| docker run --rm -v temporal_tls_pki:/pki -v ${PWD}/.pki:/pki-out temporal_tls:test | |
| - name: Build TLS images | |
| working-directory: compose | |
| run: COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml build --no-cache | |
| - name: Start TLS compose stack | |
| working-directory: compose | |
| run: COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml up -d | |
| - name: Wait for services to be healthy | |
| working-directory: compose | |
| run: | | |
| echo "Waiting up to 5 minutes for services to be healthy..." | |
| timeout 300 bash -c 'until COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml ps | grep -E "(healthy|Started)"; do sleep 5; done' || { | |
| echo "Services failed to become healthy" | |
| COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml ps | |
| COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml logs | |
| exit 1 | |
| } | |
| - name: Check admin-tools logs | |
| working-directory: compose | |
| run: | | |
| COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml logs temporal-admin-tools-setup | |
| if COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml logs temporal-admin-tools-setup | grep -i "error" | grep -v "unable to describe namespace"; then | |
| echo "Found errors in admin-tools logs" | |
| exit 1 | |
| fi | |
| - name: Check namespace creation logs | |
| working-directory: compose | |
| run: | | |
| COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml logs temporal-create-namespace | |
| if ! COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml logs temporal-create-namespace | grep -q "Namespace 'default' created"; then | |
| echo "Namespace creation failed" | |
| exit 1 | |
| fi | |
| - name: Cleanup | |
| if: always() | |
| working-directory: compose | |
| run: | | |
| COMPOSE_PROJECT_NAME=tls_test docker-compose -f docker-compose-tls.yml down -v | |
| docker volume rm temporal_tls_pki || true | |
| rm -rf .pki | |
| compose-multirole-test: | |
| name: Test docker-compose-multirole.yaml | |
| needs: lint-actions | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Print build information | |
| run: 'echo head_ref: ${{ github.head_ref }}, ref: ${{ github.ref }}, compose: docker-compose-multirole.yaml' | |
| - uses: actions/checkout@v4 | |
| - name: Start multirole compose stack | |
| working-directory: compose | |
| run: docker-compose -f docker-compose-multirole.yaml up -d | |
| - name: Wait for services to be healthy | |
| working-directory: compose | |
| run: | | |
| echo "Waiting up to 5 minutes for services to be healthy..." | |
| timeout 300 bash -c 'until docker-compose -f docker-compose-multirole.yaml ps | grep -E "(healthy|Started)"; do sleep 5; done' || { | |
| echo "Services failed to become healthy" | |
| docker-compose -f docker-compose-multirole.yaml ps | |
| docker-compose -f docker-compose-multirole.yaml logs | |
| exit 1 | |
| } | |
| - name: Check setup logs | |
| working-directory: compose | |
| run: | | |
| docker-compose -f docker-compose-multirole.yaml logs temporal-setup | |
| if docker-compose -f docker-compose-multirole.yaml logs temporal-setup | grep -i "error" | grep -v "unable to describe namespace"; then | |
| echo "Found errors in setup logs" | |
| exit 1 | |
| fi | |
| - name: Verify temporal services are running | |
| working-directory: compose | |
| run: | | |
| docker-compose -f docker-compose-multirole.yaml ps temporal-history temporal-frontend temporal-matching temporal-worker | |
| - name: Cleanup | |
| if: always() | |
| working-directory: compose | |
| run: docker-compose -f docker-compose-multirole.yaml down -v |