Skip to content

Fix version extraction in release workflow (#41) #106

Fix version extraction in release workflow (#41)

Fix version extraction in release workflow (#41) #106

Workflow file for this run

name: Build
on:
push:
branches:
- "main"
pull_request:
branches:
- "main"
types: [ opened, synchronize ]
workflow_dispatch:
jobs:
build-artifact:
name: Build and verify artifact
runs-on: ${{ matrix.runner }}
outputs:
module_name: ${{ steps.prepare-release.outputs.module_name }}
version: ${{ steps.prepare-release.outputs.version }}
strategy:
matrix:
os: [ ubuntu-22.04, darwin, windows ]
arch: [ amd64, arm64 ]
include:
- os: ubuntu-22.04
arch: amd64
runner: ubuntu-22.04
build_target: build-linux-amd64
verify_target: verify-binary-linux
dependencies: musl-tools
- os: ubuntu-22.04
arch: arm64
# According to linter: warning Workflow => .github/workflows/build.yml:38:21: label "Terraform-provider-bitwarden-sm-linux" is unknown.
runner: Terraform-provider-bitwarden-sm-linux
build_target: build-linux-arm64
verify-target: verify-binary-linux
dependencies: musl-tools
- os: darwin
arch: amd64
# According to linter: label "macos-14" is unknown
runner: macos-14
build_target: build-darwin-amd64
verify_target: verify-binary-darwin-amd64
- os: darwin
arch: arm64
runner: macos-14
build_target: build-darwin-arm64
verify_target: verify-binary-darwin-arm64
- os: windows
arch: amd64
runner: ubuntu-22.04
build_target: build-windows-amd64
verify_target: verify-binary-windows-amd64
dependencies: mingw-w64
exclude:
- os: windows
arch: arm64
steps:
- name: Check out repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Go
uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0
with:
go-version-file: 'go.mod'
cache: true
- name: Install dependencies (Linux only)
if: matrix.os == 'ubuntu-22.04'
run: sudo apt update && sudo apt install -y ${{ matrix.dependencies }}
- name: Install dependencies (Windows cross-compile only)
if: matrix.os == 'windows'
run: sudo apt update && sudo apt install -y ${{ matrix.dependencies }}
- name: Install Go dependencies
run: go mod tidy
- name: Get current version
id: current-version
run: |
CURRENT_VERSION=$(grep 'ProviderVersion string =' version/version.go | sed -E 's/.*"([0-9]+\.[0-9]+\.[0-9]+(-pre)?)".*/\1/')
echo "version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
- name: Build binary
run: make ${{ matrix.build_target }} BINARY_VERSION="_${{ steps.current-version.outputs.version }}"
- name: Verify binary
run: make ${{ matrix.verify_target }} BINARY_VERSION="_${{ steps.current-version.outputs.version }}"
- name: Prepare release artifacts
id: prepare-release
run: |
MODULE_NAME=$(grep "^module" go.mod | awk -F'/' '{print $NF}')
BINARY_VERSION=$(echo ${{ steps.current-version.outputs.version }})
ARCHIVE="${MODULE_NAME}_${BINARY_VERSION}_${{ matrix.os }}_${{ matrix.arch }}.zip"
# Conditionally set the binary name with or without .exe extension
BINARY="${MODULE_NAME}_${BINARY_VERSION}"
if [ "${{ matrix.os }}" = "windows" ]; then
BINARY="${BINARY}.exe"
fi
# Create ZIP archive
zip ${ARCHIVE} ${BINARY}
echo "module_name=${MODULE_NAME}" >> "$GITHUB_OUTPUT"
echo "version=${BINARY_VERSION}" >> "$GITHUB_OUTPUT"
echo "binary_version=${BINARY_VERSION}" >> "$GITHUB_OUTPUT"
echo "archive=${ARCHIVE}" >> "$GITHUB_OUTPUT"
- name: Upload artifacts
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
name: ${{ steps.prepare-release.outputs.module_name }}_${{ steps.prepare-release.outputs.binary_version }}_${{ matrix.os }}_${{ matrix.arch }}
path: |
${{ steps.prepare-release.outputs.archive }}