Sync to openshift/os #147
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync to openshift/os | |
on: | |
# We could do push: branches: [testing-devel] but that would restart | |
# downstream CI a lot | |
schedule: | |
- cron: '0 0 * * *' | |
workflow_dispatch: | |
inputs: | |
branch: | |
# Allow specifying the source branch for backports | |
description: Source branch to use for PR | |
required: true | |
default: testing-devel | |
type: choice | |
options: | |
- testing-devel | |
- rhcos-4.15 | |
- rhcos-4.14 | |
- rhcos-4.13 | |
- rhcos-4.12 | |
- rhcos-4.11 | |
- rhcos-4.10 | |
jira: | |
description: The JIRA reference to put in the PR title. Defaults to "NO-JIRA". | |
required: false | |
default: NO-JIRA | |
type: string | |
permissions: | |
# none at all | |
contents: none | |
jobs: | |
update-submodule: | |
name: Update fedora-coreos-config submodule | |
runs-on: ubuntu-latest | |
env: | |
SOURCE_BRANCH: ${{ github.event.inputs.branch }} | |
JIRA: ${{ github.event.inputs.jira }} | |
steps: | |
- name: Set branches values | |
run: | | |
set -euxo pipefail | |
case $SOURCE_BRANCH in | |
# in the on.schedule case, the SOURCE_BRANCH is empty | |
testing-devel|"") | |
echo "SOURCE_BRANCH=testing-devel" >> $GITHUB_ENV | |
echo "TARGET_BRANCH=master" >> $GITHUB_ENV | |
echo "BRANCH_NAME=fcc-sync" >> $GITHUB_ENV | |
;; | |
rhcos-*) | |
# split the string around the - | |
array=(${SOURCE_BRANCH//-/ }) | |
OCP_VERSION=${array[1]} | |
echo "TARGET_BRANCH=release-${OCP_VERSION}" >> $GITHUB_ENV | |
echo "BRANCH_NAME=fcc-sync-${SOURCE_BRANCH}" >> $GITHUB_ENV | |
echo "TITLE_PREFIX=[release-${OCP_VERSION}] " >> $GITHUB_ENV | |
;; | |
*) | |
echo "SOURCE_BRANCH=$SOURCE_BRANCH is invalid" >&2 | |
exit 1 | |
;; | |
esac | |
echo "JIRA=${JIRA:-NO-JIRA}" >> $GITHUB_ENV | |
- name: Check out repository | |
uses: actions/checkout@v3 | |
with: | |
repository: openshift/os | |
# We need an unbroken commit chain when pushing to the fork. Don't | |
# make assumptions about which commits are already available there. | |
fetch-depth: 0 | |
# We need to checkout against the target branch | |
ref: ${{ env.TARGET_BRANCH }} | |
- name: Update submodule | |
run: | | |
set -euxo pipefail | |
git submodule init | |
git submodule update | |
cd fedora-coreos-config | |
# the submodule init only fetch the submodule commit and the default branch `testing-devel` | |
git fetch origin ${SOURCE_BRANCH} | |
# Omit CoreOS Bot commits from the log message, since they generally | |
# only affect FCOS | |
git shortlog "HEAD..FETCH_HEAD" --perl-regexp \ | |
--author='^((?!CoreOS Bot <[email protected]>).*)$' \ | |
> $RUNNER_TEMP/shortlog | |
if [ ! -s $RUNNER_TEMP/shortlog ]; then | |
# Any changes have been made by CoreOS Bot. Ignore. | |
echo "No non-trivial changes; exiting" | |
exit 0 | |
fi | |
git checkout $SOURCE_BRANCH | |
marker=OPENSHIFT-OS-END-OF-LOG-MARKER-$RANDOM$RANDOM$RANDOM | |
cat >> $GITHUB_ENV <<EOF | |
SHORTLOG<<$marker | |
$(cat $RUNNER_TEMP/shortlog) | |
$marker | |
EOF | |
- name: Open pull request | |
uses: peter-evans/[email protected] | |
with: | |
token: ${{ secrets.COREOSBOT_RELENG_TOKEN }} | |
push-to-fork: coreosbot-releng/os | |
branch: ${{ env.BRANCH_NAME }} | |
base: ${{ env.TARGET_BRANCH }} | |
commit-message: | | |
Bump fedora-coreos-config | |
${{ env.SHORTLOG }} | |
title: "${{ env.TITLE_PREFIX }}${{ env.JIRA }}: Bump fedora-coreos-config" | |
body: | | |
Created by [GitHub workflow](${{ github.server_url }}/${{ github.repository }}/actions/workflows/openshift-os.yml) ([source](${{ github.server_url }}/${{ github.repository }}/blob/testing-devel/.github/workflows/openshift-os.yml)). | |
``` | |
${{ env.SHORTLOG }} | |
``` | |
committer: "CoreOS Bot <[email protected]>" | |
author: "CoreOS Bot <[email protected]>" |