Skip to Content
Personal Insights
Author's profile photo Lars Hvam

Storing ABAP build artifacts in OCI registry

Huh? Are there actual build artifacts in ABAP?

 

Well, inside the traditional SAP ABAP systems, everything is stored in the database, and everything is compiled automatically.

However, outside the system, eg. storing files with abapGit fit is possible to transmogrify artifacts, examples:

This gives new files, which can also be stored in git. But, sometimes on GitHub, it is difficult to reuse files across multiple private repositories. Sharing in other ecosystems is typically done via a central registry/artifact store like npm or Maven.

 

ORAS can be used to store any files in a OCI registry. It is a sandbox project under Cloud Native Computing Foundation, creating open specifications and tools. Much like the docker cli, it can push and pull files to a registry.

Many git/hosting providers offer OCI registries, so you most likely have a registry part of your infrastructure already.

 

For testing, I created a GitHub action,

https://github.com/larshp/oras-test/blob/main/.github/workflows/test.yml

That automatically stores a hello world text file to

https://github.com/larshp/oras-test/pkgs/container/oras-test%2Foras-test

 

🤠

Assigned Tags

      5 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Enno Wulff
      Enno Wulff

      If there are no comments under an article of Lars Hvam it usually does not mean that it's bad content but rather no one understands the technique... 😂

      But, sometimes on GitHub, it is difficult to reuse files across multiple private repositories. Sharing in other ecosystems is typically done via a central registry/artifact store like npm or Maven.

      That means, ORAS acts like another file storage container? Could you give me an example why and how this technique could be useful?

      Author's profile photo Lars Hvam
      Lars Hvam
      Blog Post Author

      Yes, ORAS can be seen as just a file container, which can be stored in a OCI registry.

      A use-case: https://github.com/SAP/abap-file-formats-tools is written in v754 syntax, to run this standalone with open-abap, it first needs to be downported to 702, which(currently, because I'm lazy) takes several minutes. The idea is to publish the downport to GitHub OCI after each merge, so the downported code can be used in https://github.com/SAP/abap-file-formats

      Kind of like NPM works, compile the code, publish to a registry. But this can be decentralized, and its ABAP code.

      Plus pushing and pulling OCI does not require special access tokens, its a typical workflow(outside the ABAP world)

      Author's profile photo Enno Wulff
      Enno Wulff

      Thanks for the explanation, Lars Hvam !

      Still I do not get why the files need to be transferred to another "container". Why shouldn't the downported files be read from github (separate folder for each version)?

      Author's profile photo Lars Hvam
      Lars Hvam
      Blog Post Author

      I guess most would choose to only maintain the latest version in high syntax, the downported code becomes derived from the latest, and you want to only store one latest version of the truth in git.

      abapGit does store the build in https://github.com/abapGit/build, however, writing to this repository requires a setup with private keys. Writing to, and reading from (including private repositories) works out of the box, without any key setup.

      Author's profile photo Gabor Toldi
      Gabor Toldi

      Hello Enno,

       

      if i understand it right, you can so also build software for different ABAP Versions. What is interessting as supplier of an add on.

       

      Kind Regards,

       

      Gabor Toldi