| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| name: Create Release Candidate |
| run-name: ${{ github.actor }} is executing Create Release Candidate |
| permissions: |
| contents: write |
| |
| on: |
| workflow_dispatch: |
| inputs: |
| releasecandidatetag: |
| description: 'Release Candidate Tag' |
| default: 'RC0' |
| required: true |
| |
| jobs: |
| createReleaseCandidate: |
| runs-on: ubuntu-22.04 |
| steps: |
| - name: Init Release Candidate workflow |
| run: echo "Starting Apache ManifoldCF workflow for building ${{ github.event.inputs.releasecandidatetag }}" |
| |
| - name: Checkout |
| uses: actions/checkout@v4.1.7 |
| |
| - name: Set up OpenJDK 11 Temurin x64 |
| uses: actions/setup-java@v4.2.1 |
| with: |
| java-version: '11' |
| distribution: 'temurin' |
| architecture: x64 |
| cache: maven |
| gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }} |
| gpg-passphrase: GPG_PASSPHRASE |
| |
| - name: Get Maven POM version |
| id: mavenProjectVersion |
| run: echo "version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT |
| |
| - name: Initialize mandatory git config |
| env: |
| GH_TOKEN: ${{ github.token }} |
| run: | |
| git config user.name "$(gh api /users/${GITHUB_ACTOR} | jq .name -r)" |
| git config user.email ${GITHUB_ACTOR_ID}+${GITHUB_ACTOR}@users.noreply.github.com |
| |
| - name: Create Branch Version |
| id: branchVersion |
| run: | |
| currentMavenVersion="${{ steps.mavenProjectVersion.outputs.version }}" |
| suffixToRemove="SNAPSHOT" |
| branchVersion=${currentMavenVersion%"$suffixToRemove"} |
| echo "version=${branchVersion}" >> $GITHUB_OUTPUT |
| |
| - name: Set Branch Tag output |
| id: branchTag |
| run: echo "tag=${{ steps.branchVersion.outputs.version }}${{ github.event.inputs.releasecandidatetag }}" >> $GITHUB_OUTPUT |
| |
| - name: Create new release candidate branch |
| run: | |
| git branch release-${{ steps.branchTag.outputs.tag }} |
| git push --set-upstream origin release-${{ steps.branchTag.outputs.tag }} |
| git checkout release-${{ steps.branchTag.outputs.tag }} |
| |
| - name: Update all the Maven modules with the new version |
| run: mvn versions:set -DnewVersion=${{ steps.mavenProjectVersion.outputs.version }} -DremoveSnapshot -DgenerateBackupPoms=false |
| |
| - name: Update Ant script with the new RC version |
| run: sed -i 's/${{ steps.mavenProjectVersion.outputs.version }}-dev/${{ steps.mavenProjectVersion.outputs.version }}/g' build.xml; |
| |
| - name: Update CHANGES.txt |
| run: sed -i 's/${{ steps.mavenProjectVersion.outputs.version }}-dev/Release ${{ steps.mavenProjectVersion.outputs.version }}/g' CHANGES.txt; |
| |
| - name: Ant Build |
| run: ant make-core-deps make-deps image |
| |
| - name: Maven Build |
| run: mvn clean install -B -DskipTests -DskipITs |
| |
| - name: RAT licence checks |
| run: mvn -pl . apache-rat:check |
| |
| - name: Generate RAT License Report |
| if: always() |
| run: | |
| echo -e "Printing RAT report\n" |
| cat target/rat.txt || true |
| |
| - name: Commit and Push |
| run: | |
| find . -name 'pom.xml' -exec git add {} \; |
| git add CHANGES.txt build.xml |
| git commit -am "Create ${{ github.event.inputs.releasecandidatetag }} tag for MCF ${{ steps.mavenProjectVersion.outputs.version }}" |
| git push |
| |
| - name: Create Release Candidate |
| id: create_release_candidate |
| uses: actions/create-release@v1.1.4 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| tag_name: ${{ steps.branchTag.outputs.tag }} |
| release_name: Release Candidate ${{ steps.branchTag.outputs.tag }} |
| body: | |
| Release Candidate ${{ steps.branchTag.outputs.tag }} |
| draft: false |
| prerelease: true |
| |
| - name: Set Artifact version output |
| id: artifactVersion |
| run: echo "version=${{ steps.branchVersion.outputs.version }}dev" >> $GITHUB_OUTPUT |
| |
| - name: Rename KEYS and CHANGES.txt artifacts |
| run: | |
| cp KEYS apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.KEYS |
| cp CHANGES.txt apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.CHANGES.txt |
| |
| - name: Upload artifacts - KEYS - text format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.KEYS |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.KEYS |
| |
| - name: Upload Release Candidate Asset - KEYS |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.KEYS |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.KEYS |
| asset_content_type: text/plain |
| |
| - name: Upload artifacts - CHANGES |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.CHANGES.txt |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.CHANGES.txt |
| |
| - name: Upload Release Candidate Asset - CHANGES |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.CHANGES.txt |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}.CHANGES.txt |
| asset_content_type: text/plain |
| |
| - name: Upload artifacts - Binary - zip format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.zip |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.zip |
| |
| - name: Upload Release Candidate Asset - Binary - zip format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.zip |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.zip |
| asset_content_type: application/zip |
| |
| - name: Upload artifacts - Binary - tar.gz format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.tar.gz |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.tar.gz |
| |
| - name: Upload Release Candidate Asset - Binary - tar.gz format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.tar.gz |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-bin.tar.gz |
| asset_content_type: application/gzip |
| |
| - name: Upload artifacts - Lib - tar.gz format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.tar.gz |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.tar.gz |
| |
| - name: Upload Release Candidate Asset - Lib - tar.gz format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.tar.gz |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.tar.gz |
| asset_content_type: application/gzip |
| |
| - name: Upload artifacts - Lib - zip format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.zip |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.zip |
| |
| - name: Upload Release Candidate Asset - Lib - zip format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.zip |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-lib.zip |
| asset_content_type: application/zip |
| |
| - name: Upload artifacts - Source code - tar.gz format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.tar.gz |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.tar.gz |
| |
| - name: Upload Release Candidate Asset - Source code - tar.gz format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.tar.gz |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.tar.gz |
| asset_content_type: application/gzip |
| |
| - name: Upload artifacts - Source code - zip format |
| uses: actions/upload-artifact@v4.3.3 |
| with: |
| name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.zip |
| path: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.zip |
| |
| - name: Upload Release Candidate Asset - Source code - zip format |
| uses: actions/upload-release-asset@v1.0.2 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ steps.create_release_candidate.outputs.upload_url }} |
| asset_path: ./apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.zip |
| asset_name: apache-manifoldcf-${{ steps.artifactVersion.outputs.version }}-src.zip |
| asset_content_type: application/zip |
| |
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@v3.0.0 |
| |
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@v3.3.0 |
| |
| - name: Login to Docker Hub |
| uses: docker/login-action@v3.2.0 |
| with: |
| username: ${{ secrets.DOCKERHUB_USER }} |
| password: ${{ secrets.DOCKERHUB_TOKEN }} |
| |
| - name: Docker meta |
| id: meta |
| uses: docker/metadata-action@v5.5.1 |
| with: |
| images: apache/manifoldcf |
| labels: | |
| maintainer=Apache ManifoldCF Developers <dev@manifoldcf.apache.org> |
| org.opencontainers.image.title=Apache ManifoldCF |
| org.opencontainers.image.description=Apache ManifoldCF is a multi-repository crawler framework, with multiple connectors. |
| org.opencontainers.image.vendor=Apache Software Foundation |
| org.opencontainers.image.ref.name=manifoldcf |
| org.opencontainers.image.authors=Apache ManifoldCF Developers <dev@manifoldcf.apache.org> |
| org.opencontainers.image.url=https://hub.docker.com/r/apache/manifoldcf |
| org.opencontainers.image.source=https://github.com/apache/manifoldcf/blob/trunk/Dockerfile |
| org.opencontainers.image.documentation=https://hub.docker.com/r/apache/manifoldcf |
| org.opencontainers.image.version=${{ steps.branchTag.outputs.tag }} |
| org.opencontainers.image.licenses=Apache-2.0 |
| |
| - name: Update Docker Image tag |
| run: sed -i 's/SNAPSHOT/${{ github.event.inputs.releasecandidatetag }}/g' Dockerfile; |
| |
| - name: Build and push ManifoldCF Docker Image |
| uses: docker/build-push-action@v6.0.0 |
| with: |
| context: . |
| file: Dockerfile |
| platforms: linux/amd64,linux/arm64/v8 |
| push: true |
| tags: apache/manifoldcf:latest,apache/manifoldcf:${{ steps.branchTag.outputs.tag }} |
| labels: ${{ steps.meta.outputs.labels }} |