12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- name: Deploy Uffizzi Preview
- on:
- workflow_run:
- workflows:
- - "Build PR Image"
- types:
- - completed
- jobs:
- cache-compose-file:
- name: Cache Compose File
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
- runs-on: ubuntu-latest
- outputs:
- compose-file-cache-key: ${{ env.HASH }}
- pr-number: ${{ env.PR_NUMBER }}
- steps:
- - name: 'Download artifacts'
- # Fetch output (zip archive) from the workflow run that triggered this workflow.
- uses: actions/github-script@v6
- with:
- script: |
- let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
- owner: context.repo.owner,
- repo: context.repo.repo,
- run_id: context.payload.workflow_run.id,
- });
- let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
- return artifact.name == "preview-spec"
- })[0];
- let download = await github.rest.actions.downloadArtifact({
- owner: context.repo.owner,
- repo: context.repo.repo,
- artifact_id: matchArtifact.id,
- archive_format: 'zip',
- });
- let fs = require('fs');
- fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/preview-spec.zip`, Buffer.from(download.data));
- - name: 'Unzip artifact'
- run: unzip preview-spec.zip
- - name: Read Event into ENV
- run: |
- echo 'EVENT_JSON<<EOF' >> $GITHUB_ENV
- cat event.json >> $GITHUB_ENV
- echo -e '\nEOF' >> $GITHUB_ENV
- - name: Hash Rendered Compose File
- id: hash
- # If the previous workflow was triggered by a PR close event, we will not have a compose file artifact.
- if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
- run: echo "HASH=$(md5sum docker-compose.rendered.yml | awk '{ print $1 }')" >> $GITHUB_ENV
- - name: Cache Rendered Compose File
- if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
- uses: actions/cache@v3
- with:
- path: docker-compose.rendered.yml
- key: ${{ env.HASH }}
- - name: Read PR Number From Event Object
- id: pr
- run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
- - name: DEBUG - Print Job Outputs
- if: ${{ runner.debug }}
- run: |
- echo "PR number: ${{ env.PR_NUMBER }}"
- echo "Compose file hash: ${{ env.HASH }}"
- cat event.json
- deploy-uffizzi-preview:
- name: Use Remote Workflow to Preview on Uffizzi
- if: ${{ github.event.workflow_run.conclusion == 'success' }}
- needs:
- - cache-compose-file
- uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2
- with:
- # If this workflow was triggered by a PR close event, cache-key will be an empty string
- # and this reusable workflow will delete the preview deployment.
- compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
- compose-file-cache-path: docker-compose.rendered.yml
- server: https://app.uffizzi.com
- pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
- permissions:
- contents: read
- pull-requests: write
- id-token: write
|