diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index daf335f0..1f0d9f97 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v3 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 @@ -34,12 +34,12 @@ jobs: - name: Compress run: tar -czvf abrootv2.tar.gz abrootv2 - - uses: "marvinpinto/action-automatic-releases@latest" + - uses: softprops/action-gh-release@v1 with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "continuous" + token: "${{ secrets.GITHUB_TOKEN }}" + tag_name: "continuous" prerelease: true - title: "Continuous Build" + name: "Continuous Build" files: | abrootv2.tar.gz sonar: diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml new file mode 100644 index 00000000..b3aaeafd --- /dev/null +++ b/.github/workflows/goreleaser.yml @@ -0,0 +1,28 @@ +name: goreleaser + +on: + push: + tags: + - '*' + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Go + uses: actions/setup-go@v4 + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v4 + with: + # either 'goreleaser' (default) or 'goreleaser-pro' + distribution: goreleaser + version: latest + args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' distribution + # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} diff --git a/core/oci.go b/core/oci.go index 016b7cdf..f2c2ed71 100644 --- a/core/oci.go +++ b/core/oci.go @@ -20,6 +20,7 @@ import ( "path/filepath" "github.com/containers/buildah" + cstypes "github.com/containers/storage/types" "github.com/vanilla-os/abroot/settings" "github.com/vanilla-os/prometheus" ) @@ -146,7 +147,7 @@ func FindImageWithLabel(key, value string) (string, error) { return "", nil } -// DeleteImageForRoot retrieves the image created for the provided root ("vos-a"|"vos-b") +// RetrieveImageForRoot retrieves the image created for the provided root ("vos-a"|"vos-b") func RetrieveImageForRoot(root string) (string, error) { PrintVerbose("ApplyInImageForRoot: running...") @@ -178,7 +179,7 @@ func DeleteImageForRoot(root string) error { } _, err = pt.Store.DeleteImage(image, true) - if err != nil { + if err != nil && err != cstypes.ErrNotAnImage { PrintVerbose("DeleteImageForRoot:err(3): %s", err) return err } diff --git a/core/packages.go b/core/packages.go index 6e474775..ed9cb8a1 100644 --- a/core/packages.go +++ b/core/packages.go @@ -84,6 +84,19 @@ func NewPackageManager() *PackageManager { } } + _, err = os.Stat(filepath.Join(PackagesBaseDir, PackagesUnstagedFile)) + if err != nil { + err = os.WriteFile( + filepath.Join(PackagesBaseDir, PackagesUnstagedFile), + []byte(""), + 0644, + ) + if err != nil { + PrintVerbose("PackageManager.NewPackageManager:err: " + err.Error()) + panic(err) + } + } + return &PackageManager{} } diff --git a/core/system.go b/core/system.go index 8368839a..4165a5cf 100644 --- a/core/system.go +++ b/core/system.go @@ -453,6 +453,10 @@ func (s *ABSystem) RunOperation(operation ABSystemOperation) error { PrintVerbose("ABSystemRunOperation:err(3.3): %s", err) return err } + // Handle case where an image for the current root may not exist in storage + if imageName == "" { + imageName = settings.Cnf.FullImageName + } } else { imageName = strings.Split(settings.Cnf.FullImageName, ":")[0] + "@" + imageDigest labels["ABRoot.BaseImageDigest"] = s.CurImage.Digest