Skip to content

Commit 7577114

Browse files
authored
Merge pull request #626 from github/enterprise-3.8-backport-568-543-workflow-build-release-part-2
Backport 568 for 3.8: Build and Release Workflow Part 2
2 parents 25cfb92 + e9fc42f commit 7577114

File tree

6 files changed

+220
-0
lines changed

6 files changed

+220
-0
lines changed

.github/linters/.yaml-lint.yml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
---
2+
###########################################
3+
# These are the rules used for #
4+
# linting all the yaml files in the stack #
5+
# NOTE: #
6+
# You can disable line with: #
7+
# # yamllint disable-line #
8+
###########################################
9+
rules:
10+
braces:
11+
level: warning
12+
min-spaces-inside: 0
13+
max-spaces-inside: 0
14+
min-spaces-inside-empty: 1
15+
max-spaces-inside-empty: 5
16+
brackets:
17+
level: warning
18+
min-spaces-inside: 0
19+
max-spaces-inside: 0
20+
min-spaces-inside-empty: 1
21+
max-spaces-inside-empty: 5
22+
colons:
23+
level: warning
24+
max-spaces-before: 0
25+
max-spaces-after: 1
26+
commas:
27+
level: warning
28+
max-spaces-before: 0
29+
min-spaces-after: 1
30+
max-spaces-after: 1
31+
comments: disable
32+
comments-indentation: disable
33+
document-end: disable
34+
document-start: disable
35+
empty-lines:
36+
level: warning
37+
max: 2
38+
max-start: 0
39+
max-end: 0
40+
hyphens:
41+
level: warning
42+
max-spaces-after: 1
43+
indentation:
44+
level: warning
45+
spaces: consistent
46+
indent-sequences: true
47+
check-multi-line-strings: false
48+
key-duplicates: enable
49+
line-length: disable
50+
new-line-at-end-of-file: disable
51+
new-lines:
52+
type: unix
53+
trailing-spaces: disable
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
---
2+
name: Build and Release
3+
4+
on:
5+
workflow_dispatch:
6+
inputs:
7+
gh-token:
8+
description: 'GitHub Token - used to create a commit in the backup-utils repo'
9+
required: true
10+
type: string
11+
version:
12+
description: 'Version - patch version of the release (e.g. x.y.z)'
13+
required: true
14+
type: string
15+
draft:
16+
description: 'Draft - true if the release should be a draft'
17+
required: true
18+
type: boolean
19+
default: true
20+
21+
jobs:
22+
build:
23+
runs-on: ubuntu-latest
24+
steps:
25+
# resulting token still gets denied by the backup-utils repo
26+
# see: https://github.com/actions/create-github-app-token/pull/46
27+
# - uses: timreimherr/create-github-app-token@main
28+
# id: app-token
29+
# with:
30+
# # required
31+
# app_id: ${{ vars.RELEASE_CONTROLLER_APP_ID }}
32+
# private_key: ${{ secrets.RELEASE_CONTROLLER_APP_PRIVATE_KEY }}
33+
# owner: ${{ github.repository_owner }}
34+
# repositories: backup-utils,backup-utils-private
35+
- name: Checkout backup-utils-private
36+
uses: actions/checkout@v4
37+
with:
38+
token: ${{ github.event.inputs.gh-token }}
39+
repository: github/backup-utils-private
40+
- name: Install dependencies
41+
run: |
42+
sudo apt-get update -y
43+
sudo apt-get install -y moreutils debhelper help2man devscripts gzip
44+
- name: Create tag # this is required for the build scripts
45+
run: |
46+
git config user.name "${{ github.actor }}"
47+
git config user.email "[email protected]"
48+
git tag -a "v${{ github.event.inputs.version }}" -m "v${{ github.event.inputs.version }}"
49+
git push origin "v${{ github.event.inputs.version }}"
50+
- name: Package deb
51+
run: |
52+
./script/package-deb
53+
# many need to remove this once release-notes compilation is automated
54+
- name: Rename deb artifact
55+
run: |
56+
for file in dist/github-backup-utils_*_all.deb; do
57+
if [[ -f "$file" ]]; then
58+
mv "$file" "dist/github-backup-utils_${{ github.event.inputs.version }}_all.deb"
59+
fi
60+
done
61+
- name: Upload deb artifact
62+
uses: actions/upload-artifact@v3
63+
with:
64+
name: github-backup-utils_${{ github.event.inputs.version }}_all.deb
65+
path: |
66+
dist/github-backup-utils_${{ github.event.inputs.version }}_all.deb
67+
- name: Package tarball
68+
run: |
69+
./script/package-tarball
70+
- name: Upload tarball artifact
71+
uses: actions/upload-artifact@v3
72+
with:
73+
name: github-backup-utils-v${{ github.event.inputs.version }}.tar.gz
74+
path: |
75+
dist/github-backup-utils-v${{ github.event.inputs.version }}.tar.gz
76+
release:
77+
needs: build
78+
runs-on: ubuntu-latest
79+
outputs:
80+
commit_hash: ${{ steps.empty-commit.outputs.commit_hash }}
81+
steps:
82+
# resulting token still gets denied by the backup-utils repo
83+
# see: https://github.com/actions/create-github-app-token/pull/46
84+
# - uses: timreimherr/create-github-app-token@main
85+
# id: app-token
86+
# with:
87+
# app_id: ${{ vars.RELEASE_CONTROLLER_APP_ID }}
88+
# private_key: ${{ secrets.RELEASE_CONTROLLER_APP_PRIVATE_KEY }}
89+
# owner: ${{ github.repository_owner }}
90+
# repositories: backup-utils,backup-utils-private
91+
- name: Checkout backup-utils
92+
uses: actions/checkout@v4
93+
with:
94+
token: ${{ github.event.inputs.gh-token }}
95+
repository: github/backup-utils
96+
ref: master
97+
- name: Create empty commit
98+
uses: stefanzweifel/git-auto-commit-action@v4
99+
id: empty-commit
100+
with:
101+
branch: master
102+
commit_message: "${{ github.event.inputs.version }} release"
103+
commit_user_name: "${{ github.actor }}"
104+
commit_user_email: "[email protected]"
105+
commit_options: "--allow-empty"
106+
skip_dirty_check: true
107+
- name: Checkout backup-utils
108+
uses: actions/checkout@v4
109+
with:
110+
token: ${{ github.event.inputs.gh-token }}
111+
repository: github/backup-utils-private
112+
- name: Download deb artifact
113+
uses: actions/download-artifact@v3
114+
with:
115+
name: github-backup-utils_${{ github.event.inputs.version }}_all.deb
116+
- name: Download tarball artifact
117+
uses: actions/download-artifact@v3
118+
with:
119+
name: github-backup-utils-v${{ github.event.inputs.version }}.tar.gz
120+
- name: Create Release
121+
uses: ncipollo/release-action@v1
122+
with:
123+
token: ${{ github.event.inputs.gh-token }}
124+
repo: backup-utils
125+
name: |
126+
GitHub Enterprise Server Backup Utilities v${{ github.event.inputs.version }}
127+
artifacts: |
128+
github-backup-utils-v${{ github.event.inputs.version }}.tar.gz, \
129+
github-backup-utils_${{ github.event.inputs.version }}_all.deb
130+
tag: v${{ github.event.inputs.version }}
131+
commit: ${{ steps.empty-commit.outputs.commit_hash }}
132+
bodyFile: release-notes/${{ github.event.inputs.version }}.md
133+
draft: ${{ github.event.inputs.draft }}
134+
allowUpdates: true
135+
artifactContentType: "raw"
136+
137+
138+
139+

