mirror of https://github.com/nocodb/nocodb
Browse Source
add github workflows to take the prebuilt docker image for the PR to create a preview deployment on Uffizzi. Comment will be posted to every PR on a successful deployment.pull/4460/head
Vibhav Bobade
2 years ago
3 changed files with 176 additions and 7 deletions
@ -0,0 +1,24 @@
|
||||
version: '3' |
||||
|
||||
x-uffizzi: |
||||
ingress: |
||||
service: nocodb |
||||
port: 8080 |
||||
|
||||
services: |
||||
root_db: |
||||
image: postgres |
||||
restart: always |
||||
environment: |
||||
POSTGRES_PASSWORD: password |
||||
POSTGRES_USER: postgres |
||||
POSTGRES_DB: root_db |
||||
nocodb: |
||||
image: "${NOCODB_IMAGE}" |
||||
ports: |
||||
- "8080:8080" |
||||
restart: always |
||||
environment: |
||||
NC_DB: "pg://localhost:5432?u=postgres&p=password&d=root_db" |
||||
NC_ADMIN_EMAIL: admin@nocodb.com |
||||
NC_ADMIN_PASSWORD: password |
@ -0,0 +1,88 @@
|
||||
name: Deploy Uffizzi Preview |
||||
|
||||
on: |
||||
workflow_run: |
||||
workflows: |
||||
- "PR Release" |
||||
types: |
||||
- completed |
||||
|
||||
jobs: |
||||
cache-compose-file: |
||||
name: Cache Compose File |
||||
runs-on: ubuntu-latest |
||||
outputs: |
||||
compose-file-cache-key: ${{ env.COMPOSE_FILE_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 'EOF' >> $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 "COMPOSE_FILE_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.COMPOSE_FILE_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.COMPOSE_FILE_HASH }}" |
||||
cat event.json |
||||
|
||||
deploy-uffizzi-preview: |
||||
name: Use Remote Workflow to Preview on Uffizzi |
||||
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 |
Loading…
Reference in new issue