Release v1.5 #28
Workflow file for this run
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: Release | |
run-name: Release ${{ github.ref_name }} | |
on: | |
push: | |
tags: | |
- 'v\d+\.\d+' | |
- 'v\d+\.\d+-\d+' | |
permissions: | |
contents: write | |
jobs: | |
copr_build: | |
name: Build on copr | |
runs-on: ubuntu-latest | |
container: fedora:latest | |
steps: | |
- name: Install copr-cli and git | |
run: dnf install -y copr-cli git && dnf upgrade -y copr-cli git | |
- name: Checkout code | |
uses: actions/[email protected] | |
- name: Confirm version and release in spec file | |
run: | | |
version="$(awk '/Version:/ {print $2}' cpp-json.spec)" | |
release="$(awk '/Release:/ {print $2}' cpp-json.spec)" | |
release="${release%\%\{\?dist\}}" | |
if [[ ${{ github.ref_name }} =~ - ]]; then | |
if [[ ${{ github.ref_name }} != "v$version-$release" ]]; then | |
echo "Tag name does not match version and release in cpp-json.spec" | |
exit 1 | |
fi | |
else | |
if [[ ${{ github.ref_name }} != "v$version" || "$release" != "1" ]]; then | |
echo "Tag name does not match version in cpp-json.spec" | |
exit 1 | |
fi | |
fi | |
- name: Setup copr-cli | |
run: | | |
mkdir -p ~/.config | |
echo "[copr-cli]" > ~/.config/copr | |
echo "login = ${{ secrets.COPR_LOGIN }}" >> ~/.config/copr | |
echo "username = tokox" >> ~/.config/copr | |
echo "token = ${{ secrets.COPR_TOKEN }}" >> ~/.config/copr | |
echo "copr_url = https://copr.fedorainfracloud.org" >> ~/.config/copr | |
- name: Build package | |
run: | | |
url="${{ github.repositoryUrl }}" | |
if [[ $url == git://* ]]; then | |
url="https://${url:6}" | |
fi | |
copr-cli buildscm --clone-url "$url" --commit "${{ github.ref_name }}" ${{ github.repository }} --timeout 1800 | |
make_release: | |
name: Make release | |
runs-on: ubuntu-latest | |
container: fedora:latest | |
needs: [copr_build] | |
steps: | |
- name: Install git | |
run: dnf install -y git && dnf upgrade -y git | |
- name: Checkout code | |
uses: actions/[email protected] | |
- name: Get previous tag | |
id: get_previous_tag | |
uses: pozetroninc/[email protected] | |
with: | |
repository: ${{ github.repository }} | |
token: ${{ github.token }} | |
- name: Move vlatest | |
uses: rickstaa/[email protected] | |
with: | |
tag: vlatest | |
force_push_tag: true | |
commit_sha: ${{ github.sha }} | |
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | |
gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }} | |
- name: Create changelog | |
run: | | |
echo "**Changelog**" > changelog.md | |
sed -n '/%changelog/,$p' cpp-json.spec | tail -n +2 | awk '/\*/{if (found++ == 1) exit} 1' >> changelog.md | |
echo "**Full Changelog**: https://github.com/tokox/cpp-json/compare/${{ steps.get_previous_tag.outputs.release }}...${{ github.ref_name }}" >> changelog.md | |
- name: Create release | |
uses: ncipollo/[email protected] | |
with: | |
name: ${{ contains(github.ref_name, '-') && 'Patch' || 'Release'}} ${{ github.ref_name }} | |
bodyFile: changelog.md | |
tag: ${{ github.ref_name }} | |
upload_assets: | |
name: Upload assets | |
runs-on: ubuntu-latest | |
container: fedora:latest | |
needs: [make_release, copr_build] | |
steps: | |
- name: Install copr-cli | |
run: dnf install -y copr-cli && dnf upgrade -y copr-cli | |
- name: Setup copr-cli | |
run: | | |
mkdir -p ~/.config | |
echo "[copr-cli]" > ~/.config/copr | |
echo "login = ${{ secrets.COPR_LOGIN }}" >> ~/.config/copr | |
echo "username = tokox" >> ~/.config/copr | |
echo "token = ${{ secrets.COPR_TOKEN }}" >> ~/.config/copr | |
echo "copr_url = https://copr.fedorainfracloud.org" >> ~/.config/copr | |
- name: Get copr build id | |
id: get_copr_build_id | |
run: echo "id=$(copr-cli list-builds --output-format text-row tokox/cpp-json | grep 'tokox-cpp-json' | grep 'succeeded' | awk '{print $1; exit}')" >> $GITHUB_OUTPUT | |
- name: Download assets | |
run: copr-cli download-build --dest assets --rpms ${{ steps.get_copr_build_id.outputs.id }} | |
- name: Rename assets | |
run: | | |
for file in assets/*/*.rpm; do | |
mv $file assets/$(basename $(dirname $file | sed 's/-x86_64$//'))_$(basename $file) | |
done | |
- name: Upload assets | |
uses: ncipollo/[email protected] | |
with: | |
allowUpdates: true | |
artifactErrorsFailBuild: true | |
artifacts: assets/*.rpm | |
omitBodyDuringUpdate: true | |
omitNameDuringUpdate: true | |
tag: ${{ github.ref_name }} |