Skip to content

Create Build Workflow #1

Create Build Workflow

Create Build Workflow #1

Workflow file for this run

name: Build and Release ODIN CLI Tool
on:
push:
tags:
- 'v*.*.*'
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Build for Linux
run: deno task build
env:
DENO_BUILD_TARGET: x86_64-unknown-linux-gnu
- name: Upload Linux Binary
uses: actions/upload-artifact@v3
with:
name: odin-linux
path: odin
build-macos-x86:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Build for macOS x86
run: deno task build
env:
DENO_BUILD_TARGET: x86_64-apple-darwin
- name: Upload macOS Binary
uses: actions/upload-artifact@v3
with:
name: odin-macos-x86
path: odin
build-macos-arm:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Build for macOS Apple Silicon
run: deno task build
env:
DENO_BUILD_TARGET: aarch64-apple-darwin
- name: Upload macOS Binary
uses: actions/upload-artifact@v3
with:
name: odin-macos-arm
path: odin
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Deno
uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: Build for Windows
run: deno task build
env:
DENO_BUILD_TARGET: x86_64-pc-windows-msvc
- name: Upload Windows Binary
uses: actions/upload-artifact@v3
with:
name: odin-windows.exe
path: odin.exe
release:
runs-on: ubuntu-latest
needs: [build-linux, build-macos-x86, build-macos-arm, build-windows]
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download Linux Binary
uses: actions/download-artifact@v3
with:
name: odin-linux
path: .
- name: Download macOS Binary for Intel
uses: actions/download-artifact@v3
with:
name: odin-macos-x86
path: .
- name: Download macOS Binary for Apple Silicon
uses: actions/download-artifact@v3
with:
name: odin-macos-arm
path: .
- name: Download Windows Binary
uses: actions/download-artifact@v3
with:
name: odin-windows.exe
path: .
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Upload Release Asset Linux
uses: actions/upload-release-asset@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./odin
asset_name: odin-linux
asset_content_type: application/octet-stream
- name: Upload Release Asset macOS Intel
uses: actions/upload-release-asset@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./odin
asset_name: odin-macos-x86
asset_content_type: application/octet-stream
- name: Upload Release Asset macOS Apple Silicon
uses: actions/upload-release-asset@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./odin
asset_name: odin-macos-arm
asset_content_type: application/octet-stream
- name: Upload Release Asset Windows
uses: actions/upload-release-asset@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./odin.exe
asset_name: odin-windows.exe
asset_content_type: application/octet-stream