create release #20
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@v3 | |
# 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 -v -o proxmox-service-discovery-${{ matrix.goarch }} ./... | |
# Step 7: Upload the build as an artifact for each architecture | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: proxmox-service-discovery-${{ matrix.goarch }} | |
path: ./proxmox-service-discovery-${{ matrix.goarch }} | |
release: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
# Step 1: Checkout the code | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
# Step 2: 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 3: 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 4: Upload Linux AMD64 artifact | |
- name: Upload Linux AMD64 artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./proxmox-service-discovery-amd64 | |
asset_name: proxmox-service-discovery-amd64 | |
asset_content_type: application/octet-stream | |
# Step 5: Upload Linux ARM64 artifact | |
- name: Upload Linux ARM64 artifact | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./proxmox-service-discovery-arm64 | |
asset_name: proxmox-service-discovery-arm64 | |
asset_content_type: application/octet-stream |