Skip to content

stage-app-pull-request #1

stage-app-pull-request

stage-app-pull-request #1

name: stage-app-pull-request
on:
workflow_run:
workflows:
- build
types:
- completed
# Disable all permissions. We have to enable required permissions at job-level.
permissions: {}
jobs:
stage-epic:
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
permissions:
actions: read # for listJobsForWorkflowRun and listWorkflowRunArtifacts
contents: read # for checkout
deployments: write # for create-deployment
pull-requests: read # for listing pull requests
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
repository: droidkaigi/conference-app-2024
ref: gh-actions
path: gh-actions
- name: Download build outputs (APKs)
uses: actions/[email protected]
with:
name: build-outputs
path: ~/build-outputs
- uses: ./gh-actions/actions/find-files
id: find-dev-debug-apk
with:
pattern: "~/build-outputs/**/app-android-dev-debug.apk"
- uses: ./gh-actions/actions/create-deployment
id: create-deployment
with:
github-token: ${{ github.token }}
ref: refs/pull/${{ fromJSON(steps.get-pr.outputs.result).number }}/head
sha: ${{ fromJSON(steps.get-pr.outputs.result).head.sha }}
artifact-name: build-outputs
environment: deploygate-distribution
- uses: jmatsu/[email protected]
id: upload
continue-on-error: true
with:
app_owner_name: droidkaigi
api_token: ${{ secrets.DEPLOYGATE_API_TOKEN }}
app_file_path: ${{ fromJSON(steps.find-dev-debug-apk.outputs.paths)[0] }}
message: GitHub Actions have staged an artifact of ${{ fromJSON(steps.get-pr.outputs.result).number }}/head / ${{ fromJSON(steps.get-pr.outputs.result).head.sha }}
distribution_find_by: name
distribution_id: ${{ format('debug/refs/pull/{0}/head', fromJSON(steps.get-pr.outputs.result).number) }}
release_note: ${{ format('Workflow {0}/{1} based on {2}', github.run_id , github.run_number , fromJSON(steps.get-pr.outputs.result).head.sha) }}
pin: false
- name: generate properties based on upload step's status
id: deployment-properties
if: steps.upload.conclusion == 'success'
run: |
if [[ "${{ steps.upload.outcome }}" == "success" ]]; then
echo "deployment-url=${{ steps.upload.outputs.distribution_url }}" >> "$GITHUB_OUTPUT"
echo "description=Deployed an app successfully. Please try it through DeployGate!" >> "$GITHUB_OUTPUT"
else
echo "deployment-url=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> "$GITHUB_OUTPUT"
echo "description=Staging an app failed. Please check the workflow." >> "$GITHUB_OUTPUT"
fi
- uses: ./gh-actions/actions/commit-deployment
if: steps.upload.conclusion == 'success'
with:
github-token: ${{ github.token }}
deployment-id: ${{ fromJSON(steps.create-deployment.outputs.deployment).id }}
state: ${{ steps.upload.outcome }}
deployment-url: ${{ steps.deployment-properties.outputs.deployment-url }}
description: ${{ steps.deployment-properties.outputs.description }}