Merge pull request #446 from eth-pkg/upcoming/bookworm/amd64/eth-node… #381
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 | |
on: | |
push: | |
tags: | |
- releases/** | |
jobs: | |
release: | |
runs-on: ubuntu-24.04 | |
permissions: | |
contents: write | |
issues: write | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Env variables | |
id: env | |
run: | | |
sudo apt install yq -y | |
TAG_NAME=$(echo ${{ github.ref }} | sed 's/refs\/tags\///') | |
FOLDER=$(echo $TAG_NAME | sed 's/^[^\/]*\///') | |
# Extract the second and third directories from the tag name | |
CODENAME=$(echo $TAG_NAME | cut -d'/' -f2) | |
TARGET_ARCH=$(echo $TAG_NAME | cut -d'/' -f3) | |
PACKAGE_NAME=$(echo $TAG_NAME | cut -d'/' -f4) | |
BUILD_ARCH=$(tomlq '.build_env.arch' $TAG_NAME/pkg-builder.toml | sed 's/"//g') | |
VERSION_NUMBER=$(echo $TAG_NAME | cut -d'/' -f5) | |
VERSION_NUMBER_WITHOUT_REVISON=$(echo $VERSION_NUMBER | cut -d'-' -f1) | |
BUILD_DIR=$(echo "/home/runner/.pkg-builder/packages/$CODENAME/$PACKAGE_NAME-$VERSION_NUMBER") | |
# Write outputs to GITHUB_OUTPUT environment file | |
echo "tag_name=$TAG_NAME" >> $GITHUB_OUTPUT | |
echo "codename=$CODENAME" >> $GITHUB_OUTPUT | |
echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT | |
echo "version_number=$VERSION_NUMBER" >> $GITHUB_OUTPUT | |
echo "version_number_without_revision=$VERSION_NUMBER_WITHOUT_REVISON" >> $GITHUB_OUTPUT | |
echo "build_dir=$BUILD_DIR" >> $GITHUB_OUTPUT | |
echo "build_arch=$BUILD_ARCH" >> $GITHUB_OUTPUT | |
echo "target_arch=$TARGET_ARCH" >> $GITHUB_OUTPUT | |
# values | |
echo "tag_name=$TAG_NAME" | |
echo "codename=$CODENAME" | |
echo "build_arch=$BUILD_ARCH" | |
echo "target_arch=$TARGET_ARCH" | |
echo "package_name=$PACKAGE_NAME" | |
echo "version_number=$VERSION_NUMBER" | |
echo "version_number_without_revision=$VERSION_NUMBER_WITHOUT_REVISON" | |
echo "build_dir=$BUILD_DIR" | |
- name: Sbuild setup | |
run: | | |
sudo apt update | |
# Note this is an older version of sbuild, no need to patch it, yet | |
sudo apt install -y debhelper schroot ubuntu-dev-tools autopkgtest vmdb2 qemu-system-x86 | |
sudo apt install -y pkg-config libssl-dev uidmap | |
sudo apt install -y libfilesys-df-perl libmime-lite-perl | |
# change this into actually built version and cache it | |
wget https://github.com/eth-pkg/sbuild-ubuntu/releases/download/0.85-6-1/sbuild_0.85.6_all.deb | |
wget https://github.com/eth-pkg/sbuild-ubuntu/releases/download/0.85-6-1/libsbuild-perl_0.85.6_all.deb | |
sudo dpkg -i sbuild_0.85.6_all.deb libsbuild-perl_0.85.6_all.deb || true | |
- name: Checkout dependency repository | |
uses: actions/checkout@v4 | |
with: | |
repository: eth-pkg/pkg-builder | |
ref: main | |
path: pkg-builder | |
- name: Install pkg-builder | |
run: | | |
cd pkg-builder | |
cargo build --release | |
mkdir -p ${HOME}/.local/bin | |
mv target/release/pkg-builder ${HOME}/.local/bin | |
# add to path the prebuilt debcrafter binaries as well | |
cp bin_dependencies/debcrafter_* ${HOME}/.local/bin | |
chmod +x ${HOME}/.local/bin/pkg-builder | |
chmod +x ${HOME}/.local/bin/debcrafter_* | |
echo "${HOME}/.local/bin" >> $GITHUB_PATH | |
- name: Create chroot env | |
run: | | |
cd ${{ steps.env.outputs.tag_name }} | |
pkg-builder env create | |
echo "${HOME}/.cache/sbuild/${{ steps.env.outputs.codename }}-${{ steps.env.outputs.build_arch }}.tar.gz" >> $GITHUB_PATH | |
- name: package | |
run: | | |
cd ${{ steps.env.outputs.tag_name }} | |
pkg-builder package --run-piuparts false --run-autopkgtest false --run-lintian true | |
echo "${HOME}/.pkg-builder/packages/${{steps.env.outputs.codename}}/${{steps.env.outputs.package_name}}-${{steps.env.outputs.version_number}}" >> $GITHUB_PATH | |
# - name: piuparts | |
# if: steps.env.outputs.codename != 'noble' | |
# run: | | |
# # installing debian-archive-keyring fails on ubuntu LTS, not sure why, but it says it is already installed | |
# # sudo apt install -y debian-archive-keyring | |
# sudo apt install piuparts | |
# cd ${{ steps.env.outputs.tag_name }} | |
# ${HOME}/.local/bin/pkg-builder piuparts | |
# - name: autopkgtest | |
# # TODO will need to add package caching for autopkgtest, but this is a huge task, delaying, and releasing for now | |
# if: ${{ steps.env.outputs.codename != 'noble' && steps.env.outputs.package_name != 'ethereum-genesis-generator' }} | |
# run: | | |
# sudo cp -R ${HOME}/.pkg-builder /root | |
# apt list --installed autopkgtest | |
# cd ${{ steps.env.outputs.tag_name }} | |
# sudo ${HOME}/.local/bin/pkg-builder autopkgtest | |
- name: verify | |
run: | | |
cd ${{ steps.env.outputs.tag_name }} | |
${HOME}/.local/bin/pkg-builder verify --no-package true | |
- name: Pkg specs | |
run: tar -czvf pkg_specs.tar.gz ${{ steps.env.outputs.tag_name }} | |
- name: Create Release | |
id: create_release | |
uses: ncipollo/release-action@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
draft: false | |
prerelease: true | |
# This should come after verify, but sometimes it is good to have it, to check why the verify fails | |
# TODO fix arch to support all arch | |
- name: Save ${{ steps.env.outputs.codename }}-${{ steps.env.outputs.build_arch }}.tar.gz | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: /home/runner/.cache/sbuild/${{ steps.env.outputs.codename }}-${{ steps.env.outputs.build_arch }}.tar.gz | |
asset_name: ${{ steps.env.outputs.codename }}-${{ steps.env.outputs.build_arch }}.tar.gz | |
asset_content_type: application/octet-stream | |
- name: Save .orig.tar.gz | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ steps.env.outputs.build_dir }}/${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number_without_revision}}.orig.tar.gz | |
asset_name: ${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number_without_revision}}.orig.tar.gz | |
asset_content_type: application/x-tar+gzip | |
- name: Save .debian.tar.xz | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ steps.env.outputs.build_dir }}/${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}.debian.tar.xz | |
asset_name: ${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}.debian.tar.xz | |
asset_content_type: application/x-tar | |
- name: Save .dsc | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ steps.env.outputs.build_dir }}/${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}.dsc | |
asset_name: ${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}.dsc | |
asset_content_type: text/plain | |
- name: Save .deb | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ steps.env.outputs.build_dir }}/${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}_${{steps.env.outputs.target_arch}}.deb | |
asset_name: ${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}_${{steps.env.outputs.target_arch}}.deb | |
asset_content_type: application/vnd.debian.binary-package | |
- name: Save .build | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ${{ steps.env.outputs.build_dir }}/${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}_${{steps.env.outputs.build_arch}}.build | |
asset_name: ${{steps.env.outputs.package_name}}_${{steps.env.outputs.version_number}}_${{steps.env.outputs.build_arch}}.build | |
asset_content_type: text/plain | |
- name: Save pkg-specs | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: pkg_specs.tar.gz | |
asset_name: pkg_specs.tar.gz | |
asset_content_type: application/x-tar+gzip | |
token: ${{ secrets.GITHUB_TOKEN }} |