diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6ac82bc5..44819f87 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Release on: push: branches: - - main + - rpm-pkg jobs: release: @@ -34,7 +34,7 @@ jobs: - name: Run Unit Tests for cos csi mounter run: sudo make ut-coverage -C ${{ matrix.package_dir }} - - name: Build Debian Package for cos csi mounter container + - name: Build Debian and RPM Packagesfor cos csi mounter container run: | cd ${{ matrix.package_dir }} make packages @@ -61,9 +61,11 @@ jobs: files: | /home/runner/work/ibm-object-csi-driver/ibm-object-csi-driver/cos-csi-mounter/cos-csi-mounter-${{ env.APP_VERSION }}.deb.tar.gz /home/runner/work/ibm-object-csi-driver/ibm-object-csi-driver/cos-csi-mounter/cos-csi-mounter-${{ env.APP_VERSION }}.deb.tar.gz.sha256 - tag_name: v1.0.1 - name: v1.0.1 - body: Generate debian package + /home/runner/work/ibm-object-csi-driver/ibm-object-csi-driver/cos-csi-mounter/cos-csi-mounter-${{ env.APP_VERSION }}.rpm.tar.gz + /home/runner/work/ibm-object-csi-driver/ibm-object-csi-driver/cos-csi-mounter/cos-csi-mounter-${{ env.APP_VERSION }}.rpm.tar.gz.sha256 + tag_name: v0.5.4 + name: v0.5.4 + body: Generate debian and rpm packages prerelease: ${{ env.IS_LATEST_RELEASE != 'true' }} - name: Perform CodeQL Analysis diff --git a/cos-csi-mounter/Makefile b/cos-csi-mounter/Makefile index 00e6c744..52d17326 100644 --- a/cos-csi-mounter/Makefile +++ b/cos-csi-mounter/Makefile @@ -8,8 +8,15 @@ MAINTAINER := "IKS Storage" DEB_ARCH := all DESCRIPTION := "IBM cos-csi-mounter service" -INSTALL_TAR_FILE := "$(NAME)-$(APP_VERSION).deb.tar.gz" -CHECKSUM_FILE := "$(INSTALL_TAR_FILE).sha256" +INSTALL_TAR_FILE_DEB := "$(NAME)-$(APP_VERSION).deb.tar.gz" +INSTALL_TAR_FILE_RPM := "$(NAME)-$(APP_VERSION).rpm.tar.gz" +CHECKSUM_FILE_DEB := "$(INSTALL_TAR_FILE_DEB).sha256" +CHECKSUM_FILE_RPM := "$(INSTALL_TAR_FILE_RPM).sha256" + +LICENSE := "IBM" +RPM_ARCH := x86_64 +RPM_RELEASE_NUM := 1 +REDHAT_SPEC := $(BUILD_DIR)/red-hat.spec test: go test -v -timeout 1800s -coverprofile=cover.out ./... @@ -43,19 +50,67 @@ deb-build: build-linux dpkg-deb --build $(BUILD_DIR) rm -rf $(BUILD_DIR) +rpm-build: +rpm-build: build-linux + rm -rf $(BUILD_DIR) + mkdir -p $(BUILD_DIR)/ + mkdir -p $(BUILD_DIR)/rpm/SOURCES/usr/local/bin $(BUILD_DIR)/rpm/SOURCES/etc/systemd/system $(BUILD_DIR)/rpm/SOURCES/etc/ibmcloud + cp install/cos-csi-mounter.service $(BUILD_DIR)/rpm/SOURCES/etc/systemd/system + cp install/share.conf $(BUILD_DIR)/rpm/SOURCES/etc/ibmcloud + cp ${BIN_DIR}/cos-csi-mounter-server $(BUILD_DIR)/rpm/SOURCES/usr/local/bin + + echo "Name: $(NAME)" > $(REDHAT_SPEC) + echo "Version: $(APP_VERSION)" >> $(REDHAT_SPEC) + echo "Release: $(RPM_RELEASE_NUM)" >> $(REDHAT_SPEC) + echo "Summary: $(DESCRIPTION)" >> $(REDHAT_SPEC) + echo "License: $(LICENSE)" >> $(REDHAT_SPEC) + echo "BuildArch: $(RPM_ARCH)" >> $(REDHAT_SPEC) + echo "Requires: mount.ibmshare = 0.1.1" >> $(REDHAT_SPEC) + echo "%define _rpmfilename $(NAME)-$(APP_VERSION).rpm" >> $(REDHAT_SPEC) + echo "%build" >> $(REDHAT_SPEC) + + echo "%install" >> $(REDHAT_SPEC) + echo "rm -rf %{buildroot}" >> $(REDHAT_SPEC) + echo "mkdir -p %{buildroot}/etc/systemd/system/" >> $(REDHAT_SPEC) + echo "mkdir -p %{buildroot}/usr/local/bin/" >> $(REDHAT_SPEC) + echo "mkdir -p %{buildroot}/etc/ibmcloud/" >> $(REDHAT_SPEC) + echo "cp -r %{_sourcedir}/* %{buildroot}/" >> $(REDHAT_SPEC) + + echo "%description" >> $(REDHAT_SPEC) + echo "This package provides the IBM Mount Share helper container service." + + echo "%files" >> $(REDHAT_SPEC) + echo "/etc/systemd/system/cos-csi-mounter.service" >> $(REDHAT_SPEC) + echo "/usr/local/bin/cos-csi-mounter-server" >> $(REDHAT_SPEC) + echo "/etc/ibmcloud/share.conf" >> $(REDHAT_SPEC) + + echo "%post" >> $(REDHAT_SPEC) + echo "systemctl enable cos-csi-mounter.service" >> $(REDHAT_SPEC) + echo "systemctl start cos-csi-mounter.service" >> $(REDHAT_SPEC) + + echo "%preun" >> $(REDHAT_SPEC) + echo "systemctl stop cos-csi-mounter.service || true" >> $(REDHAT_SPEC) + echo "systemctl disable cos-csi-mounter.service || true" >> $(REDHAT_SPEC) + + rpmbuild -ba --build-in-place --define "_topdir $(PWD)/$(BUILD_DIR)/rpm" $(REDHAT_SPEC) + cp $(BUILD_DIR)/rpm/RPMS/* ./ + rm -rf $(BUILD_DIR) tar-package: tar-package: mkdir packages cp ${NAME}-* packages/ - cd packages && tar -czvf ../$(INSTALL_TAR_FILE) * - sha256sum $(INSTALL_TAR_FILE) > $(CHECKSUM_FILE) - @printf "Production - Install package created ok: $(INSTALL_TAR_FILE)\n" + cd packages && \ + tar -czvf ../$(INSTALL_TAR_FILE_DEB) *.deb && \ + tar -czvf ../$(INSTALL_TAR_FILE_RPM) *.rpm + sha256sum $(INSTALL_TAR_FILE_DEB) > $(CHECKSUM_FILE_DEB) + sha256sum $(INSTALL_TAR_FILE_RPM) > $(CHECKSUM_FILE_RPM) + @printf "Production - Install package created ok: $(INSTALL_TAR_FILE_DEB) and $(INSTALL_TAR_FILE_RPM)\n" clean: rm -rf ${BIN_DIR} - rm *.deb + rm *.deb *.rpm rm -rf packages packages: -packages: deb-build tar-package clean \ No newline at end of file +packages: deb-build rpm-build tar-package clean \ No newline at end of file diff --git a/go.mod b/go.mod index 8f36d7fb..0eb40968 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/IBM/go-sdk-core/v5 v5.20.1 github.com/IBM/ibm-cos-sdk-go v1.12.2 github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0 - github.com/IBM/ibm-csi-common v1.1.20 + github.com/IBM/ibm-csi-common v1.1.21 github.com/IBM/ibmcloud-volume-interface v1.2.20 github.com/aws/aws-sdk-go v1.55.7 github.com/container-storage-interface/spec v1.11.0 @@ -33,7 +33,7 @@ require ( require ( cel.dev/expr v0.23.0 // indirect github.com/BurntSushi/toml v1.0.0 // indirect - github.com/IBM/secret-utils-lib v1.1.13 // indirect + github.com/IBM/secret-utils-lib v1.1.14 // indirect github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.0 // indirect diff --git a/go.sum b/go.sum index ecb7feb1..03bd71d6 100644 --- a/go.sum +++ b/go.sum @@ -8,12 +8,12 @@ github.com/IBM/ibm-cos-sdk-go v1.12.2 h1:71A4tDl8u6BZ548h71ecEe7fw5bBA7ECTVqYmeS github.com/IBM/ibm-cos-sdk-go v1.12.2/go.mod h1:ODYcmrmdpjo5hVguq9RbD6xmC8xb1XZMG7NefUbJNcc= github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0 h1:956Nqk0eKI3lq+AkzWXZDid4UZHRz0wWh1LwkleBsWk= github.com/IBM/ibm-cos-sdk-go-config/v2 v2.3.0/go.mod h1:chnQxV+i38wD0aIi4KNU5bP2uzPtc7EHqB3/8Rhyjlg= -github.com/IBM/ibm-csi-common v1.1.20 h1:83tWmb+39G/Mm4E9nZwn5/EL0SMcyEyLJDN6hAS4eg4= -github.com/IBM/ibm-csi-common v1.1.20/go.mod h1:z9U3OmpKN92eUVdhhdbrr5kAT3MPRT9xwr6MVltLBFI= +github.com/IBM/ibm-csi-common v1.1.21 h1:/OmjpF+YgmkLmtehFmmfWp9kHGP9iMNkTU/KQDYXzrY= +github.com/IBM/ibm-csi-common v1.1.21/go.mod h1:AgjHhkYgDwYz1OmFGTgtOv+GCMsD67Yel+ZKsY90PYY= github.com/IBM/ibmcloud-volume-interface v1.2.20 h1:VZlP9fhFLX3evH9QlcXulYX4v4GNeTtbW7nl4Chg+ls= github.com/IBM/ibmcloud-volume-interface v1.2.20/go.mod h1:PMe4wOp+EEkVNwlo/iJahh+6/aIvjWo+nAdHB1oGBFE= -github.com/IBM/secret-utils-lib v1.1.13 h1:osQPjQh16fx8N0fZiPeZyXCyPYtuB1VoV/3HAxZ+Ep4= -github.com/IBM/secret-utils-lib v1.1.13/go.mod h1:oQLxbIMLCk8tVFxp0SEQqa80VTOyY52ZP10ZY2AuD98= +github.com/IBM/secret-utils-lib v1.1.14 h1:Gv5Ca2hZTQMr9+PkOq7AE2lUUnNEeQJ0uiKaxKT1Sdk= +github.com/IBM/secret-utils-lib v1.1.14/go.mod h1:wAAmS6JOrgcASOuyDkclmxWdKMcbVxshW5QWlMn21X8= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab h1:UKkYhof1njT1/xq4SEg5z+VpTgjmNeHwPGRQl7takDI= github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=