Skip to content

Commit

Permalink
fix: update build release pipeline (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
gamunu committed Jul 17, 2024
1 parent 3cb0895 commit e71eed6
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 205 deletions.
174 changes: 34 additions & 140 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,74 +1,22 @@
---
name: build

on:
push:
branches:
- main
- pre-release

permissions:
actions: write

branches: [main]
pull_request:
branches-ignore: [pre-release]
env:
PKG_NAME: "opentofu-ls"

GOPROXY: https://proxy.golang.org/
jobs:
get-go-version:
name: "Determine Go toolchain version"
runs-on: ubuntu-latest
outputs:
go-version: ${{ steps.get-go-version.outputs.go-version }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Determine Go version
id: get-go-version
# We use .go-version as our source of truth for current Go
# version, because "goenv" can react to it automatically.
run: |
echo "Building with Go $(cat .go-version)"
echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT
set-product-version:
runs-on: ubuntu-latest
outputs:
product-version: ${{ steps.set-product-version.outputs.product-version }}
product-base-version: ${{ steps.set-product-version.outputs.base-product-version }}
product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Set Product version
id: set-product-version
uses: hashicorp/actions-set-product-version@v2

generate-metadata-file:
needs: set-product-version
runs-on: ubuntu-latest
outputs:
filepath: ${{ steps.generate-metadata-file.outputs.filepath }}
steps:
- name: "Checkout directory"
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Generate metadata file
id: generate-metadata-file
uses: hashicorp/actions-generate-metadata@v1
with:
version: ${{ needs.set-product-version.outputs.product-version }}
product: ${{ env.PKG_NAME }}
repositoryOwner: "hashicorp"
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: metadata.json
path: ${{ steps.generate-metadata-file.outputs.filepath }}

generate-provider-schemas:
runs-on: ubuntu-latest
steps:
- name: "Checkout directory"
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up Go
uses: actions/setup-go@cdcb36043654635271a94b9a6d1392de5bb323a7 # v5.0.1
with:
go-version-file: ".go-version"
go-version-file: .go-version
- name: Generate provider schemas
run: |
go generate ./internal/schemas
Expand All @@ -80,31 +28,26 @@ jobs:
retention-days: 1

build:
needs:
- get-go-version
- set-product-version
- generate-provider-schemas
runs-on: ubuntu-latest
strategy:
matrix:
include:
- { goos: "linux", goarch: "386" }
- { goos: "linux", goarch: "amd64" }
- { goos: "linux", goarch: "arm" }
- { goos: "linux", goarch: "arm64" }
- { goos: "freebsd", goarch: "386" }
- { goos: "freebsd", goarch: "amd64" }
- { goos: "freebsd", goarch: "arm" }
- { goos: "openbsd", goarch: "386" }
- { goos: "openbsd", goarch: "amd64" }
- { goos: "solaris", goarch: "amd64" }
- { goos: "windows", goarch: "386" }
- { goos: "windows", goarch: "amd64" }
- { goos: "windows", goarch: "arm64" }
- { goos: "darwin", goarch: "arm64" }
- { goos: "darwin", goarch: "amd64" }
fail-fast: true
name: Go ${{ needs.get-go-version.outputs.go-version }} ${{ matrix.goos }} ${{ matrix.goarch }} build
- {goos: linux, goarch: '386'}
- {goos: linux, goarch: amd64}
- {goos: linux, goarch: arm}
- {goos: linux, goarch: arm64}
- {goos: freebsd, goarch: '386'}
- {goos: freebsd, goarch: amd64}
- {goos: freebsd, goarch: arm}
- {goos: openbsd, goarch: '386'}
- {goos: openbsd, goarch: amd64}
- {goos: solaris, goarch: amd64}
- {goos: windows, goarch: '386'}
- {goos: windows, goarch: amd64}
- {goos: windows, goarch: arm64}
- {goos: darwin, goarch: arm64}
- {goos: darwin, goarch: amd64}
timeout-minutes: 25
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Download provider schemas
Expand All @@ -114,66 +57,16 @@ jobs:
path: ./internal/schemas/data
- name: Check provider schemas
run: du -h -s ./internal/schemas/data
- uses: hashicorp/actions-go-build@v1
env:
BASE_VERSION: ${{ needs.set-product-version.outputs.product-base-version }}
PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version}}
METADATA_VERSION: ${{ env.METADATA }}
CGO_ENABLED: 0
with:
product_name: ${{ env.PKG_NAME }}
product_version: ${{ needs.set-product-version.outputs.product-version }}
go_version: ${{ needs.get-go-version.outputs.go-version }}
os: ${{ matrix.goos }}
arch: ${{ matrix.goarch }}
reproducible: report
instructions: |-
go build \
-o "$BIN_PATH" \
-trimpath \
-buildvcs=false \
-ldflags "
-s -w
-X 'main.algoliaAppID=${{ secrets.ALGOLIA_APP_ID }}'
-X 'main.algoliaAPIKey=${{ secrets.ALGOLIA_API_KEY }}'
"
cp LICENSE "$TARGET_DIR/LICENSE.txt"
- name: Copy license file to config_dir # for Linux packages
if: ${{ matrix.goos == 'linux' }}
env:
LICENSE_DIR: ".release/linux/package/usr/share/doc/${{ env.PKG_NAME }}"
run: |
mkdir -p "$LICENSE_DIR" && cp LICENSE "$LICENSE_DIR/LICENSE.txt"
- name: Package
if: ${{ matrix.goos == 'linux' }}
uses: hashicorp/actions-packaging-linux@v1
with:
name: ${{ github.event.repository.name }}
description: "Terraform Language Server"
arch: ${{ matrix.goarch }}
version: ${{ needs.set-product-version.outputs.product-version }}
maintainer: "HashiCorp"
homepage: "https://github.com/gamunu/opentofu-ls"
license: "MPL-2.0"
binary: "dist/${{ env.PKG_NAME }}"
deb_depends: "openssl"
rpm_depends: "openssl"
config_dir: ".release/linux/package/"
- name: Set Package Names
if: ${{ matrix.goos == 'linux' }}
run: |
echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV
echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
if: ${{ matrix.goos == 'linux' }}
with:
name: ${{ env.RPM_PACKAGE }}
path: out/${{ env.RPM_PACKAGE }}
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
if: ${{ matrix.goos == 'linux' }}
- name: Set up Go
uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
name: ${{ env.DEB_PACKAGE }}
path: out/${{ env.DEB_PACKAGE }}
go-version-file: .go-version
- name: ${{ matrix.goos }} ${{ matrix.goarch }} build
run: |-
go build \
-trimpath \
-buildvcs=false \
-ldflags "-s -w"
delete-provider-schemas:
needs: build
Expand All @@ -182,3 +75,4 @@ jobs:
- uses: geekyeggo/delete-artifact@24928e75e6e6590170563b8ddae9fac674508aa1 # v5.0.0
with:
name: provider-schema-data

