Marketplace
BrowsePublish
Marketplace
devops-toolkit/dot-github@v0.0.53
github

github

github
devops-toolkit/dot-github@v0.0.53github
Type

Composition

Referenced XRD

GitHub

Source Codegithub.com/vfarcic/crossplane-kubernetes
YAML
kind: Composition
apiVersion: apiextensions.crossplane.io/v1
metadata:
  name: github
  creationTimestamp: null
spec:
  compositeTypeRef:
    apiVersion: devopstoolkitseries.com/v1alpha1
    kind: GitHub
  mode: Pipeline
  pipeline:
    - step: github
      functionRef:
        name: crossplane-contrib-function-kcl
      input:
        apiVersion: krm.kcl.dev/v1alpha1
        kind: KCLRun
        spec:
          source: >
            oxr = option("params").oxr


            _metadata = lambda suffix: str, kind: str -> any {
                {
                    if suffix == "":
                        name = oxr.spec.id
                    else:
                        name = oxr.spec.id + "-" + suffix
                    annotations = {
                        "krm.kcl.dev/composition-resource-name" = oxr.spec.id + "-" + kind + "-" + suffix
                    }
                }
            }


            schema repositoryFile:
                _name: str
                _file: str
                _content: str
                _branch: bool = True
                apiVersion = "repo.github.upbound.io/v1alpha1"
                kind = "RepositoryFile"
                metadata = _metadata(_name, "file")
                spec = {
                    forProvider = {
                        commitAuthor = "Crossplane"
                        commitEmail = "github-provider@crossplane.io"
                        commitMessage = "Crossplane rocks [skip ci]"
                        content = _content
                        file = _file
                        repositorySelector.matchControllerRef = True
                        if _branch:
                            branch = "init"
                    }
                }

            items = [
                {
                    apiVersion = "repo.github.upbound.io/v1alpha1"
                    kind = "Repository"
                    metadata = _metadata("", "repo")
                    spec = {
                        forProvider = {
                            name = oxr.spec.id
                            if oxr.spec.parameters.public:
                                visibility = "public"
                            else:
                                visibility = "private"
                            hasIssues = True
                        }
                        managementPolicies: [
                            "Create",
                            "Observe",
                            "Update",
                            "LateInitialize",
                        ]
                    }
                }
                {
                    apiVersion = "repo.github.upbound.io/v1alpha1"
                    kind = "Branch"
                    metadata = _metadata("init", "branch")
                    spec.forProvider = {
                        branch = "init"
                        repositorySelector.matchControllerRef = True
                    }
                }
                {
                    _body = """\
            1. Open https://github.com/${oxr.spec.parameters.repo.user}/${oxr.spec.id}/settings/actions and enable `Read and write permissions`.

            2. Open https://github.com/${oxr.spec.parameters.repo.user}/${oxr.spec.id}/settings/secrets/actions and add `PAT_TOKEN` with the GitHub token to `Repository secrets`.

            3. Review, modify (optional), merge, enjoy.

            """
                    if oxr.spec.parameters?.gitops?.enabled:
                        _body = _body + """\
            4. Execute the `gitops` workflow to include the app into the GitOps repository.

            """
                    apiVersion = "repo.github.upbound.io/v1alpha1"
                    kind = "PullRequest"
                    metadata = _metadata("init", "pr")
                    spec.forProvider = {
                        baseRef = "main"
                        headRef = "init"
                        body = _body
                        title = "Initial"
                        maintainerCanModify = True
                        baseRepositorySelector.matchControllerRef = True
                    }
                }
                repositoryFile {
                    _name = "gitignore"
                    _file = ".gitignore"
                    _content = """\
            /tmp

            """
                    _branch = False
                }
                repositoryFile {
                    _name = "devbox"
                    _file = "devbox.json"
                    _content = """\
            {
              "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.11.1/.schema/devbox.schema.json",
              "packages": [
                "tmux@3.4"
              ],
              "shell": {
                "init_hook": [],
                "scripts": {}
              }
            }

            """
                    _branch = False
                }
                repositoryFile {
                    _name = "readme"
                    _file = "README.md"
                    _content = """\
            # ${oxr.spec.id}


            Silly description

            """
                }
                repositoryFile {
                    _name = "app"
                    _file = "k8s/appclaim.yaml"
                    _content = """\
            apiVersion: devopstoolkitseries.com/v1alpha1

            kind: AppClaim

            metadata:
              name: ${oxr.spec.id}
            spec:
              id: ${oxr.spec.id}
              compositionSelector:
                matchLabels:
                  type: backend
                  location: local
              parameters:
                namespace: ${oxr.spec.parameters.app.namespace}
                image: ${oxr.spec.parameters.registry}/${oxr.spec.id}
                port: 8080
                host: ${oxr.spec.parameters.app.host}
            """
                }
                if oxr.spec.parameters?.db?.enabled:
                  repositoryFile {
                      _name = "db"
                      _file = "k8s/dbclaim.yaml"
                      _content = """\
            ---

            apiVersion: v1

            kind: Secret

            metadata:
              name: ${oxr.spec.id}-db-password
            data:
              password: T1QrOXZQcDhMdXhoeFVQWVpLSk1kUG1YM04xTzBTd3YzWG5ZVjI0UFZzcz0=
            ---

            apiVersion: devopstoolkitseries.com/v1alpha1

            kind: SQLClaim

            metadata:
              name: ${oxr.spec.id}-db
            spec:
              id: ${oxr.spec.id}-db
              compositionSelector:
                matchLabels:
                  provider: ${oxr.spec.parameters.db.provider}
                  db: postgresql
              parameters:
                version: "${oxr.spec.parameters.db.version}"
                size: medium
            """
                  }
                repositoryFile {
                    _name = "ci"
                    _file = ".github/workflows/ci.yaml"
                    _content = """\
            name: ci

            run-name: ci

            on:
              push:
                branches:
                  - main
            jobs:
              build-container-image:
                runs-on: ubuntu-latest
                env:
                  TAG: 0.0.$$[[ github.run_number ]]
                  FORCE_COLOR: 1
                steps:
                  - uses: earthly/actions-setup@v1
                    with:
                      version: v0.8.0
                  - name: Checkout
                    uses: actions/checkout@v4
                  - name: Set up QEMU
                    uses: docker/setup-qemu-action@v3
                  - name: Build and push
                    run: |
                      earthly --push +all --tag $TAG
                  - name: Commit changes
                    run: |
                      git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
                      git config --local user.name "github-actions[bot]"
                      git add .
                      git commit -m "Release $$[[ env.TAG ]] [skip ci]"
                  - name: Push changes
                    uses: ad-m/github-push-action@master
                    with:
                      github_token: $$[[ secrets.GITHUB_TOKEN ]]
                      branch: $$[[ github.ref ]]
            """.replace("[[", "{{").replace("]]", "}}")
                }
                if oxr.spec.parameters?.gitops?.enabled and oxr.spec.parameters?.gitops?.user != "" and oxr.spec.parameters?.gitops?.repo != "":
                    repositoryFile {
                        _name = "gitops"
                        _file = ".github/workflows/gitops.yaml"
                        _content = """\
            name: gitops

            run-name: gitops

            on: workflow_dispatch

            jobs:
              manifest:
                runs-on: ubuntu-latest
                env:
                  FORCE_COLOR: 1
                  APP: crossplane-gh-demo
                steps:
                  - name: Checkout
                    uses: actions/checkout@v4
                    with:
                      repository: ${oxr.spec.parameters.gitops.user}/${oxr.spec.parameters.gitops.repo}
                      token: $$[[ secrets.PAT_TOKEN ]]
                  - name: Manifest
                    run: |
                        cp argocd-app.tmpl apps/${oxr.spec.id}.yaml
                        yq --inplace ".metadata.name = \\"${oxr.spec.id}\\"" apps/${oxr.spec.id}.yaml
                        yq --inplace ".spec.source.repoURL = \\"https://github.com/$GITHUB_REPOSITORY\\"" apps/${oxr.spec.id}.yaml
                        yq --inplace ".spec.destination.namespace = \\"${oxr.spec.parameters.app.namespace}\\"" apps/${oxr.spec.id}.yaml
                        git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
                        git config --local user.name "github-actions[bot]"
                        git add .
                        git commit -m "Added apps/${oxr.spec.id}.yaml [skip ci]"
                  - name: Push changes
                    uses: ad-m/github-push-action@master
                    with:
                      github_token: $$[[ secrets.PAT_TOKEN ]]
                      repository: ${oxr.spec.parameters.gitops.user}/${oxr.spec.parameters.gitops.repo}
                      force: true
            """.replace("[[", "{{").replace("]]", "}}")
                        _branch = False
                    }
                if oxr.spec.parameters?.backstage?.enabled:
                    repositoryFile {
                        _name = "backstage-catalog-info"
                        _file = "catalog-info.yaml"
                        _content = """\
            apiVersion: backstage.io/v1alpha1

            kind: Component

            metadata:
              name: ${oxr.spec.id}
              description: Silly description
              annotations:
                github.com/project-slug: ${oxr.spec.parameters.repo.user}/${oxr.spec.id}
                backstage.io/kubernetes-id: dot
                backstage.io/kubernetes-namespace: ${oxr.spec.parameters.app.namespace}
                backstage.io/kubernetes-label-selector: app.kubernetes.io/name=${oxr.spec.id}
            spec:
              type: backend
              lifecycle: production
              owner: ${oxr.spec.parameters.repo.user}/${oxr.spec.id}
              system: DevOpsCatalog
            """
                    }
                if oxr.spec.parameters.app.language == "go":
                    repositoryFile {
                        _name = "main-go"
                        _file = "main.go"
                        _content = """\
            package main


            import (
              "fmt"
              "log"
              "net/http"
              "os"

              "github.com/gin-gonic/gin"
            )


            func main() {
              log.Println("Starting server...")
              router := gin.New()
              router.GET("/", rootHandler)
              port := os.Getenv("PORT")
              if len(port) == 0 {
                port = "8080"
              }
              router.Run(fmt.Sprintf(":%s", port))
            }


            func rootHandler(ctx *gin.Context) {
              ctx.String(http.StatusOK, "This is a silly demo")
            }

            """
                    }
                    repositoryFile {
                        _name = "go-mod"
                        _file = "go.mod"
                        _content = """\
            module app


            go 1.22.0


            require github.com/gin-gonic/gin v1.10.0


            require (
                    github.com/bytedance/sonic v1.11.6 // indirect
                    github.com/bytedance/sonic/loader v0.1.1 // indirect
                    github.com/cloudwego/base64x v0.1.4 // indirect
                    github.com/cloudwego/iasm v0.2.0 // indirect
                    github.com/gabriel-vasile/mimetype v1.4.3 // indirect
                    github.com/gin-contrib/sse v0.1.0 // indirect
                    github.com/go-playground/locales v0.14.1 // indirect
                    github.com/go-playground/universal-translator v0.18.1 // indirect
                    github.com/go-playground/validator/v10 v10.20.0 // indirect
                    github.com/goccy/go-json v0.10.2 // indirect
                    github.com/json-iterator/go v1.1.12 // indirect
                    github.com/klauspost/cpuid/v2 v2.2.7 // indirect
                    github.com/leodido/go-urn v1.4.0 // indirect
                    github.com/mattn/go-isatty v0.0.20 // indirect
                    github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
                    github.com/modern-go/reflect2 v1.0.2 // indirect
                    github.com/pelletier/go-toml/v2 v2.2.2 // indirect
                    github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
                    github.com/ugorji/go/codec v1.2.12 // indirect
                    golang.org/x/arch v0.8.0 // indirect
                    golang.org/x/crypto v0.23.0 // indirect
                    golang.org/x/net v0.25.0 // indirect
                    golang.org/x/sys v0.20.0 // indirect
                    golang.org/x/text v0.15.0 // indirect
                    google.golang.org/protobuf v1.34.1 // indirect
                    gopkg.in/yaml.v3 v3.0.1 // indirect
            )

            """
                    }
                    repositoryFile {
                        _name = "go-sum"
                        _file = "go.sum"
                        _content = """\
            github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0=

            github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4=

            github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM=

            github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=

            github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=

            github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=

            github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=

            github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=

            github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

            github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=

            github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

            github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=

            github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=

            github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=

            github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=

            github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=

            github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=

            github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=

            github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=

            github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=

            github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=

            github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=

            github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=

            github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8=

            github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=

            github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=

            github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=

            github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=

            github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=

            github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=

            github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=

            github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=

            github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=

            github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM=

            github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=

            github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=

            github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=

            github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=

            github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=

            github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=

            github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

            github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=

            github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=

            github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=

            github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=

            github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=

            github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=

            github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=

            github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=

            github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=

            github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=

            github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=

            github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=

            github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=

            github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=

            github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=

            github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=

            github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=

            github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=

            github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=

            github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=

            github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=

            github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=

            github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=

            github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=

            golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=

            golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=

            golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=

            golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=

            golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=

            golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac=

            golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=

            golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

            golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

            golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=

            golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=

            golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=

            golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=

            golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=

            golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

            google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg=

            google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=

            gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=

            gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

            gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

            gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

            gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

            nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=

            rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

            """
                    }
                    repositoryFile {
                        _name = "earthfile"
                        _file = "Earthfile"
                        _content = """\
            VERSION 0.8

            FROM ghcr.io/vfarcic/silly-demo-earthly:0.0.5

            ARG --global registry=${oxr.spec.parameters.registry}

            ARG --global image=${oxr.spec.id}

            WORKDIR /go-workdir


            binary:
                COPY go.mod go.sum .
                COPY *.go .
                RUN GOOS=linux GOARCH=amd64 go build -o app
                SAVE ARTIFACT app

            image:
                BUILD +binary
                ARG tag='latest'
                FROM scratch
                EXPOSE 8080
                CMD ["app"]
                ENV VERSION=$tag
                COPY +binary/app /usr/local/bin/app
                SAVE IMAGE --push $registry/$image:$tag $registry/$image:latest

            manifests:
                ARG tag
                COPY k8s/appclaim.yaml k8s/appclaim.yaml
                RUN yq --inplace ".spec.parameters.image = \\"$registry/$image:$tag\\"" k8s/appclaim.yaml
                SAVE ARTIFACT k8s/appclaim.yaml AS LOCAL k8s/appclaim.yaml

            all:
                ARG tag
                WAIT
                    BUILD +image --tag $tag
                END
                BUILD +manifests --tag $tag
            """
                    }
                if oxr.spec.parameters.app.language == "js":
                    repositoryFile {
                        _name = "main-js"
                        _file = "main.js"
                        _content = """\
            console.log('Hello World');

            """
                    }
                    repositoryFile {
                        _name = "earthfile"
                        _file = "Earthfile"
                        _content = """\
            VERSION 0.8

            FROM ghcr.io/vfarcic/silly-demo-earthly:0.0.5

            ARG --global registry=${oxr.spec.parameters.registry}

            ARG --global image=${oxr.spec.id}


            image:
                ARG tag='latest'
                FROM scratch
                RUN echo "I haven't used JS for a while so you'll need to find someone else to write this Earthfile for you."
                SAVE IMAGE --push $registry/$image:$tag $registry/$image:latest

            manifests:
                RUN yq --inplace ".spec.parameters.image = \\"$registry/$image:$tag\\"" k8s/appclaim.yaml

            all:
                ARG tag
                WAIT
                    BUILD +image --tag $tag
                END
                BUILD +manifests --tag $tag
            """
                    }
            ]
    - step: automatically-detect-ready-composed-resources
      functionRef:
        name: crossplane-contrib-function-auto-ready
  writeConnectionSecretsToNamespace: crossplane-system
Marketplace

Discover the building blocks for your internal cloud platform.

© 2022 Upbound, Inc.

SolutionsProvidersConfigurations
LearnDocumentationTry for Free
MorePrivacy PolicyTerms & Conditions
Marketplace

© 2022 Upbound, Inc.

Marketplace

Discover the building blocksfor your internal cloud platform.