Build and release #86
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: Build and release | |
on: | |
workflow_dispatch: | |
inputs: | |
repo: | |
description: 'Reva repository to be used' | |
required: true | |
default: 'cs3org' | |
branch: | |
description: 'Branch to be built' | |
required: true | |
default: 'master' | |
go-version: | |
description: 'Go version' | |
required: true | |
default: '1.21.3' | |
jobs: | |
build: | |
name: Release | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
container: [cern/alma8-base, cern/alma9-base] | |
permissions: | |
contents: write | |
container: ${{ matrix.container }} | |
steps: | |
- name: Checkout release repository | |
uses: actions/checkout@v3 | |
with: | |
path: reva-release | |
- name: Checkout reva repository | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ inputs.repo }}/reva | |
path: reva | |
ref: ${{ inputs.branch }} | |
- name: Install build infrastructure | |
run: | | |
source /etc/os-release | |
OSMAJ="$(echo $VERSION_ID | cut -c1)" | |
cat reva-release/ceph.repo.in | sed "s/OSMAJOR/$OSMAJ/" > /etc/yum.repos.d/ceph.repo | |
[[ $OSMAJ -eq "7" ]] && sed -i "s/quincy/octopus/" /etc/yum.repos.d/ceph.repo && cp reva-release/endpoint.repo /etc/yum.repos.d/endpoint.repo && yum -y install yum-plugin-priorities && sed -i '/RemovePathPostfixes.*/d' reva-release/cernbox-revad.spec && echo "CI: adapted setup to CC7, installing related dependencies" | |
yum install -y git wget make gcc gcc-c++ rpm-build glibc-static libcephfs-devel librbd-devel librados-devel | |
- name: Install golang | |
run: | | |
wget https://go.dev/dl/go${{ inputs.go-version }}.linux-amd64.tar.gz && tar xfz go${{ inputs.go-version }}.linux-amd64.tar.gz | |
- name: Prepare files for building the RPMs | |
id: reva-rpms | |
run: | | |
cd reva | |
echo revaVer="Reva commit $(git rev-parse --short HEAD) at ${{ inputs.repo }}/${{ inputs.branch }}" >> "$GITHUB_OUTPUT" | |
cd ../reva-release | |
go run prepare_release.go -author "temporary" -email "cernbox-admins@cern.ch" -reva-version "Reva commit" | |
echo "version=$(awk '$1 == "Version:" {print $2}' cernbox-revad.spec)" >> $GITHUB_ENV | |
cp Makefile ../reva/Makefile.rpm | |
cp cernbox-revad.spec ../reva/cernbox-revad.spec | |
- name: Build Reva RPMs | |
run: | | |
set -x | |
export GOPATH=$(pwd)/go | |
export PATH=$PATH:$GOPATH/bin | |
rm -rf ~/.cache/go-build | |
cd reva | |
make -f Makefile.rpm rpm | |
mkdir /release | |
mv cernbox-*.rpm /release | |
env: | |
CGO_ENABLED: 1 | |
CONTAINER: ${{ matrix.container }} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: cernbox-rpms | |
path: /release | |
retention-days: 1 | |
outputs: | |
revaVer: ${{ steps.reva-rpms.outputs.revaVer }} | |
reporelease: | |
needs: build | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
container: golang:1.20 | |
env: | |
REVAVER: ${{ needs.build.outputs.revaVer }} | |
steps: | |
- name: Checkout release repository | |
uses: actions/checkout@v3 | |
with: | |
path: reva-release | |
- name: Bump version in spec file | |
run: | | |
export GOPATH=$(pwd)/go | |
export PATH=$PATH:$GOPATH/bin | |
echo "Reva version was '$REVAVER'" | |
cd reva-release | |
go run prepare_release.go -author "cernbox-admins[bot]" -email "cernbox-admins@cern.ch" -reva-version "${REVAVER}" | |
echo "version=$(awk '$1 == "Version:" {print $2}' cernbox-revad.spec)" >> $GITHUB_ENV | |
- name: Push version | |
uses: stefanzweifel/git-auto-commit-action@v4 | |
with: | |
repository: reva-release | |
commit_message: "Version ${{ env.version }}" | |
file_pattern: cernbox-revad.spec | |
commit_user_name: CERNBox Admins Bot | |
commit_user_email: cernbox-admins@cern.ch | |
tagging_message: v${{ env.version }} | |
- name: Download artifacts | |
id: download | |
uses: actions/download-artifact@v3 | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
draft: false | |
prerelease: false | |
files: ${{ steps.download.outputs.download-path }}/cernbox-rpms/* | |
name: Version ${{ env.version }} | |
tag_name: v${{ env.version }} |