name: Release
on:
push:
tags:
- "v*.*.*"
env:
MACOSX_DEPLOYMENT_TARGET: 10.7
jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
outputs:
nixpacks_version: ${{ env.NIXPACKS_VERSION }}
steps:
- name: Get the release version from the tag
shell: bash
if: env.NIXPACKS_VERSION == ''
run: |
# Apparently, this is the right way to get a tag name. Really?
#
# See: https://github.community/t5/GitHub-Actions/How-to-get-just-the-tag-name/m-p/32167/highlight/true#M1027
echo "NIXPACKS_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
echo "version is: ${{ env.NIXPACKS_VERSION }}"
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Build Changelog
id: build_changelog
uses: mikepenz/release-changelog-builder-action@v3.2.0
with:
configuration: ".github/changelog-configuration.json"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create GitHub release
id: release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.NIXPACKS_VERSION }}
release_name: ${{ env.NIXPACKS_VERSION }}
body: ${{steps.build_changelog.outputs.changelog}}
build-release:
name: Build Release Assets
needs: ['create-release']
runs-on: ${{ matrix.os }}
continue-on-error: true
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
- target: i686-unknown-linux-musl
os: ubuntu-latest
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
- target: arm-unknown-linux-musleabihf
os: ubuntu-latest
- target: x86_64-apple-darwin
os: macOS-latest
- target: aarch64-apple-darwin
os: macOS-latest
- target: x86_64-pc-windows-msvc
os: windows-latest
- target: i686-pc-windows-msvc
os: windows-latest
- target: aarch64-pc-windows-msvc
os: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: ${{ matrix.target }}
profile: minimal
override: true
- name: Build release binary
uses: actions-rs/cargo@v1
with:
command: build
args: --release --locked --target ${{ matrix.target }}
use-cross: ${{ matrix.os == 'ubuntu-latest' }}
- name: Prepare binaries [Windows]
if: matrix.os == 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
strip nixpacks.exe
7z a ../../../nixpacks-${{ needs.create-release.outputs.nixpacks_version }}-${{ matrix.target }}.zip nixpacks.exe
cd -
- name: Prepare binaries [-linux]
if: matrix.os != 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
strip nixpacks || true
tar czvf ../../../nixpacks-${{ needs.create-release.outputs.nixpacks_version }}-${{ matrix.target }}.tar.gz nixpacks
cd -
- name: Upload release archive
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ needs.create-release.outputs.nixpacks_version }}
files: nixpacks-${{ needs.create-release.outputs.nixpacks_version }}-${{ matrix.target }}*
- name: Set SHA
if: matrix.config.os == 'macos-latest'
id: shasum
run: |
echo ::set-output name=sha::"$(shasum -a 256 ./release/gitui-mac.tar.gz | awk '{printf $1}')"
- name: Update homebrew tap
uses: mislav/bump-homebrew-formula-action@v1
if: "matrix.target == 'x86_64-apple-darwin' && !contains(github.ref, '-')"
with:
formula-name: nixpacks
formula-path: nixpacks.rb
homebrew-tap: railwayapp/homebrew-tap
download-url: https://github.com/railwayapp/nixpacks/releases/latest/download/nixpacks-${{ needs.create-release.outputs.nixpacks_version }}-x86_64-apple-darwin.tar.gz
env:
COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }}
notify-release:
name: Notify Release
runs-on: ubuntu-latest
needs: ['create-release', 'build-release']
steps:
- name: Discord Deployment Status Notification
uses: sarisia/actions-status-discord@v1
with:
webhook: ${{ secrets.PUBLISH_WEBHOOK }}
status: ${{ job.status }}
nodetail: true
username: Nixpacks Releases
avatar_url: https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png
title: Published version ${{ needs.create-release.outputs.nixpacks_version }} of Nixpacks
description: |
[View Changelog](https://github.com/railwayapp/nixpacks/releases/tag/${{ needs.create-release.outputs.nixpacks_version }})