diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..a30ddb3 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,58 @@ +name: Publish image + +on: + workflow_dispatch: + inputs: + vendor: + description: Select the vendor image to publish on docker.io + type: choice + default: '' + required: true + options: + - postgres + - mysql + - sqlserver + vendorVersion: + description: Set the vendor specific version folder + type: string + default: '' + required: true + imageVersion: + description: Set the image version to publish on docker.io + type: string + default: '' + required: true + isLatest: + description: Publish a latest tag for this image + type: boolean + default: true + required: true + +env: + REGISTRY: docker.io + DOCKER_IO_REGISTRY_USER: bonitadev + IMAGE_NAME: bonitasoft/bonita-${{ github.event.inputs.vendor }} + +jobs: + build-and-publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Login to docker.io registry + uses: docker/login-action@v3 + with: + registry: docker.io + username: ${{ env.DOCKER_IO_REGISTRY_USER }} + password: ${{ secrets.DOCKER_IO_REGISTRY_PASSWORD }} + - name: Build image + run: docker build -t ${{ env.IMAGE_NAME }}:${{ github.event.inputs.imageVersion }} ${{ github.event.inputs.vendor }}/${{ github.event.inputs.imageVersion }} + - name: Publish to docker.io + run: | + docker push ${{ env.IMAGE_NAME }} + - name: Publish as latest to docker.io + if: {{ github.event.inputs.isLatest }} + run: | + docker tag ${{ env.IMAGE_NAME }}:${{ github.event.inputs.imageVersion }} ${{ env.IMAGE_NAME }}:latest + docker publish ${{ env.IMAGE_NAME }}:latest + + \ No newline at end of file diff --git a/README.md b/README.md index 4888d4b..5b4af71 100644 --- a/README.md +++ b/README.md @@ -33,20 +33,9 @@ For instance with PostgreSQL: `docker build -t bonitasoft/bonita-postgres:15.4 . ## Publish images on Docker Hub -Requires to have the image built locally. +Use the publication Github action: -1. Login onto Docker Hub with account `bonitadev` (see Keeper for account credentials): - - ```shell - docker login -u bonitadev docker.io - ``` - -2. Push the image and its tagged name + latest tag: - - ```shell - docker push bonitasoft/bonita-: - docker tag bonitasoft/bonita-: bonitasoft/bonita-:latest - docker push bonitasoft/bonita-:latest - ``` - -3. Ensure the images are pushed, accessing https://hub.docker.com/u/bonitasoft and checking tags are there. +* Select the database vendor +* Set the vendor version folder +* Set an image version +* Set if this version should be tagged as latest