Skip to content

Commit 216ca49

Browse files
committed
Add release workflow for litani
1 parent e7bc75c commit 216ca49

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed

.github/workflows/release.yaml

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
on:
2+
push:
3+
tags:
4+
- 'litani-*'
5+
6+
name: Create Release and package
7+
8+
jobs:
9+
get-version-information:
10+
name: Get Version Information
11+
runs-on: ubuntu-20.04
12+
outputs:
13+
version: ${{ steps.split-version.outputs._1 }}
14+
steps:
15+
- uses: jungwinter/split@v1
16+
id: split
17+
with:
18+
msg: ${{ github.ref }}
19+
seperator: '/'
20+
- uses: jungwinter/split@v1
21+
id: split-version
22+
with:
23+
msg: ${{ steps.split.outputs._2 }}
24+
seperator: '-'
25+
perform-release:
26+
name: Perform Release
27+
runs-on: ubuntu-20.04
28+
needs: get-version-information
29+
outputs:
30+
version: ${{ needs.get-version-information.outputs.version }}
31+
steps:
32+
- name: Checkout code
33+
uses: actions/checkout@v2
34+
- name: Create release
35+
uses: actions/create-release@v1
36+
env:
37+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
38+
LITANI_VERSION: ${{ needs.get-version-information.outputs.version }}
39+
with:
40+
tag_name: litani-${{ env.LITANI_VERSION }}
41+
release_name: litani-${{ env.LITANI_VERSION }}
42+
body: |
43+
This is Litani version ${{ env.LITANI_VERSION }}.
44+
45+
## MacOS
46+
47+
On MacOS, install Litani using [Homebrew](https://brew.sh/) with
48+
49+
```sh
50+
brew tap aws/tap
51+
brew install litani
52+
```
53+
54+
or upgrade (if it's already been installed) with:
55+
56+
```sh
57+
brew upgrade litani
58+
```
59+
60+
## Ubuntu
61+
62+
On Ubuntu, install Litani by downloading the *.deb package below for Ubuntu 20 and install with
63+
64+
```sh
65+
# Ubuntu 20.04:
66+
$ apt install -y ./litani-${{ env.LITANI_VERSION }}.deb
67+
```
68+
draft: false
69+
prerelease: false
70+
ubuntu-20_04-package:
71+
runs-on: ubuntu-20.04
72+
needs: perform-release
73+
env:
74+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75+
LITANI_VERSION: ${{ needs.perform-release.outputs.version }}
76+
steps:
77+
- uses: actions/checkout@v2
78+
- name: Setup directory for deb package
79+
run: |
80+
sudo apt-get install -y mandoc scdoc ninja-build
81+
mkdir -p litani-${{ env.LITANI_VERSION }}/{DEBIAN,usr/{bin,libexec/litani,share/{doc/litani,man/{man1,man5,man7}}}}
82+
touch litani-${{ env.LITANI_VERSION }}/DEBIAN/control
83+
cat << EOF > litani-${{ env.LITANI_VERSION }}/DEBIAN/control
84+
Package: Litani
85+
Version: ${{ env.LITANI_VERSION }}
86+
Architecture: amd64
87+
Depends: ninja-build, gnuplot, graphviz, python3-jinja2, python3-voluptuous
88+
Maintainer: Kareem Khazem <[email protected]>
89+
Description: A program that provides platform-independent job control.
90+
AWS Build Accumulator collects build jobs from multiple sources before executing them concurrently.
91+
It provides platform-independent job control (timeouts, return code control) and an output format that
92+
is easy to render into reports (for example, using the built-in renderer). AWS Build Accumulator shines
93+
where your project uses multiple different build systems or requires a unified interface describing
94+
heterogeneous build jobs.
95+
EOF
96+
./doc/configure && ninja
97+
mv bin lib templates litani litani-${{ env.LITANI_VERSION }}/usr/libexec/litani/
98+
mv doc/out/man/*.1 litani-${{ env.LITANI_VERSION }}/usr/share/man/man1
99+
mv doc/out/man/*.5 litani-${{ env.LITANI_VERSION }}/usr/share/man/man5
100+
mv doc/out/man/*.7 litani-${{ env.LITANI_VERSION }}/usr/share/man/man7
101+
mv doc/out/html/index.html litani-${{ env.LITANI_VERSION }}/usr/share/doc/litani
102+
ln -s /usr/libexec/litani/litani litani-${{ env.LITANI_VERSION }}/usr/bin/
103+
rm -r $(ls -A | grep -v litani-${{ env.LITANI_VERSION }})
104+
- name: Create .deb package
105+
id: create_packages
106+
run: |
107+
sudo dpkg-deb --build --root-owner-group litani-${{ env.LITANI_VERSION }}
108+
deb_package_name="$(ls *.deb)"
109+
echo "::set-output name=deb_package::$deb_package_name"
110+
echo "::set-output name=deb_package_name::$deb_package_name"
111+
- name: Install Litani using deb package
112+
run: sudo apt install -y ./litani-${{ env.LITANI_VERSION }}.deb
113+
- name: Test deb package
114+
run: |
115+
litani -h
116+
man litani
117+
litani init --project-name nyx --stages codegen verify check
118+
litani add-job --command 'which brew' --pipeline-name 'siesta' --ci-stage codegen --phony-outputs phony_1
119+
litani add-job --command 'which python3' --pipeline-name 'siesta' --ci-stage verify --inputs phony_1 --phony-outputs phony_2
120+
litani add-job --command 'which docker' --pipeline-name 'siesta' --ci-stage check --inputs phony_2 --phony-outputs phony_3
121+
litani run-build
122+
- name: Get release
123+
id: get_release_info
124+
uses: bruceadams/[email protected]
125+
- name: Upload release binary
126+
uses: actions/[email protected]
127+
with:
128+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
129+
asset_path: ${{ steps.create_packages.outputs.deb_package }}
130+
asset_name: ${{ steps.create_packages.outputs.deb_package_name }}
131+
asset_content_type: application/x-deb

0 commit comments

Comments
 (0)