Skip to content

Commit

Permalink
[ci] Setup to build Jammy packages
Browse files Browse the repository at this point in the history
  • Loading branch information
gergondet committed May 31, 2023
1 parent 69cadbe commit 08e9f0e
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 421 deletions.
236 changes: 20 additions & 216 deletions .github/workflows/package.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
---
name: Package eigen-qld
on:
repository_dispatch:
Expand All @@ -14,219 +13,24 @@ on:
- "**"
tags:
- v*
pull_request:
branches:
- "**"
jobs:
check-tag:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
if: startsWith(github.ref, 'refs/tags/')
- name: Check version coherency
run: |
set -x
export VERSION=`echo ${{ github.ref }} | sed -e 's@refs/tags/v@@'`
echo "REJECTION=PROJECT_VERSION in CMakeLists.txt does not match tag" >> $GITHUB_ENV
grep -q "set(PROJECT_VERSION ${VERSION})" CMakeLists.txt
echo "REJECTION=Upstream version in debian/changelog does not match tag" >> $GITHUB_ENV
head -n 1 debian/changelog | grep -q "eigen-qld (${VERSION}"
echo "REJECTION=Conan package version does not match tag" >> $GITHUB_ENV
grep -q "version = \"${VERSION}\"" conanfile.py
echo "REJECTION=" >> $GITHUB_ENV
export TAG=`echo ${{ github.ref }} | sed -e 's@refs/tags/@@'`
echo "RELEASE_TAG=${TAG}" >> $GITHUB_ENV
if: startsWith(github.ref, 'refs/tags/')
- name: Delete tag
run: |
set -x
curl --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -X DELETE https://api.github.com/repos/${{ github.repository }}/git/${{ github.ref }}
if: failure()
- name: Notify tag deletion
uses: archive/github-actions-slack@master
with:
slack-bot-user-oauth-access-token: "${{ secrets.SLACK_BOT_TOKEN }}"
slack-channel: "#ci"
slack-text: |
Tag *${{ github.ref }}* in *${{ github.repository }}* was deleted:
${{ env.REJECTION}}
if: failure()
- name: Create release
uses: jrl-umi3218/github-actions/create-release@master
with:
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
tag: "${{ env.RELEASE_TAG }}"
if: startsWith(github.ref, 'refs/tags/')
build-packages:
needs: check-tag
strategy:
fail-fast: false
matrix:
dist:
- bionic
- focal
arch:
- i386
- amd64
exclude:
- dist: focal
arch: i386
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Choose extra mirror
run: |
# We upload in all conditions except when building on PR or branch other than master
export PACKAGE_UPLOAD=true
if ${{ startsWith(github.ref, 'refs/tags/') }}
then
export USE_HEAD=false
elif [ "${{ github.event.action }}" == "package-master" ]
then
export USE_HEAD=true
elif [ "${{ github.event.action }}" == "package-release" ]
then
export USE_HEAD=false
export REF=`git tag --sort=committerdate --list 'v[0-9]*'|tail -1`
git checkout $REF
git submodule sync && git submodule update
else
export REF=`echo ${{ github.ref }} | sed -e 's@refs/[a-z]*/@@'`
export USE_HEAD=true
if [ $REF != "master" ]
then
export PACKAGE_UPLOAD=false
fi
fi
if $USE_HEAD
then
echo "CLOUDSMITH_REPO=mc-rtc/head" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-master" >> $GITHUB_ENV
else
echo "CLOUDSMITH_REPO=mc-rtc/stable" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-release" >> $GITHUB_ENV
fi
echo "PACKAGE_UPLOAD=${PACKAGE_UPLOAD}" >> $GITHUB_ENV
- name: Build package
uses: jrl-umi3218/github-actions/build-package-native@master
with:
dist: "${{ matrix.dist }}"
arch: "${{ matrix.arch }}"
cloudsmith-repo: "${{ env.CLOUDSMITH_REPO }}"
- uses: actions/upload-artifact@v1
with:
name: packages-${{ matrix.dist }}-${{ matrix.arch }}
path: "/tmp/packages-${{ matrix.dist }}-${{ matrix.arch }}/"
if: env.PACKAGE_UPLOAD == 'true'
upload-packages:
needs: build-packages
strategy:
max-parallel: 1
fail-fast: false
matrix:
dist:
- bionic
- focal
arch:
- i386
- amd64
exclude:
- dist: focal
arch: i386
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Choose extra mirror
run: |
# We upload in all conditions except when building on PR or branch other than master
export PACKAGE_UPLOAD=true
if ${{ startsWith(github.ref, 'refs/tags/') }}
then
export USE_HEAD=false
elif [ "${{ github.event.action }}" == "package-master" ]
then
export USE_HEAD=true
elif [ "${{ github.event.action }}" == "package-release" ]
then
export USE_HEAD=false
export REF=`git tag --sort=committerdate --list 'v[0-9]*'|tail -1`
git checkout $REF
git submodule sync && git submodule update
else
export REF=`echo ${{ github.ref }} | sed -e 's@refs/[a-z]*/@@'`
export USE_HEAD=true
if [ $REF != "master" ]
then
export PACKAGE_UPLOAD=false
fi
fi
if $USE_HEAD
then
echo "CLOUDSMITH_REPO=mc-rtc/head" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-master" >> $GITHUB_ENV
else
echo "CLOUDSMITH_REPO=mc-rtc/stable" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-release" >> $GITHUB_ENV
fi
echo "PACKAGE_UPLOAD=${PACKAGE_UPLOAD}" >> $GITHUB_ENV
- name: Download packages
uses: actions/download-artifact@v1
with:
name: packages-${{ matrix.dist }}-${{ matrix.arch }}
if: env.PACKAGE_UPLOAD == 'true'
- name: Upload
uses: jrl-umi3218/github-actions/upload-package@master
with:
dist: ubuntu/${{ matrix.dist }}
repo: "${{ env.CLOUDSMITH_REPO }}"
path: packages-${{ matrix.dist }}-${{ matrix.arch }}
CLOUDSMITH_API_KEY: "${{ secrets.CLOUDSMITH_API_KEY }}"
if: env.PACKAGE_UPLOAD == 'true'
mirror-sync-and-trigger:
needs: upload-packages
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Choose extra mirror
run: |
# We upload in all conditions except when building on PR or branch other than master
export PACKAGE_UPLOAD=true
if ${{ startsWith(github.ref, 'refs/tags/') }}
then
export USE_HEAD=false
elif [ "${{ github.event.action }}" == "package-master" ]
then
export USE_HEAD=true
elif [ "${{ github.event.action }}" == "package-release" ]
then
export USE_HEAD=false
export REF=`git tag --sort=committerdate --list 'v[0-9]*'|tail -1`
git checkout $REF
git submodule sync && git submodule update
else
export REF=`echo ${{ github.ref }} | sed -e 's@refs/[a-z]*/@@'`
export USE_HEAD=true
if [ $REF != "master" ]
then
export PACKAGE_UPLOAD=false
fi
fi
if $USE_HEAD
then
echo "CLOUDSMITH_REPO=mc-rtc/head" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-master" >> $GITHUB_ENV
else
echo "CLOUDSMITH_REPO=mc-rtc/stable" >> $GITHUB_ENV
echo "PACKAGE_JOB=package-release" >> $GITHUB_ENV
fi
echo "PACKAGE_UPLOAD=${PACKAGE_UPLOAD}" >> $GITHUB_ENV
- name: Trigger dependents rebuild
run: 'curl -H "Accept: application/vnd.github.everest-preview+json" -H "Authorization: token ${{ secrets.GH_PAGES_TOKEN }}" --request POST --data "{\"event_type\": \"${PACKAGE_JOB}\"}" https://api.github.com/repos/jrl-umi3218/Tasks/dispatches
'
if: env.PACKAGE_UPLOAD == 'true'
package:
uses: jrl-umi3218/github-actions/.github/workflows/package-project.yml@master
with:
deps: '["jrl-umi3218/Tasks"]'
latest-cmake: true
matrix: |
{
"dist": ["bionic", "focal", "jammy"],
"arch": ["amd64"],
"include":
[
{"dist": "bionic", "arch": "i386" }
]
}
secrets:
CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }}
GH_TOKEN: ${{ secrets.GH_PAGES_TOKEN }}
Loading

0 comments on commit 08e9f0e

Please sign in to comment.