Skip to content

Build - Release

Build - Release #21

name: Build - Release
on:
workflow_dispatch:
release:
types: [published]
env:
BUILD_VERSION: latest # Computed
DOCKER_HUB_USER: defi
MAKE_DEBUG: 0
GIT_VERSION: 1
jobs:
linux-x64:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
env:
TARGET: x86_64-pc-linux-gnu
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Build and package
run: ./make.sh docker-release
- name: Publish artifacts
uses: actions/upload-artifact@v3
with:
name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu
path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ env.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Push to Docker Hub
run: |
set -e; ver=${{ env.BUILD_VERSION }}
for tag in $(echo $ver latest); do
docker tag defichain-x86_64-pc-linux-gnu:${ver} defi/defichain:${tag}
done
docker push defi/defichain:${ver}
linux-aarch64:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
env:
TARGET: aarch64-linux-gnu
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Build and package
run: ./make.sh docker-release
- name: Publish artifact - aarch64-linux-gnu
uses: actions/upload-artifact@v3
with:
name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu
path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz
win-x64:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
env:
TARGET: x86_64-w64-mingw32
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Build and package
run: ./make.sh docker-release
- name: Publish artifact - x86_64-w64-mingw32
uses: actions/upload-artifact@v3
with:
name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32
path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.tar.gz
osx-x64:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
env:
TARGET: x86_64-apple-darwin
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Build and package
run: ./make.sh docker-release
- name: Publish artifact - x86_64-apple-darwin
uses: actions/upload-artifact@v3
with:
name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin
path: ./build/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz
osx-aarch64:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
env:
TARGET: aarch64-apple-darwin
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Build and package
run: ./make.sh docker-release
- name: Publish artifact - aarch64-apple-darwin
uses: actions/upload-artifact@v3
with:
name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin
path: ./build/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz
create-release:
needs:
- linux-x64
- linux-aarch64
- win-x64
- osx-x64
- osx-aarch64
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v3
- name: Populate environment
run: ./make.sh ci-export-vars
- name: Cleanup work dir
run: rm -rf *
- name: Get artifacts
uses: actions/download-artifact@v3
- name: zip package for win-x64
run: |
set -e; ver=${{ env.BUILD_VERSION }}
cd defichain-${ver}-x86_64-w64-mingw32
tar xzf defichain-${ver}-x86_64-w64-mingw32.tar.gz
zip -r "defichain-${ver}-x86_64-w64-mingw32.zip" defichain-${ver}/
- name: Get release
id: get_release
uses: bruceadams/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Generate SHA256 checksum
run: |
set -e; ver=${{ env.BUILD_VERSION }}
(cd ./defichain-${ver}-x86_64-pc-linux-gnu
sha256sum ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz > ./defichain-${ver}-x86_64-pc-linux-gnu.tar.gz.SHA256)
(cd ./defichain-${ver}-aarch64-linux-gnu
sha256sum ./defichain-${ver}-aarch64-linux-gnu.tar.gz > ./defichain-${ver}-aarch64-linux-gnu.tar.gz.SHA256)
(cd ./defichain-${ver}-x86_64-w64-mingw32
sha256sum ./defichain-${ver}-x86_64-w64-mingw32.zip > ./defichain-${ver}-x86_64-w64-mingw32.zip.SHA256)
(cd ./defichain-${ver}-x86_64-apple-darwin
sha256sum ./defichain-${ver}-x86_64-apple-darwin.tar.gz > ././defichain-${ver}-x86_64-apple-darwin.tar.gz.SHA256)
(cd ./defichain-${ver}-aarch64-apple-darwin
sha256sum ./defichain-${ver}-aarch64-apple-darwin.tar.gz > ././defichain-${ver}-aarch64-apple-darwin.tar.gz.SHA256)
- name: Upload release asset - linux-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz
asset_content_type: application/gzip
- name: Upload checksum - linux-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu/defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz.SHA256
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-pc-linux-gnu.tar.gz.SHA256
asset_content_type: text/plain
- name: Upload release asset - linux-aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz
asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz
asset_content_type: application/gzip
- name: Upload checksum - linux-aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu/defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz.SHA256
asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-linux-gnu.tar.gz.SHA256
asset_content_type: text/plain
- name: Upload release asset - win-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip
asset_content_type: application/zip
- name: Upload checksum asset - win-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32/defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip.SHA256
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-w64-mingw32.zip.SHA256
asset_content_type: text/plain
- name: Upload release asset - osx-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz
asset_content_type: application/gzip
- name: Upload checksum asset - osx-x64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz.SHA256
asset_name: defichain-${{ env.BUILD_VERSION }}-x86_64-apple-darwin.tar.gz.SHA256
asset_content_type: text/plain
- name: Upload release asset - osx-aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz
asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz
asset_content_type: application/gzip
- name: Upload checksum asset - osx-aarch64
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release.outputs.upload_url }}
asset_path: ./defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin/defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz.SHA256
asset_name: defichain-${{ env.BUILD_VERSION }}-aarch64-apple-darwin.tar.gz.SHA256
asset_content_type: text/plain