mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-25 16:31:10 -06:00
106 lines
3.8 KiB
YAML
106 lines
3.8 KiB
YAML
---
|
|
name: build_opentofu
|
|
|
|
# This workflow is intended to be called by the build workflow. The crt make
|
|
# targets that are utilized automatically determine build metadata and
|
|
# handle building and packing OpenTofu.
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
cgo-enabled:
|
|
type: string
|
|
default: 0
|
|
required: true
|
|
goos:
|
|
required: true
|
|
type: string
|
|
goarch:
|
|
required: true
|
|
type: string
|
|
go-version:
|
|
type: string
|
|
package-name:
|
|
type: string
|
|
default: tofu
|
|
bin-name:
|
|
type: string
|
|
default: tofu
|
|
product-version:
|
|
type: string
|
|
required: true
|
|
ld-flags:
|
|
type: string
|
|
required: true
|
|
runson:
|
|
type: string
|
|
required: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ${{ inputs.runson }}
|
|
name: OpenTofu ${{ inputs.goos }} ${{ inputs.goarch }} v${{ inputs.product-version }}
|
|
steps:
|
|
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
|
- uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1
|
|
with:
|
|
go-version: ${{ inputs.go-version }}
|
|
- name: Determine artifact basename
|
|
run: echo "ARTIFACT_BASENAME=${{ inputs.package-name }}_${{ inputs.product-version }}_${{ inputs.goos }}_${{ inputs.goarch }}.zip" >> $GITHUB_ENV
|
|
- name: Build OpenTofu
|
|
env:
|
|
GOOS: ${{ inputs.goos }}
|
|
GOARCH: ${{ inputs.goarch }}
|
|
GO_LDFLAGS: ${{ inputs.ld-flags }}
|
|
ACTIONSOS: ${{ inputs.runson }}
|
|
CGO_ENABLED: ${{ inputs.cgo-enabled }}
|
|
uses: hashicorp/actions-go-build@v0.1.7
|
|
with:
|
|
bin_name: ${{ inputs.bin-name }}
|
|
product_name: ${{ inputs.product-name }}
|
|
product_version: ${{ inputs.product-version }}
|
|
go_version: ${{ inputs.go-version }}
|
|
os: ${{ inputs.goos }}
|
|
arch: ${{ inputs.goarch }}
|
|
reproducible: nope
|
|
instructions: |-
|
|
mkdir dist out
|
|
set -x
|
|
go build -ldflags "${{ inputs.ld-flags }}" -o dist/ ./cmd/tofu
|
|
zip -r -j out/${{ env.ARTIFACT_BASENAME }} dist/
|
|
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
with:
|
|
name: ${{ env.ARTIFACT_BASENAME }}
|
|
path: out/${{ env.ARTIFACT_BASENAME }}
|
|
if-no-files-found: error
|
|
- if: ${{ inputs.goos == 'linux' }}
|
|
uses: hashicorp/actions-packaging-linux@v1
|
|
with:
|
|
name: "opentofu"
|
|
description: "OpenTofu enables you to safely and predictably create, change, and improve infrastructure. It is an open source tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned."
|
|
arch: ${{ inputs.goarch }}
|
|
version: ${{ inputs.product-version }}
|
|
maintainer: "HashiCorp"
|
|
homepage: "https://opentofu.org/"
|
|
license: "MPL-2.0"
|
|
binary: "dist/tofu"
|
|
deb_depends: "git"
|
|
rpm_depends: "git"
|
|
- if: ${{ inputs.goos == 'linux' }}
|
|
name: Determine package file names
|
|
run: |
|
|
echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV
|
|
echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV
|
|
- if: ${{ inputs.goos == 'linux' }}
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
with:
|
|
name: ${{ env.RPM_PACKAGE }}
|
|
path: out/${{ env.RPM_PACKAGE }}
|
|
if-no-files-found: error
|
|
- if: ${{ inputs.goos == 'linux' }}
|
|
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
|
|
with:
|
|
name: ${{ env.DEB_PACKAGE }}
|
|
path: out/${{ env.DEB_PACKAGE }}
|
|
if-no-files-found: error
|