Skip to content

sync-tier4-upstream-up-to-tag #7

sync-tier4-upstream-up-to-tag

sync-tier4-upstream-up-to-tag #7

# This workflow is intended for the use in the repositories created by forking tier4/autoware_launch.
name: sync-tier4-upstream-up-to-tag
on:
workflow_dispatch:
inputs:
sync-target-tag:
description: "sync-target-tag"
required: true
type: string
default: ""
jobs:
sync-tier4-upstream-up-to-tag:
runs-on: ubuntu-latest
env:
BASE_BRANCH: tier4/main
SYNC_TARGET_REPOSITORY: https://github.com/tier4/autoware_launch.git
steps:
- name: Generate token
id: generate-token
uses: tibdex/github-app-token@v1
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.PRIVATE_KEY }}
- name: Check out repository
uses: actions/checkout@v4
with:
ref: $BASE_BRANCH
fetch-depth: 0
- name: Set git config
uses: autowarefoundation/autoware-github-actions/set-git-config@v1
with:
token: ${{ steps.generate-token.outputs.token }}
- name: Sync tag
run: |
git remote add sync-target $SYNC_TARGET_REPOSITORY
git fetch -pPtf --all
git reset --hard "${{ inputs.sync-target-tag }}"
git remote rm sync-target
shell: bash
- name: Generate changelog
id: generate-changelog
uses: autowarefoundation/autoware-github-actions/generate-changelog@v1
with:
git-cliff-args: origin/$BASE_BRANCH..HEAD
- name: Replace PR number to URL
id: replace-pr-number-to-url
run: |
# Output multiline strings: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-of-a-multiline-string
changelog=$(echo "$CHANGELOG" | sed -r "s|\(#([0-9]+)\)|("${REPO_URL%.git}"/pull/\1)|g")
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "changelog<<$EOF" >> $GITHUB_OUTPUT
echo "$changelog" >> $GITHUB_OUTPUT
echo "$EOF" >> $GITHUB_OUTPUT
env:
CHANGELOG: ${{ steps.generate-changelog.outputs.changelog }}
REPO_URL: $SYNC_TARGET_REPOSITORY
shell: bash
- name: Create PR
id: create-pr
uses: peter-evans/create-pull-request@v6
with:
token: ${{ steps.generate-token.outputs.token }}
base: $BASE_BRANCH
branch: sync-tier4-upstream-${{ inputs.sync-target-tag }}
title: "chore: sync upstream up to ${{ inputs.sync-target-tag }}"
body: ${{ steps.replace-pr-number-to-url.outputs.changelog }}
labels: |
bot
sync-tier4-upstream
author: github-actions <[email protected]>
signoff: true
delete-branch: true
- name: Check outputs
run: |
echo "Pull Request Number - ${{ steps.create-pr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.create-pr.outputs.pull-request-url }}"
- name: Enable auto-merge
if: ${{ steps.create-pr.outputs.pull-request-operation == 'created' }}
run: gh pr merge --merge --auto "${{ steps.create-pr.outputs.pull-request-number }}"
shell: bash
env:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}