chore: Release #26
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: | |
- v* | |
- pre-rel-* | |
jobs: | |
create-release: | |
name: "Create Release" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Create Release | |
uses: actions/github-script@v3.0 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
let tag = context.payload.ref.replace(/.*\//, ''); | |
let buildNo = context.runNumber; | |
let versionName = tag.replace(/^pre-rel-/,''); | |
try { | |
let release = await github.request("GET /repos/:owner/:repo/releases/tags/:tag", { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: tag | |
}); | |
} | |
catch(e) { | |
let body = ["By installing & running this software you declare that you have read", | |
"understood and hereby accept the disclaimer and", | |
"privacy warning found at https://handbook.golem.network/see-also/terms"].join("\n"); | |
let release = await github.request("POST /repos/:owner/:repo/releases", { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
data: { | |
tag_name: tag, | |
prerelease: true, | |
body: body, | |
name: `${versionName} #${buildNo}` | |
} | |
}); | |
console.log(release.data.upload_url); | |
} | |
build: | |
name: Build Release | |
needs: create-release | |
runs-on: ${{ matrix.os }}-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
os: | |
- ubuntu | |
- windows | |
- macos | |
env: | |
X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR: c:/vcpkg/installed/x64-windows-static | |
MACOSX_DEPLOYMENT_TARGET: 10.13 | |
OPENSSL_STATIC: 1 | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Musl | |
if: matrix.os == 'ubuntu' | |
run: | | |
sudo apt-get install musl musl-tools | |
musl-gcc -v | |
- name: Get upload url | |
id: release_upload_url | |
uses: actions/github-script@0.9.0 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
result-encoding: string | |
script: | | |
let tag = context.payload.ref.replace(/.*\//, ''); | |
let release = await github.request("GET /repos/:owner/:repo/releases/tags/:tag", { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: tag | |
}); | |
console.log(release.data.upload_url); | |
return release.data.upload_url | |
- uses: actions-rs/toolchain@v1 | |
if: matrix.os != 'ubuntu' | |
with: | |
toolchain: stable | |
- uses: actions-rs/toolchain@v1 | |
if: matrix.os == 'ubuntu' | |
with: | |
toolchain: stable | |
target: x86_64-unknown-linux-musl | |
override: true | |
- name: Build linux | |
if: matrix.os == 'ubuntu' | |
run: | | |
(cd crates/router && cargo build --bin ya-sb-router --release --features bin --target x86_64-unknown-linux-musl) | |
- name: Build macos | |
if: matrix.os == 'macos' | |
run: | | |
(cd crates/router && cargo build --bin ya-sb-router --release --features bin) | |
- name: Build windows | |
if: matrix.os == 'windows' | |
run: | | |
vcpkg install openssl:x64-windows-static | |
vcpkg integrate install | |
(cd crates/router && cargo build --bin ya-sb-router --release --features bin) | |
- name: Pack | |
id: pack | |
shell: bash | |
env: | |
OS_NAME: ${{ matrix.os }} | |
GITHUB_REF: ${{ github.ref }} | |
run: | | |
bash .ci/pack-build.sh "ya-sb-router" "ya-sb-router" | |
- name: Upload Release Asset | |
id: upload-release-asset-req | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.release_upload_url.outputs.result }} | |
asset_path: ./releases/${{ steps.pack.outputs.artifact }} | |
asset_name: ${{ steps.pack.outputs.artifact }} | |
asset_content_type: ${{ steps.pack.outputs.media }} | |
build-deb: | |
needs: | |
- create-release | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v1 | |
- name: Musl | |
if: matrix.os == 'ubuntu' | |
run: | | |
sudo apt-get install musl musl-tools | |
musl-gcc -v | |
- name: Get upload url | |
id: release_upload_url | |
uses: actions/github-script@0.9.0 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
result-encoding: string | |
script: | | |
let tag = context.payload.ref.replace(/.*\//, ''); | |
let release = await github.request("GET /repos/:owner/:repo/releases/tags/:tag", { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: tag | |
}); | |
console.log(release.data.upload_url); | |
return release.data.upload_url | |
- name: Check out repository | |
uses: actions/checkout@v2 | |
- name: Extract Version | |
id: version | |
shell: bash | |
env: | |
OS_NAME: ${{ matrix.os }} | |
GITHUB_REF: ${{ github.ref }} | |
run: | | |
TAG_NAME="${GITHUB_REF##*/}" | |
TAGV_NAME="${TAG_NAME#pre-rel-}" | |
VERSION=${TAGV_NAME#v} | |
echo "::set-output name=tagv::${TAG_NAME}" | |
echo "::set-output name=version::${VERSION}" | |
- uses: actions-rs/toolchain@v1 | |
if: matrix.os == 'ubuntu' | |
with: | |
toolchain: stable | |
target: x86_64-unknown-linux-musl | |
override: true | |
- uses: golemfactory/build-deb-action@v2 | |
id: deb | |
with: | |
debVersion: ${{ steps.version.outputs.version }} | |
pkgName: ya-sb-router | |
subdir: crates/router | |
- name: Upload Release Deb | |
id: upload-release-asset-core | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.release_upload_url.outputs.result }} | |
asset_path: ${{ steps.deb.outputs.deb }} | |
asset_name: ya-sb-router_${{ steps.version.outputs.tagv }}_amd64.deb | |
asset_content_type: application/vnd.debian.binary-package |