TEST TEST #513
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
name: Build Images and Deploy Preview Environment | |
on: | |
pull_request: | |
types: [opened,reopened,synchronize,closed] | |
jobs: | |
build-vote: | |
name: Build and Push `vote` | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
outputs: | |
tags: ${{ steps.meta.outputs.tags }} | |
steps: | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
- name: Generate UUID image name | |
id: uuid | |
run: echo "UUID_VOTE=$(uuidgen)" >> $GITHUB_ENV | |
- name: Docker metadata | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
# An anonymous, emphemeral registry built on ttl.sh | |
images: registry.uffizzi.com/${{ env.UUID_VOTE }} | |
tags: type=raw,value=24h | |
- name: Build and Push Image to Uffizzi Ephemeral Registry | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
context: ./vote | |
build-worker: | |
name: Build and Push `worker` | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
outputs: | |
tags: ${{ steps.meta.outputs.tags }} | |
steps: | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
- name: Generate UUID image name | |
id: uuid | |
run: echo "UUID_WORKER=$(uuidgen)" >> $GITHUB_ENV | |
- name: Docker metadata | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
# An anonymous, emphemeral registry built on ttl.sh | |
images: registry.uffizzi.com/${{ env.UUID_WORKER }} | |
tags: type=raw,value=24h | |
- name: Build and Push Image to Uffizzi Ephemeral Registry | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
context: ./worker | |
build-result: | |
name: Build and Push `result` | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
outputs: | |
tags: ${{ steps.meta.outputs.tags }} | |
steps: | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
- name: Generate UUID image name | |
id: uuid | |
run: echo "UUID_RESULT=$(uuidgen)" >> $GITHUB_ENV | |
- name: Docker metadata | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
# An anonymous, emphemeral registry built on ttl.sh | |
images: registry.uffizzi.com/${{ env.UUID_RESULT }} | |
tags: type=raw,value=24h | |
- name: Build and Push Image to Uffizzi Ephemeral Registry | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
context: ./result | |
build-loadbalancer: | |
name: Build and Push `loadbalancer` | |
runs-on: ubuntu-latest | |
if: ${{ github.event_name != 'pull_request' || github.event.action != 'closed' }} | |
outputs: | |
tags: ${{ steps.meta.outputs.tags }} | |
steps: | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
- name: Generate UUID image name | |
id: uuid | |
run: echo "UUID_LOADBALANCER=$(uuidgen)" >> $GITHUB_ENV | |
- name: Docker metadata | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
# An anonymous, emphemeral registry built on ttl.sh | |
images: registry.uffizzi.com/${{ env.UUID_LOADBALANCER }} | |
tags: type=raw,value=24h | |
- name: Build and Push Image to Uffizzi Ephemeral Registry | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
context: ./loadbalancer | |
render-compose-file: | |
name: Render Docker Compose File | |
runs-on: ubuntu-latest | |
needs: | |
- build-vote | |
- build-worker | |
- build-result | |
- build-loadbalancer | |
outputs: | |
compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }} | |
compose-file-cache-path: docker-compose.rendered.yml | |
steps: | |
- name: Checkout git repo | |
uses: actions/checkout@v3 | |
- name: Render Compose File | |
run: | | |
VOTE_IMAGE=$(echo ${{ needs.build-vote.outputs.tags }}) | |
export VOTE_IMAGE | |
WORKER_IMAGE=$(echo ${{ needs.build-worker.outputs.tags }}) | |
export WORKER_IMAGE | |
RESULT_IMAGE=$(echo ${{ needs.build-result.outputs.tags }}) | |
export RESULT_IMAGE | |
LOADBALANCER_IMAGE=$(echo ${{ needs.build-loadbalancer.outputs.tags }}) | |
export LOADBALANCER_IMAGE | |
PGUSER=${{ secrets.PGUSER }} | |
export PGUSER | |
PGPASSWORD=${{ secrets.PGPASSWORD }} | |
export PGPASSWORD | |
# Render simple template from environment variables. | |
envsubst < docker-compose.uffizzi.yml > docker-compose.rendered.yml | |
cat docker-compose.rendered.yml | |
- name: Hash Rendered Compose File | |
id: hash | |
run: echo "COMPOSE_FILE_HASH=$(md5sum docker-compose.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV | |
- name: Cache Rendered Compose File | |
uses: actions/cache@v3 | |
with: | |
path: docker-compose.rendered.yml | |
key: ${{ env.COMPOSE_FILE_HASH }} | |
deploy-uffizzi-preview: | |
name: Use Remote Workflow to Preview on Uffizzi | |
needs: render-compose-file | |
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2 | |
with: | |
compose-file-cache-key: ${{ needs.render-compose-file.outputs.compose-file-cache-key }} | |
compose-file-cache-path: ${{ needs.render-compose-file.outputs.compose-file-cache-path }} | |
server: https://app.uffizzi.com | |
permissions: | |
contents: read | |
pull-requests: write | |
id-token: write | |
delete-uffizzi-preview: | |
name: Use Remote Workflow to Delete an Existing Preview | |
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2 | |
if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' }} | |
with: | |
compose-file-cache-key: '' | |
compose-file-cache-path: docker-compose.rendered.yml | |
server: https://app.uffizzi.com | |
permissions: | |
contents: read | |
pull-requests: write | |
id-token: write |