274 lines
13 KiB
YAML
274 lines
13 KiB
YAML
name: 📦🚀 Build Installer - Linux RPM AMD64
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- 'long_lived/**'
|
|
- main
|
|
- 'release/**'
|
|
release:
|
|
types: [published]
|
|
pull_request:
|
|
branches:
|
|
- '**'
|
|
|
|
concurrency:
|
|
# SHA is added to the end if on `main` to let all main workflows run
|
|
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}-${{ (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || startsWith(github.ref, 'refs/heads/long_lived/')) && github.sha || '' }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
name: Linux amd64 RPM Installer
|
|
runs-on: ubuntu-latest
|
|
container:
|
|
image: chianetwork/centos7-builder:latest
|
|
timeout-minutes: 40
|
|
strategy:
|
|
fail-fast: false
|
|
max-parallel: 4
|
|
matrix:
|
|
python-version: [3.9]
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
|
|
- uses: Chia-Network/actions/git-ssh-to-https@main
|
|
|
|
- name: Cleanup any leftovers that exist from previous runs
|
|
run: bash build_scripts/clean-runner.sh || true
|
|
|
|
- name: Set Env
|
|
if: github.event_name == 'release' && github.event.action == 'published'
|
|
run: |
|
|
PRE_RELEASE=$(jq -r '.release.prerelease' "$GITHUB_EVENT_PATH")
|
|
RELEASE_TAG=$(jq -r '.release.tag_name' "$GITHUB_EVENT_PATH")
|
|
echo "RELEASE=true" >>$GITHUB_ENV
|
|
echo "PRE_RELEASE=$PRE_RELEASE" >>$GITHUB_ENV
|
|
echo "RELEASE_TAG=$RELEASE_TAG" >>$GITHUB_ENV
|
|
if [ $PRE_RELEASE = false ]; then
|
|
echo "FULL_RELEASE=true" >>$GITHUB_ENV
|
|
else
|
|
echo "FULL_RELEASE=false" >>$GITHUB_ENV
|
|
fi
|
|
|
|
- uses: Chia-Network/actions/enforce-semver@main
|
|
if: env.FULL_RELEASE == 'true'
|
|
|
|
# Create our own venv outside of the git directory JUST for getting the ACTUAL version so that install can't break it
|
|
- name: Get version number
|
|
id: version_number
|
|
run: |
|
|
python3 -m venv ../venv
|
|
. ../venv/bin/activate
|
|
pip3 install setuptools_scm
|
|
echo "CHIA_INSTALLER_VERSION=$(python3 ./build_scripts/installer-version.py)" >>$GITHUB_OUTPUT
|
|
deactivate
|
|
|
|
- name: Test for secrets access
|
|
id: check_secrets
|
|
shell: bash
|
|
run: |
|
|
unset HAS_AWS_SECRET
|
|
unset HAS_GLUE_SECRET
|
|
|
|
if [ -n "$AWS_SECRET" ]; then HAS_AWS_SECRET='true' ; fi
|
|
echo HAS_AWS_SECRET=${HAS_AWS_SECRET} >>$GITHUB_OUTPUT
|
|
|
|
if [ -n "$GLUE_ACCESS_TOKEN" ]; then HAS_GLUE_SECRET='true' ; fi
|
|
echo HAS_GLUE_SECRET=${HAS_GLUE_SECRET} >>$GITHUB_OUTPUT
|
|
env:
|
|
AWS_SECRET: "${{ secrets.INSTALLER_UPLOAD_KEY }}"
|
|
GLUE_ACCESS_TOKEN: "${{ secrets.GLUE_ACCESS_TOKEN }}"
|
|
|
|
# Get the most recent release from chia-plotter-madmax
|
|
- uses: actions/github-script@v6
|
|
id: 'latest-madmax'
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
result-encoding: string
|
|
script: |
|
|
const release = await github.rest.repos.getLatestRelease({
|
|
owner: 'Chia-Network',
|
|
repo: 'chia-plotter-madmax',
|
|
});
|
|
return release.data.tag_name;
|
|
|
|
- name: Get latest madmax plotter
|
|
run: |
|
|
mkdir "$GITHUB_WORKSPACE/madmax"
|
|
wget -O "$GITHUB_WORKSPACE/madmax/chia_plot" https://github.com/Chia-Network/chia-plotter-madmax/releases/download/${{ steps.latest-madmax.outputs.result }}/chia_plot-${{ steps.latest-madmax.outputs.result }}-x86-64
|
|
wget -O "$GITHUB_WORKSPACE/madmax/chia_plot_k34" https://github.com/Chia-Network/chia-plotter-madmax/releases/download/${{ steps.latest-madmax.outputs.result }}/chia_plot_k34-${{ steps.latest-madmax.outputs.result }}-x86-64
|
|
chmod +x "$GITHUB_WORKSPACE/madmax/chia_plot"
|
|
chmod +x "$GITHUB_WORKSPACE/madmax/chia_plot_k34"
|
|
|
|
# Get the most recent release from bladebit
|
|
- uses: actions/github-script@v6
|
|
if: '!github.event.release.prerelease'
|
|
id: 'latest-bladebit'
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
result-encoding: string
|
|
script: |
|
|
const release = await github.rest.repos.getLatestRelease({
|
|
owner: 'Chia-Network',
|
|
repo: 'bladebit',
|
|
});
|
|
return release.data.tag_name;
|
|
|
|
- name: Get latest bladebit plotter
|
|
if: '!github.event.release.prerelease'
|
|
run: |
|
|
mkdir "$GITHUB_WORKSPACE/bladebit"
|
|
wget -O /tmp/bladebit.tar.gz https://github.com/Chia-Network/bladebit/releases/download/${{ steps.latest-bladebit.outputs.result }}/bladebit-${{ steps.latest-bladebit.outputs.result }}-centos-x86-64.tar.gz
|
|
tar -xvzf /tmp/bladebit.tar.gz -C $GITHUB_WORKSPACE/bladebit
|
|
chmod +x "$GITHUB_WORKSPACE/bladebit/bladebit"
|
|
|
|
- name: Get latest prerelease bladebit plotter
|
|
if: env.PRE_RELEASE == 'true'
|
|
run: |
|
|
PRERELEASE_URL=$(curl -Ls -H "Accept: application/vnd.github+json" "https://api.github.com/repos/Chia-Network/bladebit/releases" | jq -r 'map(select(.prerelease)) | first.assets[] | select(.browser_download_url | endswith("centos-x86-64.tar.gz")).browser_download_url')
|
|
mkdir "$GITHUB_WORKSPACE/bladebit"
|
|
wget -O /tmp/bladebit.tar.gz $PRERELEASE_URL
|
|
tar -xvzf /tmp/bladebit.tar.gz -C $GITHUB_WORKSPACE/bladebit
|
|
chmod +x "$GITHUB_WORKSPACE/bladebit/bladebit"
|
|
|
|
- uses: ./.github/actions/install
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
development: true
|
|
|
|
- uses: chia-network/actions/activate-venv@main
|
|
|
|
- name: Prepare GUI cache
|
|
id: gui-ref
|
|
run: |
|
|
gui_ref=$(git submodule status chia-blockchain-gui | sed -e 's/^ //g' -e 's/ chia-blockchain-gui.*$//g')
|
|
echo "${gui_ref}"
|
|
echo "GUI_REF=${gui_ref}" >>$GITHUB_OUTPUT
|
|
echo "rm -rf ./chia-blockchain-gui"
|
|
rm -rf ./chia-blockchain-gui
|
|
|
|
- name: Cache GUI
|
|
uses: actions/cache@v3
|
|
id: cache-gui
|
|
with:
|
|
path: ./chia-blockchain-gui
|
|
key: ${{ runner.os }}-rpm-chia-blockchain-gui-${{ steps.gui-ref.outputs.GUI_REF }}
|
|
|
|
- if: steps.cache-gui.outputs.cache-hit != 'true'
|
|
name: Build GUI
|
|
continue-on-error: false
|
|
run: |
|
|
cd ./build_scripts
|
|
bash build_linux_rpm-1-gui.sh
|
|
|
|
- name: Build .rpm package
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
ldd --version
|
|
cd ./build_scripts
|
|
bash build_linux_rpm-2-installer.sh amd64
|
|
|
|
- name: Upload Linux artifacts
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: chia-installers-linux-rpm-intel
|
|
path: ${{ github.workspace }}/build_scripts/final_installer/
|
|
|
|
- name: Configure AWS Credentials
|
|
if: steps.check_secrets.outputs.HAS_AWS_SECRET
|
|
uses: aws-actions/configure-aws-credentials@v1
|
|
with:
|
|
aws-access-key-id: ${{ secrets.INSTALLER_UPLOAD_KEY }}
|
|
aws-secret-access-key: ${{ secrets.INSTALLER_UPLOAD_SECRET }}
|
|
aws-region: us-west-2
|
|
|
|
- name: Upload to s3
|
|
if: steps.check_secrets.outputs.HAS_AWS_SECRET
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
GIT_SHORT_HASH=$(echo "${GITHUB_SHA}" | cut -c1-8)
|
|
CHIA_DEV_BUILD=${CHIA_INSTALLER_VERSION}-$GIT_SHORT_HASH
|
|
echo "CHIA_DEV_BUILD=$CHIA_DEV_BUILD" >>$GITHUB_ENV
|
|
ls $GITHUB_WORKSPACE/build_scripts/final_installer/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/dev/chia-blockchain-${CHIA_DEV_BUILD}-1.x86_64.rpm
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/dev/chia-blockchain-cli-${CHIA_DEV_BUILD}-1.x86_64.rpm
|
|
|
|
- name: Create Checksums
|
|
if: env.FULL_RELEASE == 'true' || github.ref == 'refs/heads/main'
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
ls $GITHUB_WORKSPACE/build_scripts/final_installer/
|
|
sha256sum $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm > $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256
|
|
sha256sum $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm > $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256
|
|
ls $GITHUB_WORKSPACE/build_scripts/final_installer/
|
|
|
|
- name: Create .rpm torrent
|
|
if: env.FULL_RELEASE == 'true'
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
py3createtorrent -f -t udp://tracker.opentrackr.org:1337/announce $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm -o $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.torrent --webseed https://download.chia.net/install/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm
|
|
py3createtorrent -f -t udp://tracker.opentrackr.org:1337/announce $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm -o $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.torrent --webseed https://download.chia.net/install/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm
|
|
gh release upload $RELEASE_TAG $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.torrent
|
|
|
|
- name: Upload Dev Installer
|
|
if: steps.check_secrets.outputs.HAS_AWS_SECRET && github.ref == 'refs/heads/main'
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/latest-dev/chia-blockchain-1.x86_64_latest_dev.rpm
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256 s3://download.chia.net/latest-dev/chia-blockchain-1.x86_64_latest_dev.rpm.sha256
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/latest-dev/chia-blockchain-cli-1.x86_64_latest_dev.rpm
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256 s3://download.chia.net/latest-dev/chia-blockchain-cli-1.x86_64_latest_dev.rpm.sha256
|
|
|
|
- name: Upload Release Files
|
|
if: steps.check_secrets.outputs.HAS_AWS_SECRET && env.FULL_RELEASE == 'true'
|
|
env:
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/install/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256 s3://download.chia.net/install/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.torrent s3://download.chia.net/torrents/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm s3://download.chia.net/install/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.sha256 s3://download.chia.net/install/
|
|
aws s3 cp $GITHUB_WORKSPACE/build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm.torrent s3://download.chia.net/torrents/
|
|
|
|
- name: Get tag name
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
id: tag-name
|
|
run: |
|
|
echo "TAG_NAME=$(echo ${{ github.ref }} | cut -d'/' -f 3)" >>$GITHUB_OUTPUT
|
|
echo "REPO_NAME=$(echo ${{ github.repository }} | cut -d'/' -f 2)" >>$GITHUB_OUTPUT
|
|
|
|
- name: Upload release artifacts
|
|
if: env.RELEASE == 'true'
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
CHIA_INSTALLER_VERSION: ${{ steps.version_number.outputs.CHIA_INSTALLER_VERSION }}
|
|
run: |
|
|
gh release upload \
|
|
$RELEASE_TAG \
|
|
build_scripts/final_installer/chia-blockchain-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm \
|
|
build_scripts/final_installer/chia-blockchain-cli-${CHIA_INSTALLER_VERSION}-1.x86_64.rpm
|
|
|
|
|
|
- name: Mark installer complete
|
|
if: steps.check_secrets.outputs.HAS_GLUE_SECRET && env.FULL_RELEASE == 'true'
|
|
run: |
|
|
curl -s -XPOST -H "Authorization: Bearer ${{ secrets.GLUE_ACCESS_TOKEN }}" --data '{"chia_ref": "${{ steps.tag-name.outputs.TAG_NAME }}"}' ${{ secrets.GLUE_API_URL }}/api/v1/${{ steps.tag-name.outputs.REPO_NAME }}/${{ steps.tag-name.outputs.TAG_NAME }}/success/build-linux-rpm
|
|
|
|
- name: Remove working files to exclude from cache
|
|
run: |
|
|
rm -rf ./chia-blockchain-gui/packages/gui/daemon
|