Release v2.0.0#gbuild #123
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: New Release | |
run-name: Release v${{ github.event.inputs.tag }} | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: "Tag" | |
required: true | |
default: "1.x.x" | |
is_latest: | |
description: "Set as latest" | |
required: true | |
default: "true" | |
type: choice | |
options: | |
- true | |
- false | |
is_draft: | |
description: "Set as draft" | |
required: true | |
type: choice | |
default: "true" | |
options: | |
- true | |
- false | |
build_docker: | |
description: "Release Docker image" | |
required: true | |
type: choice | |
default: "false" | |
options: | |
- true | |
- false | |
jobs: | |
build: | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, windows-2019] | |
runs-on: ${{ matrix.os }} | |
name: Create binary on ${{ matrix.os }} | |
steps: | |
- name: Clone client | |
uses: actions/checkout@v3 | |
- name: Setup Node 16 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16.x | |
- name: Install yarn | |
run: | | |
npm install -g yarn | |
- name: Clone client | |
run: | | |
git clone https://github.com/cwilvx/swingmusic-client.git | |
- name: Install dependencies & Build client | |
run: | | |
cd swingmusic-client | |
yarn install | |
yarn build --outDir ../client | |
cd .. | |
- name: Install Python 3.10.11 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: "3.10.11" | |
- name: Create virtualenv | |
run: | | |
python -m venv .venv | |
- name: Activate virtualenv (linux) | |
if: matrix.os == 'ubuntu-20.04' | |
run: | | |
source .venv/bin/activate | |
- name: Activate virtualenv (windows) | |
if: matrix.os == 'windows-2019' | |
run: | | |
.venv\Scripts\Activate | |
- name: Install dependencies | |
run: | | |
pip install -r requirements.txt | |
# - name: Install Poetry | |
# run: | | |
# pip install poetry | |
# - name: Install dependencies | |
# run: | | |
# python -m poetry install | |
- name: Build server | |
run: | | |
python manage.py --build | |
env: | |
SWINGMUSIC_APP_VERSION: ${{ inputs.tag }} | |
- name: Verify Linux build success | |
if: matrix.os == 'ubuntu-20.04' | |
run: | | |
if [ ! -f "./dist/swingmusic" ]; then | |
echo "Build failed" | |
exit 1 | |
fi | |
- name: Verify Windows build success | |
if: matrix.os == 'windows-2019' | |
run: | | |
if (-not (Test-Path "./dist/swingmusic.exe")) { | |
Write-Host "Build failed" | |
exit 1 | |
} | |
- name: Upload Linux binary | |
if: matrix.os == 'ubuntu-20.04' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: linux | |
path: dist/swingmusic | |
retention-days: 1 | |
- name: Upload Windows binary | |
if: matrix.os == 'windows-2019' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: win32 | |
path: dist/swingmusic.exe | |
retention-days: 1 | |
release: | |
name: Create New Release | |
runs-on: ubuntu-latest | |
needs: build | |
permissions: write-all | |
steps: | |
- name: Checkout into repo | |
uses: actions/checkout@v3 | |
- name: Download all binaries | |
uses: actions/download-artifact@v3 | |
- name: Upload binaries to GitHub Release | |
uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
artifacts: "./linux/swingmusic, ./win32/swingmusic.exe" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: ${{ format('v{0}',inputs.tag) }} | |
commit: ${{ github.sha }} | |
draft: ${{ inputs.is_draft }} | |
artifactErrorsFailBuild: true | |
name: ${{ format('v{0}',inputs.tag) }} | |
bodyFile: .github/changelog.md | |
makeLatest: ${{ inputs.is_latest }} | |
docker: | |
name: Build and push Docker image | |
runs-on: ubuntu-latest | |
# needs: build | |
permissions: write-all | |
if: inputs.build_docker == 'true' | |
steps: | |
- name: Checkout into repo | |
uses: actions/checkout@v3 | |
# - name: Download linux binary | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: linux | |
# path: dist | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v1 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- name: Login to GHCR | |
uses: docker/login-action@v1 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Docker meta | |
id: meta # you'll use this in the next step | |
uses: docker/metadata-action@v3 | |
with: | |
# list of Docker images to use as base name for tags | |
images: | | |
ghcr.io/${{ github.repository }} | |
- name: Build and push | |
uses: docker/build-push-action@v2 | |
with: | |
context: . | |
platforms: linux/amd64, linux/arm64 #,linux/arm | |
push: true | |
tags: ghcr.io/${{github.repository}}:${{format('v{0}', inputs.tag)}}, ${{env.LATEST_TAG}} | |
labels: org.opencontainers.image.title=Docker | |
build-args: | | |
app_version=${{inputs.tag}} | |
env: | |
LATEST_TAG: ${{ inputs.is_latest == 'true' && format('ghcr.io/{0}:latest', github.repository) || '' }} |