Init Commit
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
## Updates demo site (https://github.com/zetxek/adritian-demo)
|
||||
## taken from https://stackoverflow.com/a/68213855/570087
|
||||
|
||||
name: PR demo site (on external PR)
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
pages: write
|
||||
pull-requests: write
|
||||
checks: write
|
||||
statuses: write
|
||||
actions: write
|
||||
|
||||
## This will open a PR which will open a vercel preview URL in the demo site
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [labeled]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-demo:
|
||||
env:
|
||||
SOURCE_BRANCH_NAME: ${{ github.head_ref || github.ref_name }} # PR branch name
|
||||
PR_NUMBER: ${{ github.event.number }}
|
||||
runs-on: ubuntu-latest
|
||||
if: contains(github.event.pull_request.labels.*.name, 'safe to test')
|
||||
steps:
|
||||
- name: Checkout source repository (theme)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: theme-source
|
||||
ref: ${{ github.head_ref }}
|
||||
token: ${{ secrets.PRIVATE_TOKEN_GITHUB }}
|
||||
|
||||
- name: Checkout demo repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: zetxek/adritian-demo
|
||||
path: demo-repo
|
||||
token: ${{ secrets.PRIVATE_TOKEN_GITHUB }}
|
||||
|
||||
- name: Dump github context
|
||||
run: echo "$GITHUB_CONTEXT"
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
|
||||
- name: Send pull-request
|
||||
run: |
|
||||
LATEST_TAG=$(cd theme-source && git describe --tags --always)
|
||||
LATEST_COMMIT=$(cd theme-source && git rev-parse HEAD)
|
||||
SOURCE_REPOSITORY="zetxek/adritian-free-hugo-theme"
|
||||
REPOSITORY="zetxek/adritian-demo"
|
||||
REPO_NAME=${{ github.event.pull_request.head.repo.full_name }}
|
||||
FOLDER="bin/$REPOSITORY"
|
||||
PR_URL="https://github.com/$SOURCE_REPOSITORY/pull/$PR_NUMBER"
|
||||
BRANCH_NAME="theme-update/update-theme-to-$LATEST_TAG"
|
||||
BASE_BRANCH="main"
|
||||
ASSIGNEE="zetxek"
|
||||
|
||||
echo "Latest tag: $LATEST_TAG"
|
||||
echo "Latest commit: $LATEST_COMMIT"
|
||||
echo "PR URL: $PR_URL"
|
||||
|
||||
git config --global --add --bool push.autoSetupRemote true
|
||||
|
||||
# Clone the remote repository and change working directory to the
|
||||
# folder it was cloned to.
|
||||
git clone \
|
||||
--depth=1 \
|
||||
--branch=main \
|
||||
https://some-user:${{ secrets.PRIVATE_TOKEN_GITHUB }}@github.com/$REPOSITORY \
|
||||
$FOLDER
|
||||
|
||||
cd $FOLDER
|
||||
|
||||
# Setup the committers identity.
|
||||
git config user.email "actions@github.com"
|
||||
git config user.name "GitHub Actions - update theme module version"
|
||||
|
||||
# Create a new feature branch for the changes.
|
||||
echo "Working branch: $BRANCH_NAME"
|
||||
git checkout -b $BRANCH_NAME
|
||||
|
||||
# Commit the changes and push the feature branch to origin
|
||||
git config --global --add --bool push.autoSetupRemote true
|
||||
echo "Committing all changes."
|
||||
git add --all
|
||||
|
||||
COMMIT_MSG_THEME='chore: update theme module version to `'"$LATEST_TAG"'`'
|
||||
echo 'Updating theme module: '"$COMMIT_MSG_THEME"
|
||||
git commit -am "$COMMIT_MSG_THEME" && git push --force || echo "No changes to theme"
|
||||
|
||||
# Copy content from the checked-out theme source
|
||||
cp ../../theme-source/exampleSite/hugo.toml hugo.toml
|
||||
# Update URL
|
||||
sed -i -e "s/\"https\:\/\/www\.adrianmoreno\.info\"/\"https\:\/\/adritian-demo\.vercel\.app\/\"/g" hugo.toml
|
||||
|
||||
COMMIT_MSG_CONFIG='chore: update config/content to `'"$LATEST_TAG"'` from https://github.com/zetxek/adritian-free-hugo-theme'
|
||||
echo "Committing content/config: $COMMIT_MSG_CONFIG"
|
||||
git commit -am "$COMMIT_MSG_CONFIG" && git push --force || echo "No changes to config"
|
||||
|
||||
echo "Pushing branch: $BRANCH_NAME"
|
||||
git push origin $BRANCH_NAME --force
|
||||
|
||||
# Store the PAT in a file that can be accessed by the
|
||||
# GitHub CLI.
|
||||
echo "${{ secrets.PRIVATE_TOKEN_GITHUB }}" > token.txt
|
||||
|
||||
# Authorize GitHub CLI for the current repository and
|
||||
# create a pull-requests containing the updates.
|
||||
echo "Logging in to GitHub CLI."
|
||||
gh auth login --with-token < token.txt
|
||||
|
||||
# Check if the PR already exists - if there's no "number" returned, we default to empty string
|
||||
PR_EXISTS=$(gh pr list --state open --base $BASE_BRANCH --head $BRANCH_NAME --json number | jq '.[0].number // empty')
|
||||
echo "PR_EXISTS: $PR_EXISTS"
|
||||
# Check if there's a PR number. If the PR exists, update it (empty = it doesn't exist)
|
||||
if [ -n "$PR_EXISTS" ]; then
|
||||
echo "PR Exists. Updating pull-request..."
|
||||
gh pr view
|
||||
|
||||
echo "✅ Pull-request created - done! "
|
||||
|
||||
# Else, we create it
|
||||
else
|
||||
echo "✨PR Does not exist yet. Creating pull-request..."
|
||||
PR_TITLE='preview: update theme to `'$SOURCE_BRANCH_NAME'`'
|
||||
echo 'PR title: '$PR_TITLE
|
||||
PR_BODY="⚠️ The source PR is not merged yet - this is a preview PR.
|
||||
🤖 This automated PR updates the theme version to a PR in the source repo: $PR_URL.
|
||||
🔗 Triggered by https://github.com/zetxek/adritian-free-hugo-theme/actions/workflows/update-demo-pr.yml"
|
||||
echo "PR body: "$PR_BODY
|
||||
|
||||
gh pr create \
|
||||
--title "$PR_TITLE" \
|
||||
--body "$PR_BODY" \
|
||||
--head $BRANCH_NAME \
|
||||
--base $BASE_BRANCH \
|
||||
--assignee $ASSIGNEE \
|
||||
--label preview
|
||||
|
||||
echo "✅ Pull-request created - done! "
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user