You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudflare-pages-action/.github/workflows/example2.yml

95 lines
4.0 KiB
YAML

on: [push,workflow_dispatch]
jobs:
example:
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
name: Example
steps:
- name: Checkout
uses: actions/checkout@v4
- name: set production branch
run: |
result=$(curl -sS -X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}' \
-d '{ "production_branch": "${{ env.PRODUCTION_BRANCH }}" }' \
https://api.cloudflare.com/client/v4/accounts/${{ secrets.CLOUDFLARE_ACCOUNT_ID }}/pages/projects/${{ env.PROJECT_NAME }})
result=$(echo "$result" | jq -r '
if .success == true then
"✅ Cloudflare Pages Production Branchの変更に成功しました。\n✨ \(.result.latest_deployment.production_branch)から\(.result.production_branch)に変更されました"
else
"❌ Cloudflare Pages Production Branchの変更に失敗しました。\n📝エラーコード: \(.errors[].code) \nエラーメッセージ: \(.errors[].message)"
end
')
echo "$result"
{ echo 'summary<<EOF'
echo "$result"
echo 'EOF'
} >> "$GITHUB_OUTPUT"
env:
PROJECT_NAME: github-actions-example
PRODUCTION_BRANCH: develop
id: set-production-branch
- name: Publish to Cloudflare Pages
if: steps.set-production-branch.outcome == 'success'
uses: cloudflare/wrangler-action@v3
with:
# Explicit branch name needed because of: https://github.com/cloudflare/pages-action/issues/97
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: pages deploy example --project-name=github-actions-example --branch=${{ github.head_ref || github.ref_name }}
id: publish
- uses: schnerring/cloudflare-pages-branch-alias-action@v1
id: pages-branch-alias
with:
# git-branch input
git-branch: ${{ github.ref_name }}
- name: generate alias url
id: generate-alias-url
if: steps.pages-branch-alias.outputs.branch-alias != 'develop'
env:
ALIAS: ${{ steps.pages-branch-alias.outputs.branch-alias }}
PUBLISH_CFPAGES_URL: ${{ steps.publish.outputs.deployment-url }}
run: |
[[ $PUBLISH_CFPAGES_URL =~ (https?://)?([a-zA-Z0-9-]+)\.pages\.dev ]]
new_url="https://${ALIAS}.${BASH_REMATCH[2]}.pages.dev"
echo $new_url
echo alias-url=$new_url >> $GITHUB_OUTPUT
- name: Create Job Summary
uses: actions/github-script@v7
env:
CHANGE_BRANCH: ${{ steps.set-production-branch.outputs.summary }}
PUBLISH_CFPAGES: ${{ steps.publish.outputs.command-output }}
PUBLISH_CFPAGES_URL: ${{ steps.publish.outputs.deployment-url }}
PUBLISH_CFPAGES_ALIAS: ${{ steps.generate-alias-url.outputs.alias-url }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const output = `\n#### Cloudflare Pages set production branch ⚙️\`${{ steps.set-production-branch.outcome }}\`\n
#### Cloudflare Pages Deploy 📖\`${{ steps.publish.outcome }}\`\n
🔗 [${process.env.PUBLISH_CFPAGES_URL}](${process.env.PUBLISH_CFPAGES_URL})\n
${process.env.PUBLISH_CFPAGES_ALIAS ?
`📌 Alias URL: [${process.env.PUBLISH_CFPAGES_ALIAS}](${process.env.PUBLISH_CFPAGES_ALIAS})\n`:""
}
<details><summary>Deploying with Cloudflare Pages</summary>
\`\`\`deploy\n
${process.env.CHANGE_BRANCH}
${process.env.PUBLISH_CFPAGES}
\`\`\`
</details>
*Pushed by: @${{ github.actor }}, Action: \`${{ github.event_name }}\`*`;
await core.summary
.addHeading('Cloudflare Pages Deploy report')
.addRaw(output)
.write()