--- name: build_vault # This workflow is intended to be called by the build workflow for each Vault # binary that needs to be built and packaged. The ci make targets that are # utilized automatically determine build metadata and handle building and # packing vault. on: workflow_call: inputs: cgo-enabled: type: string default: 0 create-packages: type: boolean default: true goos: required: true type: string goarch: required: true type: string go-tags: type: string package-name: type: string default: vault vault-version: type: string required: true web-ui-cache-key: type: string required: true jobs: build: runs-on: custom-linux-xl-vault-latest name: Vault ${{ inputs.goos }} ${{ inputs.goarch }} v${{ inputs.vault-version }} steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - uses: ./.github/actions/set-up-go with: github-token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} - name: Restore UI from cache uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 with: # Restore the UI asset from the UI build workflow. Never use a partial restore key. enableCrossOsArchive: true fail-on-cache-miss: true path: http/web_ui key: ${{ inputs.web-ui-cache-key }} - name: Build Vault env: GO_TAGS: ${{ inputs.go-tags }} CGO_ENABLED: ${{ inputs.cgo-enabled }} GOARCH: ${{ inputs.goarch }} GOOS: ${{ inputs.goos }} VERSION: ${{ inputs.vault-version }} run: make ci-build - name: Determine artifact basename env: GOARCH: ${{ inputs.goarch }} GOOS: ${{ inputs.goos }} VERSION: ${{ inputs.vault-version }} run: echo "ARTIFACT_BASENAME=$(make ci-get-artifact-basename)" >> "$GITHUB_ENV" - name: Bundle Vault env: BUNDLE_PATH: out/${{ env.ARTIFACT_BASENAME }}.zip run: make ci-bundle - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: ${{ env.ARTIFACT_BASENAME }}.zip path: out/${{ env.ARTIFACT_BASENAME }}.zip if-no-files-found: error - if: ${{ inputs.create-packages }} uses: hashicorp/actions-packaging-linux@v1 with: name: ${{ github.event.repository.name }} description: Vault is a tool for secrets management, encryption as a service, and privileged access management. arch: ${{ inputs.goarch }} version: ${{ inputs.vault-version }} maintainer: HashiCorp homepage: https://github.com/hashicorp/vault license: MPL-2.0 binary: dist/${{ inputs.package-name }} deb_depends: openssl rpm_depends: openssl config_dir: .release/linux/package/ preinstall: .release/linux/preinst postinstall: .release/linux/postinst postremove: .release/linux/postrm - if: ${{ inputs.create-packages }} name: Determine package file names run: | echo "RPM_PACKAGE=$(basename out/*.rpm)" >> "$GITHUB_ENV" echo "DEB_PACKAGE=$(basename out/*.deb)" >> "$GITHUB_ENV" - if: ${{ inputs.create-packages }} 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.create-packages }} uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} if-no-files-found: error