Release packages #31
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*.*.*' | |
env: | |
APP_NAME: 'jtr' | |
NIM_VERSION: 'stable' | |
MAINTAINER: 'u1and0' | |
jobs: | |
build-artifact: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macOS-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jiro4989/setup-nim-action@v1 | |
with: | |
nim-version: ${{ env.NIM_VERSION }} | |
# nimble buildで実行ファイルを生成する。 | |
# nimbleファイルの設定で、実行ファイルを bin ディレクトリ配下に作成するようにしている。 | |
# 理由は、実行ファイルを複数作成する場合の、CIからのファイル指定を楽にするため | |
- run: nimble build -Y -d:release | |
- name: Create artifact | |
run: | | |
os="${{ runner.os }}" | |
assets="${{ env.APP_NAME }}_$(echo "${{ runner.os }}" | tr '[:upper:]' '[:lower:]')" | |
echo "$assets" | |
# リリース物をかためるディレクトリを作成してcopy | |
# Windowsではzip、それ以外のOSではtar.gzファイルとして圧縮する | |
mkdir -p "dist/$assets" | |
cp -r jtr LICENSE README.* "dist/$assets/" | |
( | |
cd dist | |
if [[ "${{ runner.os }}" == Windows ]]; then | |
7z a "$assets.zip" "$assets" | |
else | |
tar czf "$assets.tar.gz" "$assets" | |
fi | |
ls -lah *.* | |
) | |
shell: bash | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.os }} | |
path: | | |
dist/*.tar.gz | |
dist/*.zip | |
create-release: | |
runs-on: ubuntu-latest | |
needs: | |
- build-artifact | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create Release | |
id: create-release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ github.ref }} | |
body: Release | |
draft: false | |
prerelease: false | |
- name: Write upload_url to file | |
run: echo '${{ steps.create-release.outputs.upload_url }}' > upload_url.txt | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: create-release | |
path: upload_url.txt | |
upload-release: | |
runs-on: ubuntu-latest | |
needs: create-release | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
asset_name_suffix: linux.tar.gz | |
asset_content_type: application/gzip | |
- os: windows-latest | |
asset_name_suffix: windows.zip | |
asset_content_type: application/zip | |
- os: macOS-latest | |
asset_name_suffix: macos.tar.gz | |
asset_content_type: application/gzip | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
name: artifact-${{ matrix.os }} | |
- uses: actions/download-artifact@v2 | |
with: | |
name: create-release | |
- id: vars | |
run: | | |
echo "::set-output name=upload_url::$(cat upload_url.txt)" | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.vars.outputs.upload_url }} | |
asset_path: ${{ env.APP_NAME }}_${{ matrix.asset_name_suffix }} | |
asset_name: ${{ env.APP_NAME }}_${{ matrix.asset_name_suffix }} | |
asset_content_type: ${{ matrix.asset_content_type }} |