diff --git a/.github/workflows/image.yaml b/.github/workflows/image.yaml index 0ecc385642..0825c689a8 100644 --- a/.github/workflows/image.yaml +++ b/.github/workflows/image.yaml @@ -15,9 +15,43 @@ on: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - jobs: + build-and-push-devbox-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + name: Build and Push app-autoscaler-release-devbox + env: + IMAGE_NAME: ${{ github.repository }}-devbox + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push + id: build-and-push + uses: docker/build-push-action@v5 + with: + context: . + file: ci/dockerfiles/autoscaler-devbox/Dockerfile + push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main + build-and-push-image: runs-on: ubuntu-latest permissions: @@ -30,6 +64,8 @@ jobs: matrix: image_suffix: ["tools"] name: Build and Push app-autoscaler-release-${{ matrix.image_suffix }} + env: + IMAGE_NAME: ${{ github.repository }} steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/ci/dockerfiles/autoscaler-devbox/Dockerfile b/ci/dockerfiles/autoscaler-devbox/Dockerfile new file mode 100644 index 0000000000..3a3da4b578 --- /dev/null +++ b/ci/dockerfiles/autoscaler-devbox/Dockerfile @@ -0,0 +1,18 @@ +FROM jetpackio/devbox@sha256:430afb5a5c9b4ec9f56776e8fcb82fe67fa5fabba3ba67ebb1c13b17d0e8de8d + + +# Installing your devbox project +WORKDIR /code +USER root:root +RUN mkdir -p /code && chown "${DEVBOX_USER}:${DEVBOX_USER}" /code +USER ${DEVBOX_USER}:${DEVBOX_USER} +COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.json devbox.json +COPY --chown=${DEVBOX_USER}:${DEVBOX_USER} devbox.lock devbox.lock + + +# Copying local flakes directories +COPY local-flake local-flake + +RUN devbox run -- echo "Installed Packages." + +CMD ["devbox", "shell"] diff --git a/devbox.json b/devbox.json index 2498449ee0..fd6941da81 100644 --- a/devbox.json +++ b/devbox.json @@ -1,42 +1,48 @@ { - "packages": [ - "path:local-flake#bosh-bootloader", - "path:local-flake#app-autoscaler-cli-plugin", - "path:local-flake#log-cache-cli-plugin", - "path:local-flake#uaac", - "credhub-cli@latest", - "delve@latest", - "gh@latest", - "go-tools@latest", - "gopls@latest", - "nodejs@latest", - "nodePackages.yaml-language-server@latest", - "rubocop@latest", - "rubyPackages.solargraph@latest", - "swagger-cli@latest", - "actionlint@1.6.27", - "direnv@2.34.0", - "gnumake@4.4", - "maven@3.8.6", - "pre-commit@latest", - "bosh-cli@7.5.6", - "golangci-lint@1.57.2", - "yq-go@4.43.1", - "which@latest", - "jq@latest", - "fly@7.10.0", - "python@latest", - "cloudfoundry-cli@8.7.10", - "shellcheck@0.10.0", - "act@0.2.62", - "go@1.21.5", - "ruby@3.3.1", - "ginkgo@2.17.3", - "google-cloud-sdk@latest", - "temurin-bin-17@latest", - "bundix@latest", - "oha@latest" - ], + "packages": { + "path:local-flake#bosh-bootloader": "", + "path:local-flake#app-autoscaler-cli-plugin": "", + "path:local-flake#log-cache-cli-plugin": "", + "path:local-flake#cloud-mta-build-tool": "", + "path:local-flake#uaac": "", + "credhub-cli": "latest", + "delve": "latest", + "gh": "latest", + "go-tools": "latest", + "gopls": "latest", + "nodejs": "latest", + "nodePackages.yaml-language-server": "latest", + "rubocop": "latest", + "rubyPackages.solargraph": "latest", + "swagger-cli": "latest", + "actionlint": "1.6.27", + "direnv": "2.34.0", + "gnumake": "4.4", + "maven": "3.8.6", + "pre-commit": "latest", + "bosh-cli": "7.5.6", + "golangci-lint": "1.57.2", + "yq-go": "4.43.1", + "which": "latest", + "jq": "latest", + "fly": "7.10.0", + "python": "latest", + "cloudfoundry-cli": "8.7.10", + "shellcheck": "0.10.0", + "act": "0.2.62", + "go": "1.21.5", + "ruby": "3.3.1", + "ginkgo": "2.17.3", + "bundix": "latest", + "oha": "latest", + "google-cloud-sdk": "latest", + "temurin-bin-17": "latest", + "postgresql": "latest", + "glibcLocales": { + "version": "latest", + "platforms": ["x86_64-linux", "aarch64-linux"] + } + }, "shell": { "init_hook": [ "cf install-plugin -f $(which app-autoscaler-cli-plugin)", diff --git a/devbox.lock b/devbox.lock index d09b14340c..3413e2bbf7 100644 --- a/devbox.lock +++ b/devbox.lock @@ -389,6 +389,34 @@ } } }, + "glibcLocales@latest": { + "last_modified": "2024-05-12T16:19:40Z", + "resolved": "github:NixOS/nixpkgs/3281bec7174f679eabf584591e75979a258d8c40#glibcLocales", + "source": "devbox-search", + "version": "2.39-31", + "systems": { + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/7l54yzsqvvv4nl77dwqgijk4v0cdi4cp-glibc-locales-2.39-31", + "default": true + } + ], + "store_path": "/nix/store/7l54yzsqvvv4nl77dwqgijk4v0cdi4cp-glibc-locales-2.39-31" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/xx7dhm1wd49q1vmr1ix71a9pp5j33imd-glibc-locales-2.39-31", + "default": true + } + ], + "store_path": "/nix/store/xx7dhm1wd49q1vmr1ix71a9pp5j33imd-glibc-locales-2.39-31" + } + } + }, "gnumake@4.4": { "last_modified": "2024-03-18T12:38:16Z", "resolved": "github:NixOS/nixpkgs/e367f7a1fb93137af22a3908f00b9a35e2d286a7#gnumake", @@ -834,6 +862,115 @@ } } }, + "postgresql@latest": { + "last_modified": "2024-05-18T11:33:04Z", + "plugin_version": "0.0.2", + "resolved": "github:NixOS/nixpkgs/dc1b0202a60553747917379c5f1dea111a49153c#postgresql", + "source": "devbox-search", + "version": "15.6", + "systems": { + "aarch64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/hf37ss7zbnbmikwwwxqcy2qcpssd6r07-postgresql-15.6", + "default": true + }, + { + "name": "man", + "path": "/nix/store/9xfmv711wd5hynis7dxfrxxkj28mqxbv-postgresql-15.6-man", + "default": true + }, + { + "name": "doc", + "path": "/nix/store/sla8lgp7nyh0v9q3nrl18xb0zgvz9n51-postgresql-15.6-doc" + }, + { + "name": "lib", + "path": "/nix/store/9rr7271db1ar9nfhq54w4ynka139gzi9-postgresql-15.6-lib" + } + ], + "store_path": "/nix/store/hf37ss7zbnbmikwwwxqcy2qcpssd6r07-postgresql-15.6" + }, + "aarch64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/n4p239nfp5ravq7l4sb5637r0kl05pjf-postgresql-15.6", + "default": true + }, + { + "name": "man", + "path": "/nix/store/1ryba5708rjdx52y911l2vjcy5al7149-postgresql-15.6-man", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/y342j29cs5b26wsk0sblbsz4j61mv6q6-postgresql-15.6-debug" + }, + { + "name": "doc", + "path": "/nix/store/l5kii042xy5psx3lc1gslafb148rq76f-postgresql-15.6-doc" + }, + { + "name": "lib", + "path": "/nix/store/16ivm477m09rsjq1lh23vz2g01vz82ym-postgresql-15.6-lib" + } + ], + "store_path": "/nix/store/n4p239nfp5ravq7l4sb5637r0kl05pjf-postgresql-15.6" + }, + "x86_64-darwin": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/v0r2wr868mll94bmpcp2qlfs1n6hvx9r-postgresql-15.6", + "default": true + }, + { + "name": "man", + "path": "/nix/store/bph3x4zj8pd2j70drzv38g7fdpk6sqqa-postgresql-15.6-man", + "default": true + }, + { + "name": "lib", + "path": "/nix/store/l8504sv505kjnwzp393fj480h0s2jy6z-postgresql-15.6-lib" + }, + { + "name": "doc", + "path": "/nix/store/6m16izd6hfw16m9624nh7yh1c7q62h19-postgresql-15.6-doc" + } + ], + "store_path": "/nix/store/v0r2wr868mll94bmpcp2qlfs1n6hvx9r-postgresql-15.6" + }, + "x86_64-linux": { + "outputs": [ + { + "name": "out", + "path": "/nix/store/fjmy8i4daxjb6sxnsnwfbni00z08xs7r-postgresql-15.6", + "default": true + }, + { + "name": "man", + "path": "/nix/store/k7j3cmdpjc23cxd7axkc8j0yvq5cfhw5-postgresql-15.6-man", + "default": true + }, + { + "name": "debug", + "path": "/nix/store/a40v9ac0xrjvdcxrnhm1fyvnj411vj9c-postgresql-15.6-debug" + }, + { + "name": "doc", + "path": "/nix/store/zwkbfv20fswsf8ralxbc51k0qx2bsf63-postgresql-15.6-doc" + }, + { + "name": "lib", + "path": "/nix/store/b5y6zhpjgjbxdq4v7c8bk4hrhhs6f19m-postgresql-15.6-lib" + } + ], + "store_path": "/nix/store/fjmy8i4daxjb6sxnsnwfbni00z08xs7r-postgresql-15.6" + } + } + }, "pre-commit@latest": { "last_modified": "2024-03-17T01:03:25Z", "resolved": "github:NixOS/nixpkgs/299d4668ba61600311553920d9fd9c102145b2cb#pre-commit", diff --git a/local-flake/flake.nix b/local-flake/flake.nix index ff108fd774..61804f71c9 100644 --- a/local-flake/flake.nix +++ b/local-flake/flake.nix @@ -58,6 +58,30 @@ ldflags = ["-s" "-w" "-X main.version=${version}"]; }; + cloud-mta-build-tool = nixpkgsFor.${system}.buildGoModule rec { + pname = "Cloud MTA Build Tool"; + version = "1.2.26"; + + src = nixpkgsFor.${system}.fetchFromGitHub { + owner = "SAP"; + repo = "cloud-mta-build-tool"; + rev = "v${version}"; + hash = "sha256-DKZ9Nj/sNC9dRjyiu4MKjLrIJWluYlZzUHWqEqtrNt4="; + }; + + vendorHash = "sha256-h8LPsuxvbr/aRhH1vR1fYgBot37yrfiemZTJMKj0zbk="; + + ldflags = ["-s" "-w" "-X main.Version=${version}"]; + + doCheck = false; + + postInstall = '' + pushd "$out/bin" &> /dev/null + ln -s 'cloud-mta-build-tool' 'mbt' + popd + ''; + }; + uaac = nixpkgsFor.${system}.bundlerApp rec { pname = "cf-uaac"; gemdir = ./.; diff --git a/scripts/asdf2devbox.py b/scripts/asdf2devbox.py index 84604416e8..5ea7540e9f 100755 --- a/scripts/asdf2devbox.py +++ b/scripts/asdf2devbox.py @@ -11,10 +11,7 @@ def get_installed_version(package): with open(os.path.join(script_dir, '..', 'devbox.json'), 'r') as f: data = json.load(f) - for pkg in data['packages']: - if pkg.startswith(f"{package}@"): - return pkg.split('@')[1] - return None + return data['packages'][package] # Read the .tool-versions file and process each line if __name__ == "__main__":