.github/workflows/lint.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
---
12
name: Lint Code Base
23

34
on:
@@ -21,3 +22,4 @@ jobs:
2122
env:
2223
VALIDATE_ALL_CODEBASE: false
2324
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25+
FILTER_REGEX_EXCLUDE: .*release-notes/.*

.releaseignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ownership.yaml
2+
.github

script/package-deb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ set -e
88
# Change into project root
99
cd "$(dirname "$0")"/..
1010

11+
# Fetch tags from remote repository
12+
git fetch --tags
13+
1114
# Basic package name and version.
1215
PKG_BASE="github-backup-utils"
1316
PKG_VERS="$(git describe --tags)"
@@ -22,6 +25,14 @@ mkdir -p dist/debuild
2225
distdir="$(pwd)/dist/debuild/$PKG_NAME"
2326
git clone -q . "$distdir"
2427
cd "$distdir"
28+
29+
echo "Removing files listed in .releaseignore ..."
30+
while IFS= read -r line; do
31+
rm -rf "$line"
32+
done < .releaseignore
33+
34+
echo "Removing .releaseignore ..."
35+
rm -f .releaseignore
2536
git checkout -q "$PKG_HEAD"
2637

2738
debuild -uc -us 1>&2

script/package-tarball

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,24 @@ set -e
88
# Change into project root
99
cd "$(dirname "$0")"/..
1010

11+
# Fetch tags from remote repository
12+
git fetch --tags
13+
1114
# Basic package name and version.
1215
PKG_BASE="github-backup-utils"
1316
PKG_VERS="$(git describe --tags)"
1417
PKG_NAME="${PKG_BASE}-${PKG_VERS}"
1518

19+
# Remove all files or directories listed in .releaseignore
20+
echo "Removing files listed in .releaseignore ..."
21+
while IFS= read -r line; do
22+
rm -rf "$line"
23+
done < .releaseignore
24+
25+
# Remove the .releaseignore file itself
26+
echo "Removing .releaseignore ..."
27+
rm -f .releaseignore
28+
1629
# Run git-archive to generate tarball
1730
echo "Creating ${PKG_NAME}.tar.gz ..."
1831
mkdir -p dist

0 commit comments

Comments
 (0)