13 changes: 4 additions & 9 deletions .github/workflows/lock.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
name: 'Lock Threads'

name: Lock Threads
permissions:
issues: write
pull-requests: write

on:
schedule:
- cron: '0 3 * * *'

- cron: 0 3 * * *
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1
with:
issue-comment: >
I'm going to lock this issue because it has been closed for _30 days_ ⏳. This helps our maintainers find and focus on the active issues.
I'm going to lock this issue because it has been closed for _30 days_ ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.
If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.
issue-inactive-days: '30'
pr-comment: >
I'm going to lock this pull request because it has been closed for _30 days_ ⏳. This helps our maintainers find and focus on the active issues.
I'm going to lock this pull request because it has been closed for _30 days_ ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.
pr-inactive-days: '30'
45 changes: 33 additions & 12 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,56 @@
name: Release

name: release
on:
push:
# run only against tags
tags:
- "*"

tags: ['*']
jobs:
generate-provider-schemas:
runs-on: ubuntu-latest
steps:
- name: Checkout directory
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
with:
go-version-file: .go-version
- name: Generate provider schemas
run: |
go generate ./internal/schemas
du -h -s ./internal/schemas/data
- uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: provider-schema-data
path: ./internal/schemas/data
retention-days: 1
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # this is important, otherwise it won't checkout the full tree (i.e. no previous tags)

- uses: actions/setup-go@v5
with:
go-version: stable

go-version-file: .go-version
- uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- uses: sigstore/cosign-installer@v3.4.0 # installs cosign

- uses: goreleaser/goreleaser-action@v5 # run goreleaser
- uses: sigstore/cosign-installer@v3.4.0 # installs cosign
- uses: goreleaser/goreleaser-action@v5 # run goreleaser
with:
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
delete-provider-schemas:
needs: release
runs-on: ubuntu-latest
steps:
- uses: geekyeggo/delete-artifact@24928e75e6e6590170563b8ddae9fac674508aa1 # v5.0.0
with:
name: provider-schema-data
token: ${{ github.token }}
57 changes: 23 additions & 34 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,32 @@
name: "Stale issues and pull requests"

name: Stale issues and pull requests
permissions:
issues: write
pull-requests: write

on:
schedule:
- cron: "10 3 * * *"

- cron: 10 3 * * *
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
with:
only-labels: 'waiting-response'

days-before-stale: 30
stale-issue-label: 'stale'
stale-issue-message: |
Marking this issue as stale due to inactivity over the last 30 days. This helps our maintainers find and focus on the active issues. If this issue receives no comments in the next **30 days** it will automatically be closed. Maintainers can also remove the stale label.
Thank you for understanding.
stale-pr-label: 'stale'
stale-pr-message: |
Marking this pull request as stale due to inactivity over the last 30 days. This helps our maintainers find and focus on the active pull requests. If this pull request receives no comments in the next **30 days** it will automatically be closed. Maintainers can also remove the stale label.
Thank you for understanding.
days-before-close: 30
close-issue-message: |
Closing this issue due to its staleness.
If the issue was automatically closed and you feel it should be reopened, we encourage creating a new one linking back to this one for added context.
Thank you!
close-pr-message: |
Closing this pull request due to its staleness.
If the pull request was automatically closed and you feel it should be reopened, we encourage creating a new one linking back to this one for added context.
Thank you!
- uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0
with:
only-labels: waiting-response
days-before-stale: 30
stale-issue-label: stale
stale-issue-message: |
Marking this issue as stale due to inactivity over the last 30 days. This helps our maintainers find and focus on the active issues. If this issue receives no comments in the next **30 days** it will automatically be closed. Maintainers can also remove the stale label.
Thank you for understanding.
stale-pr-label: stale
stale-pr-message: |
Marking this pull request as stale due to inactivity over the last 30 days. This helps our maintainers find and focus on the active pull requests. If this pull request receives no comments in the next **30 days** it will automatically be closed. Maintainers can also remove the stale label.
Thank you for understanding.
days-before-close: 30
close-issue-message: |
Closing this issue due to its staleness.
If the issue was automatically closed and you feel it should be reopened, we encourage creating a new one linking back to this one for added context.
Thank you!
close-pr-message: |-
Closing this pull request due to its staleness.
If the pull request was automatically closed and you feel it should be reopened, we encourage creating a new one linking back to this one for added context.
Thank you!
Loading

0 comments on commit e71eed6

Please sign in to comment.