-
Notifications
You must be signed in to change notification settings - Fork 155
128 lines (115 loc) · 4.3 KB
/
openshift-os.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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.16
- 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 <coreosbot@fedoraproject.org>).*)$' \
> $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/create-pull-request@v6
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 <coreosbot@fedoraproject.org>"
author: "CoreOS Bot <coreosbot@fedoraproject.org>"