-
Notifications
You must be signed in to change notification settings - Fork 1
85 lines (80 loc) · 3.45 KB
/
static.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Fetch latest commits
run: git fetch origin
- name: Get commit message
id: commit
run: |
commit_message=$(git log --format=%B -n 1 ${{ github.event.after }})
echo "message=$commit_message" >> $GITHUB_ENV
- name: Extract actor and PR number from commit message
id: extract
run: |
actor=$(echo "${{ env.message }}" | awk -F'by ' '{print $2}' | awk '{print $1}')
pr_number=$(echo "${{ env.message }}" | awk -F'#' '{print $2}' | awk '{print $1}')
echo "actor=$actor" >> $GITHUB_ENV
echo "pr_number=$pr_number" >> $GITHUB_ENV
- name: Get changed files
id: get-files
run: |
echo "CHANGED_FILES=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -v '^$' | tr '\n' ',' | sed 's/,$//' | xargs)" >> $GITHUB_ENV
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
# Upload entire repository
path: '.'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v3
- name: Notify owner
uses: actions/github-script@v5
with:
github-token: ${{ secrets.KJ3_PATC }}
script: |
const owner = "${{ github.repository_owner }}"
const page_url = "${{ steps.deployment.outputs.page_url }}"
const actor = "${{ env.actor }}" || 'unknown'
const pr_number = "${{ env.pr_number }}" || 'unknown'
const changed_files = "${{ env.CHANGED_FILES }}" || 'unknown'
const changed_files_links = changed_files.split(',').map(file => `${page_url}${file}`).join(', ')
const message = actor === 'unknown' && pr_number === 'unknown'
? `Hello @${owner}, the deployment has been completed. You can view the updated pages at ${page_url}. The following files were changed: ${changed_files_links}`
: `Hello @${owner}, the deployment of changes by @${actor} in PR #${pr_number} has been completed. You can view the updated pages at ${page_url}. The following files were changed: ${changed_files_links}`
github.rest.issues.create({
owner: owner,
repo: context.repo.repo,
title: pr_number === 'unknown'
? `Deployment completed`
: `Deployment completed for PR #${pr_number}`,
body: message
})