Skip to content

Build, Push, and Release Plugin #115

Build, Push, and Release Plugin

Build, Push, and Release Plugin #115

Workflow file for this run

name: Build, Push, and Release Plugin
on:
push:
branches:
- "main"
workflow_dispatch:
description: 'build'
jobs:
build-push-and-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get latest release
id: get_latest_release
uses: actions/github-script@v7
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const releases = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo
});
const latestRelease = releases.data[0];
console.log('Latest release:', latestRelease ? latestRelease.tag_name : 'No releases found');
if (latestRelease) {
const version = parseInt(latestRelease.tag_name.replace('v0.0.', ''));
return version + 1;
}
return 1;
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@v6
with:
context: .
push: false
load: true
tags: mod-builder:latest
target: zip-creator
build-args: |
RELEASE_VERSION=0.0.${{ steps.get_latest_release.outputs.result }}
- name: Extract zip file
run: |
docker create --name temp mod-builder:latest
docker cp temp:/mod-release.zip ./FiveStack-v0.0.${{ steps.get_latest_release.outputs.result }}.zip
docker rm temp
- name: Build and Push Docker image
uses: docker/build-push-action@v6
with:
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/game-server:latest
ghcr.io/${{ github.repository_owner }}/game-server:${{ github.sha }}
build-args: |
RELEASE_VERSION=0.0.${{ steps.get_latest_release.outputs.result }}
- name: Create Release and Upload Asset
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v0.0.${{ steps.get_latest_release.outputs.result }}
name: v0.0.${{ steps.get_latest_release.outputs.result }}
draft: false
prerelease: false
files: |
./FiveStack-v0.0.${{ steps.get_latest_release.outputs.result }}.zip