Compare commits

..

3 commits
v0.0.6 ... main

Author SHA1 Message Date
da1f4eecdb Update README.md to separate provider conf and local dev
All checks were successful
test / test (push) Successful in 32s
2025-12-03 10:26:45 +00:00
c8104c0f1d
workflow: generate provider.json, upload to terralist
All checks were successful
test / test (push) Successful in 19s
ci / goreleaser (push) Successful in 28s
2025-11-19 11:05:38 +01:00
7cb14a872a
test: output json from goreleaser
All checks were successful
test / test (push) Successful in 20s
ci / goreleaser (push) Successful in 30s
2025-11-19 09:58:57 +01:00
3 changed files with 71 additions and 12 deletions

View file

@ -26,9 +26,19 @@ jobs:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Run GoReleaser
id: goreleaser
uses: https://github.com/goreleaser/goreleaser-action@v6
env:
GITEA_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
with:
args: release --clean
- name: Generate and upload provider.json
run: |
echo '${{steps.goreleaser.outputs.artifacts}}' >artifacts.json
echo '${{steps.goreleaser.outputs.metadata}}' >metadata.json
./generate-provider-json.sh artifacts.json metadata.json
env:
TERRALIST_API: https://terralist.garm-provider-test.t09.de/v1/api
TERRALIST_API_KEY: ${{ secrets.TERRALIST_API_KEY }}

View file

@ -50,17 +50,11 @@ mkdir -p ~/.terraform.d/plugins/registry.terraform.io/DevFW-CICD/edge-connect/1.
cp terraform-provider-edge-connect ~/.terraform.d/plugins/registry.terraform.io/DevFW-CICD/edge-connect/1.0.0/darwin_arm64/
```
Note: Adjust the path based on your OS and architecture (e.g., `linux_amd64`, `darwin_amd64`, etc.)
> Note: Adjust the path based on your OS and architecture (e.g., `linux_amd64`, `darwin_amd64`, etc.)
## Usage
4. Generate the binary by running `go install .` from the repository root. This installs the provider binary to `$HOME/go/bin` and means that `terraform init` is not necessary.
### Provider Configuration
As the provider is currently not officially registered for public download, terraform must be configured to use a locally built version.
To generate the binary run `go install .` from the repository root. This installs the provider binary to `$HOME/go/bin` and means that `terraform init` is not necessary.
You will also need a `~/.terraformrc` file with the following contents. `<home>` should refer to your `$HOME` directory.
5. You will also need a `~/.terraformrc` file with the following contents. `<home>` should refer to your `$HOME` directory.
```hcl
provider_installation {
@ -76,7 +70,11 @@ provider_installation {
}
```
You can then reference the local provider in your `.tf` files as follows:
## Usage
### Provider Configuration
The provider must be configured with credentials and a URL. This can be done with a token in your code:
```hcl
provider "edge-connect" {
@ -85,7 +83,7 @@ provider "edge-connect" {
}
```
Or using basic authentication:
Or with basic authentication:
```hcl
provider "edge-connect" {
@ -95,7 +93,7 @@ provider "edge-connect" {
}
```
Configuration can also be provided via environment variables:
Or without code changes, via environment variables:
- `EDGE_CONNECT_BASE_URL`
- `EDGE_CONNECT_TOKEN`
- `EDGE_CONNECT_USERNAME`

51
generate-provider-json.sh Executable file
View file

@ -0,0 +1,51 @@
#!/bin/bash
set -o errexit
# This script generates and uploads a terraform provider.json file and uploads it to Terralist
ARTIFACTS_FILE=$1
METADATA_FILE=$2
TERRALIST_API=${TERRALIST_API:-https://terralist.garm-provider-test.t09.de/v1/api}
TERRALIST_API_KEY=${TERRALIST_API_KEY:-invalid-key}
VERSION=$(cat $METADATA_FILE | jq -r '.version')
BASE_URL="$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/releases/download"
if ! [[ "$BASE_URL" =~ "terraform" ]]; then
echo "Error: GITHUB_ environment variables not set correctly" >&2
exit 1
fi
jq --arg base_url "$BASE_URL" --arg version "$VERSION" '
{
protocols: ["6"],
shasums: (
{
url: ($base_url + "/v" + $version + "/" + (.[]
| select(.type=="Checksum").name)),
signature_url: ($base_url + "/v" + $version + "/" + (.[]
| select(.type=="Signature").name))
}
),
platforms: [
.[]
| select(.type=="Archive")
| {
os: .goos,
arch: .goarch,
download_url: ($base_url + "/v" + $version + "/" + .name),
shasum: (.extra.Checksum | sub("^sha256:";""))
}
]
}
' $ARTIFACTS_FILE >./provider.json
cat provider.json | jq .
curl -X POST $TERRALIST_API/providers/edge-connect/${VERSION}/upload \
-H "Authorization: Bearer x-api-key:$TERRALIST_API_KEY" \
-d "$(cat ./provider.json)"