Skip to content

create release

create release #28

Workflow file for this run

name: Build, Tag, and Release proxmox-service-discovery
on:
push:
branches:
- main # Сборка и релиз запускаются только при пуше в ветку main
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
goarch: [amd64, arm64] # Матрица для архитектур amd64 и arm64
steps:
# Step 1: Checkout the code from the repository
- name: Checkout code
uses: actions/checkout@v4
# Step 2: Set up Go 1.23
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.23'
# Step 3: Set GOARCH environment variable
- name: Set architecture
run: echo "GOARCH=${{ matrix.goarch }}" >> $GITHUB_ENV
# Step 4: Cache Go modules (optional, speeds up builds)
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ matrix.goarch }}-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-${{ matrix.goarch }}-
# Step 5: Install dependencies
- name: Install dependencies
run: go mod download
# Step 6: Build the proxmox-service-discovery application for the specified architecture
- name: Build proxmox-service-discovery
run: go build -o proxmox-service-discovery-${{ matrix.goarch }}
# Step 7: Create a ZIP archive with the binary
- name: Package binary into a ZIP file
run: zip proxmox-service-discovery-${{ matrix.goarch }}.zip proxmox-service-discovery-${{ matrix.goarch }}
# Step 8: Upload the ZIP archive as an artifact
- name: Upload ZIP artifact
uses: actions/upload-artifact@v4
with:
name: proxmox-service-discovery-${{ matrix.goarch }}.zip
path: ./proxmox-service-discovery-${{ matrix.goarch }}.zip
release:
needs: build
runs-on: ubuntu-latest
steps:
# Step 1: Checkout the code
- name: Checkout code
uses: actions/checkout@v4
# Step 2: Download build artifacts (ZIP files)
- name: Download ZIP artifacts for amd64
uses: actions/download-artifact@v4
with:
name: proxmox-service-discovery-amd64.zip
- name: Download ZIP artifacts for arm64
uses: actions/download-artifact@v4
with:
name: proxmox-service-discovery-arm64.zip
# Step 3: Bump version using mathieudutour/github-tag-action
- name: Bump version and create tag
id: tag_version
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
tag_prefix: "v"
release_branches: "main"
default_bump: "patch" # Определяет, какое обновление версии по умолчанию: major, minor или patch
create_annotated_tag: true
# Step 4: Create GitHub release
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag_version.outputs.new_tag }}
release_name: "Release ${{ steps.tag_version.outputs.new_tag }}"
draft: false
prerelease: false
# Step 5: Upload ZIP archive for amd64 to release
- name: Upload Linux AMD64 ZIP artifact
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./proxmox-service-discovery-amd64.zip
asset_name: proxmox-service-discovery-amd64.zip
asset_content_type: application/zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step 6: Upload ZIP archive for arm64 to release
- name: Upload Linux ARM64 ZIP artifact
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./proxmox-service-discovery-arm64.zip
asset_name: proxmox-service-discovery-arm64.zip
asset_content_type: application/zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}