build for ubuntu:noble #384
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: ci | |
on: | |
push: {branches-ignore: [latest], tags: ['*']} | |
pull_request: | |
env: | |
PACKAGE_NAME: ${{ github.event.repository.name }} | |
MYCI_GIT_USERNAME: igagis | |
MYCI_GIT_PASSWORD: ${{ secrets.MYCI_GIT_ACCESS_TOKEN }} | |
jobs: | |
##### deb linux ##### | |
deb: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# - {os: debian, codename: stretch, image_owner: } | |
# - {os: debian, codename: buster, image_owner: } | |
- {os: debian, codename: bullseye, image_owner: } | |
- {os: debian, codename: bookworm, image_owner: } | |
# - {os: ubuntu, codename: bionic, image_owner: } | |
- {os: ubuntu, codename: focal, image_owner: } | |
- {os: ubuntu, codename: jammy, image_owner: } | |
- {os: ubuntu, codename: noble, image_owner: } | |
# - {os: raspbian, codename: buster, image_owner: igagis/, labels: [arm,docker]} | |
- {os: raspbian, codename: bullseye, image_owner: igagis/, labels: [arm,docker]} | |
- {os: raspbian, codename: bookworm, image_owner: igagis/, labels: [arm,docker]} | |
runs-on: ${{ (matrix.labels == '' && 'ubuntu-latest') || matrix.labels }} | |
container: ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }} | |
name: linux - ${{ matrix.image_owner }}${{ matrix.os }}:${{ matrix.codename }} | |
steps: | |
- name: set TZ for ubuntu:focal | |
run: | | |
# configure timezone to avoid 'tzdata' package to require user interaction during installation (needed for ubuntu:focal) | |
TZ=Europe/Helsinki ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | |
- name: add cppfw deb repo | |
uses: myci-actions/add-deb-repo@master | |
with: | |
repo: deb https://gagis.hopto.org/repo/cppfw/${{ matrix.os }} ${{ matrix.codename }} main | |
repo-name: cppfw | |
keys-asc: https://gagis.hopto.org/repo/cppfw/pubkey.gpg | |
install: git myci devscripts equivs | |
- name: git clone | |
uses: myci-actions/checkout@master | |
- name: set PACKAGE_VERSION | |
uses: myci-actions/export-env-var@master | |
with: {name: PACKAGE_VERSION, value: $(myci-deb-version.sh debian/changelog)} | |
- name: prepare debian package | |
run: myci-deb-prepare.sh | |
- name: install deps | |
run: myci-deb-install-build-deps.sh | |
- name: build | |
run: dpkg-buildpackage --unsigned-source --unsigned-changes | |
- name: deploy deb packages | |
run: | | |
echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa | |
myci-deploy-apt-ssh.sh --key repo_key_rsa --server gagis.hopto.org --repo cppfw/${{ matrix.os }} --distro ${{ matrix.codename }} --component main ../${PACKAGE_NAME}*_${PACKAGE_VERSION}_*.deb | |
if: startsWith(github.ref, 'refs/tags/') | |
##### archlinux ##### | |
archlinux: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- {image: "archlinux:latest", arch: amd64} | |
# - {image: "lopsided/archlinux-arm32v7:latest", arch: arm32, labels: [arm,docker]} | |
- {image: "lopsided/archlinux-arm64v8:latest", arch: arm64, labels: [arm64,docker]} | |
runs-on: ${{ (matrix.labels == '' && 'ubuntu-latest') || matrix.labels }} | |
container: ${{ matrix.image }} | |
name: linux - archlinux - ${{ matrix.arch }} | |
steps: | |
- name: install ci tools | |
run: | | |
pacman --sync --refresh --sysupgrade --noconfirm --noprogressbar base-devel git | |
- name: add cppfw pacman repo | |
uses: myci-actions/add-pacman-repo@master | |
with: | |
name: cppfw | |
url: https://gagis.hopto.org/repo/cppfw/archlinux/${{ matrix.arch }} | |
key-server: https://gagis.hopto.org/repo/cppfw/pubkey.gpg | |
install: >- | |
myci | |
- name: git clone | |
uses: myci-actions/checkout@master | |
- name: set PACKAGE_VERSION | |
uses: myci-actions/export-env-var@master | |
with: {name: PACKAGE_VERSION, value: $(myci-deb-version.sh debian/changelog)} | |
# makepkg needs to install dependency packages, so nobody user needs sudo rights | |
- name: add nobody to sudoers | |
run: | | |
echo "nobody ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers | |
- name: build | |
run: | | |
# provide write access to user nobody | |
chmod --recursive 777 . | |
cd archlinux | |
sudo --user=nobody --preserve-env=PACKAGE_VERSION makepkg --syncdeps --noconfirm --skipinteg --noprogressbar | |
- name: deploy | |
run: | | |
echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa | |
myci-deploy-pacman-ssh.sh --server gagis.hopto.org --key repo_key_rsa --repo cppfw/archlinux/${{ matrix.arch }} --database cppfw archlinux/$PACKAGE_NAME-*-any.pkg.* | |
if: startsWith(github.ref, 'refs/tags/') | |
##### macosx ##### | |
macosx: | |
runs-on: macos-latest | |
steps: | |
- name: workaround python2 and python3 issue when upgrading python | |
run : | | |
rm -rf /usr/local/bin/2to3* | |
rm -rf /usr/local/bin/idle3* | |
rm -rf /usr/local/bin/pydoc3* | |
rm -rf /usr/local/bin/python3 | |
rm -rf /usr/local/bin/python3-config | |
rm -rf /usr/local/bin/python3* | |
rm -rf /usr/local/bin/python3*-config | |
- name: git clone | |
uses: myci-actions/checkout@master | |
- name: add cppfw tap | |
run: | | |
brew tap cppfw/tap | |
brew update | |
- name: install ci tools | |
run: brew install myci make | |
- name: set PATH to use latest make | |
uses: myci-actions/export-env-var@master | |
with: {name: PATH, value: "$HOMEBREW_PREFIX/opt/make/libexec/gnubin:$PATH"} | |
- name: install deps | |
run: myci-brew-install.sh `myci-list-deps-homebrew.sh` | |
- name: build | |
run: make --include-dir=$(brew --prefix)/include | |
- name: test | |
run: make --include-dir=$(brew --prefix)/include test | |
- name: deploy | |
run: myci-deploy-homebrew.sh --tap cppfw/tap | |
if: startsWith(github.ref, 'refs/tags/') | |
##### msys2 ##### | |
msys2: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- name: make msys2 to provide the default shell | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
msystem: MSYS | |
install: >- | |
msys2-devel | |
make | |
- name: add cppfw pacman msys repo | |
uses: myci-actions/add-pacman-repo@master | |
with: | |
name: cppfw_msys | |
url: https://gagis.hopto.org/repo/cppfw/msys2/msys | |
shell: 'msys2 {0}' | |
key-server: https://gagis.hopto.org/repo/cppfw/pubkey.gpg | |
install: myci git | |
- name: git clone | |
uses: myci-actions/checkout@master | |
- name: prepare pacman package | |
run: myci-apply-version.sh -v $(myci-deb-version.sh debian/changelog) msys2/PKGBUILD.in | |
- name: build | |
run: | | |
cd msys2 | |
makepkg --syncdeps --noconfirm --skipinteg | |
- name: deploy | |
run: | | |
echo "${{ secrets.MYCI_REPO_SSH_KEY }}" > repo_key_rsa && chmod 600 repo_key_rsa | |
myci-deploy-pacman-ssh.sh --server gagis.hopto.org --key repo_key_rsa --repo cppfw/msys2/msys --database cppfw_msys msys2/$PACKAGE_NAME-*-any.pkg.* | |
if: startsWith(github.ref, 'refs/tags/') | |
##### mingw ##### | |
msys2-mingw: | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- {arch: i686, repo: mingw32} | |
- {arch: x86_64, repo: mingw64} | |
name: msys2 - ${{ matrix.repo }} | |
steps: | |
- name: make msys2 to provide the default shell | |
uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
msystem: ${{ matrix.repo }} | |
install: >- | |
msys2-devel | |
mingw-w64-${{ matrix.arch }}-toolchain | |
make | |
diffutils | |
dos2unix | |
- name: add cppfw pacman msys repo | |
uses: myci-actions/add-pacman-repo@master | |
with: | |
name: cppfw_msys | |
url: https://gagis.hopto.org/repo/cppfw/msys2/msys | |
shell: 'msys2 {0}' | |
key-server: https://gagis.hopto.org/repo/cppfw/pubkey.gpg | |
install: myci git | |
- name: git clone | |
uses: myci-actions/checkout@master | |
- name: test | |
run: make test |