create release #27
This file contains hidden or 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: 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@v3 | |
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@v3 | |
with: | |
name: proxmox-service-discovery-amd64.zip | |
- name: Download ZIP artifacts for arm64 | |
uses: actions/download-artifact@v3 | |
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 }} |