download binary

This commit is contained in:
Martin Thielecke 2023-10-05 20:46:23 +02:00
parent 87a818c212
commit 00377ec276
Signed by: mthie
GPG Key ID: D1D25A85C8604DFB
6 changed files with 79 additions and 2 deletions

@ -14,7 +14,7 @@ jobs:
steps:
- name: Import Secrets
id: import-secrets
uses: hashicorp/vault-action@v2
uses: https://git.mthie.com/mthie/vault-action@v0
with:
url: ${{ env.VAULT_ADDR }}
method: ${{ env.VAULT_AUTH_TYPE}}

@ -22,4 +22,4 @@ inputs:
required: false
runs:
using: 'go'
main: 'main.go'
main: 'cmd/main.go'

3
cmd/go.mod Normal file

@ -0,0 +1,3 @@
module git.mthie.com/mthie/vault-action/cmd
go 1.21.1

66
cmd/main.go Normal file

@ -0,0 +1,66 @@
package main
import (
"context"
"encoding/json"
"io"
"log"
"net/http"
"os"
"os/exec"
)
func main() {
req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, "https://git.mthie.com/api/v1/repos/mthie/vault-action/releases", nil)
if err != nil {
log.Panicf("error creating download request: %s", err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Panicf("error getting download information: %s", err)
}
type releaseInfo []struct {
Assets []struct {
URL string `json:"browser_download_url"`
} `json:"assets"`
}
downloadData := releaseInfo{}
if err := json.NewDecoder(resp.Body).Decode(&downloadData); err != nil {
log.Panicf("error decoding release information: %s", err)
}
resp.Body.Close()
if len(downloadData) == 0 || len(downloadData[0].Assets) == 0 {
log.Panic("no binary found")
}
req, err = http.NewRequestWithContext(context.Background(), http.MethodGet, downloadData[0].Assets[0].URL, nil)
if err != nil {
log.Panicf("error creating download request: %s", err)
}
resp, err = http.DefaultClient.Do(req)
if err != nil {
log.Panicf("error downloading binary: %s", err)
}
out, err := os.OpenFile("vault", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
if err != nil {
log.Panicf("error creating file: %s", err)
}
if _, err = io.Copy(out, resp.Body); err != nil {
log.Panicf("error writing download data: %s", err)
}
out.Close()
resp.Body.Close()
cmd := exec.Command("vault")
if err := cmd.Run(); err != nil {
log.Panicf("error executing: %s", err)
}
}

8
cmd/tmp.txt Normal file

@ -0,0 +1,8 @@
DEPLOY_KEY<<_GitHubActionsFileCommandDelimeter_
-----BEGIN EC PRIVATE KEY-----
MIGkAgEBBDB7OBLldAAcXseFvIF4DOBfLdaiQtUUnGU8UddpoUeCCGe/lwsMQzns
U0mOdkGAWwygBwYFK4EEACKhZANiAAQC8rWLLnxti4P4YpmAyb6xsD8Uv8ZKM7qJ
N6Lh2JqttfFp03s5fSjWIibDjwCBGqSTBitFU1YcJvc9ewWUOxHrta782GChVgjl
loezmUvX1oLCE0Koqd/U+fJnyC+LvJA=
-----END EC PRIVATE KEY-----
_GitHubActionsFileCommandDelimeter_

BIN
cmd/vault Executable file

Binary file not shown.