diff --git a/.github/workflows/build-fb-image.yaml b/.github/workflows/build-fb-image.yaml index 0ad4f58b3..7da1199e5 100644 --- a/.github/workflows/build-fb-image.yaml +++ b/.github/workflows/build-fb-image.yaml @@ -1,24 +1,12 @@ name: Building Fluent Bit image on: - push: - branches: - - 'master' - tags: - - 'v*' - paths: - - ".github/workflows/build-fb-image.yaml" - - "cmd/fluent-watcher/fluentbit/**" - - "cmd/fluent-watcher/hooks/**" - - "pkg/filenotify/**" - pull_request: - branches: - - "master" - paths: - - ".github/workflows/build-fb-image.yaml" - - "cmd/fluent-watcher/fluentbit/**" - - "cmd/fluent-watcher/hooks/**" - - "pkg/filenotify/**" + workflow_dispatch: + inputs: + docker_tag_version: + description: 'Fluent Bit image release version' + required: true + default: '3.0.4' env: DOCKER_REPO: 'kubesphere' @@ -38,10 +26,21 @@ jobs: DOCKER_IMG_NAME: ${{ steps.set-outputs.outputs.DOCKER_IMG_NAME }} version: ${{ steps.image-metadata.outputs.version }} tags: ${{ steps.image-metadata.outputs.tags }} + release_tags: ${{ steps.image-tags.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} steps: - name: Checkout code uses: actions/checkout@v4 + + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV - name: docker metadata for building id: image-metadata @@ -50,11 +49,25 @@ jobs: images: "ghcr.io/${{ env.GITHUB_IMAGE }}" tags: | raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} + + - name: docker tags for cloning + id: image-tags + uses: docker/metadata-action@v5 + with: + tags: | + raw,latest + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -71,10 +84,21 @@ jobs: version: ${{ steps.image-metadata.outputs.version }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} + release_tags: ${{ steps.image-tags.outputs.tags }} steps: - name: Checkout code uses: actions/checkout@v4 + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV + - name: docker metadata id: image-metadata uses: docker/metadata-action@v5 @@ -84,12 +108,27 @@ jobs: latest=false suffix=-debug tags: | - raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} + + - name: docker tags for cloning + id: image-tags + uses: docker/metadata-action@v5 + with: + flavor: | + latest=false + suffix=-debug + tags: | + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -213,7 +252,7 @@ jobs: target_image: "${{ needs.build-prod-image-metadata.outputs.DOCKER_IMG_NAME }}" target_registry: docker.io platforms: "['linux/arm64', 'linux/amd64']" - is_latest: true + tags: ${{ needs.build-prod-image-metadata.outputs.release_tags }} secrets: source_registry_username: ${{ github.actor }} source_registry_token: ${{ secrets.GITHUB_TOKEN }} @@ -233,8 +272,7 @@ jobs: target_image: "${{ needs.build-debug-image-metadata.outputs.DOCKER_IMG_NAME }}" target_registry: docker.io platforms: "['linux/arm64', 'linux/amd64']" - is_latest: false - suffix: "-debug" + tags: ${{ needs.build-debug-image-metadata.outputs.release_tags }} secrets: source_registry_username: ${{ github.actor }} source_registry_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build-fd-image.yaml b/.github/workflows/build-fd-image.yaml index cb5f7d4cd..6e3275f7d 100644 --- a/.github/workflows/build-fd-image.yaml +++ b/.github/workflows/build-fd-image.yaml @@ -1,16 +1,12 @@ name: Building Fluentd image on: - push: - branches: - - 'master' - tags: - - 'v*' - paths: - - ".github/workflows/build-fd-image.yaml" - - "cmd/fluent-watcher/fluentd/**" - - "cmd/fluent-watcher/hooks/**" - - "pkg/filenotify/**" + workflow_dispatch: + inputs: + docker_tag_version: + description: 'Fluentd image release version' + required: true + default: '1.15.3' env: DOCKER_REPO: 'kubesphere' @@ -34,6 +30,16 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV - name: docker metadata for amd64 id: image-metadata @@ -45,11 +51,12 @@ jobs: suffix=-amd64 tags: | raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -67,6 +74,16 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV - name: docker metadata for arm64 id: image-metadata @@ -78,11 +95,12 @@ jobs: suffix=-arm64 tags: | raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -98,9 +116,20 @@ jobs: version: ${{ steps.image-metadata.outputs.version }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} + release_tags: ${{ steps.image-tags.outputs.tags }} steps: - name: Checkout code uses: actions/checkout@v4 + + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV - name: docker metadata for arm64 base image id: image-metadata @@ -111,12 +140,26 @@ jobs: latest=false suffix=-arm64-base tags: | - raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} + - name: docker metadata for arm64 base image + id: image-tags + uses: docker/metadata-action@v5 + with: + flavor: | + latest=false + suffix=-arm64-base + tags: | + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -221,8 +264,7 @@ jobs: target_image: "${{ needs.build-arm64-base-image-metadata.outputs.DOCKER_IMG_NAME }}" target_registry: docker.io platforms: "['linux/arm64']" - is_latest: false - suffix: "-arm64-base" + tags: ${{ needs.build-arm64-base-image-metadata.outputs.release_tags }} secrets: source_registry_username: ${{ github.actor }} source_registry_token: ${{ secrets.GITHUB_TOKEN }} @@ -291,12 +333,24 @@ jobs: version: ${{ steps.image-metadata.outputs.version }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} + release_tags: ${{ steps.image-tags.outputs.tags }} + steps: - uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract version parts + id: extract_version + run: | + VERSION=${{ github.event.inputs.docker_tag_version }} + VERSION_WITHOUT_V=${VERSION#v} + MAJOR_MINOR=$(echo $VERSION_WITHOUT_V | cut -d. -f1-2) + + echo "VERSION_WITHOUT_V=$VERSION_WITHOUT_V" >> $GITHUB_ENV + echo "MAJOR_MINOR=$MAJOR_MINOR" >> $GITHUB_ENV - name: docker metadata for manifest id: image-metadata @@ -304,12 +358,24 @@ jobs: with: images: "ghcr.io/${{ env.GITHUB_IMAGE }}" tags: | - raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} + + - name: docker tags for cloning + id: image-tags + uses: docker/metadata-action@v5 + with: + tags: | + type=raw,value=${{ github.event.inputs.docker_tag_version }} + type=raw,value=v${{ github.event.inputs.docker_tag_version }} + type=raw,value=${{ env.MAJOR_MINOR }} + type=raw,value=v${{ env.MAJOR_MINOR }} + env: + MAJOR_MINOR: ${{ env.MAJOR_MINOR }} - name: Set outputs id: set-outputs @@ -352,7 +418,7 @@ jobs: target_image: "${{ needs.prod-image-manifest.outputs.DOCKER_IMG_NAME }}" target_registry: docker.io platforms: "['linux/arm64', 'linux/amd64']" - is_latest: true + tags: ${{ needs.prod-image-manifest.outputs.release_tags }} secrets: source_registry_username: ${{ github.actor }} source_registry_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build-op-image.yaml b/.github/workflows/build-op-image.yaml index ed497f5ab..41cb5237e 100644 --- a/.github/workflows/build-op-image.yaml +++ b/.github/workflows/build-op-image.yaml @@ -53,6 +53,7 @@ jobs: version: ${{ steps.image-metadata.outputs.version }} tags: ${{ steps.image-metadata.outputs.tags }} labels: ${{ steps.image-metadata.outputs.labels }} + release_tags: ${{ steps.image-tags.outputs.tags }} steps: - name: Checkout code @@ -71,6 +72,18 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} + - name: docker tags for cloning + id: image-tags + uses: docker/metadata-action@v5 + with: + tags: | + raw,latest + type=ref,event=branch + type=ref,event=pr + type=ref,event=tag + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + - name: Set outputs id: set-outputs run: | @@ -140,6 +153,7 @@ jobs: target_image: "${{ needs.build-image-metadata.outputs.DOCKER_IMG_NAME }}" target_registry: docker.io platforms: "['linux/arm64', 'linux/amd64']" + tags: ${{ needs.build-image-metadata.outputs.release_tags }} secrets: source_registry_username: ${{ github.actor }} source_registry_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/clone-docker-image-action.yaml b/.github/workflows/clone-docker-image-action.yaml index 5547eb3c2..2f769e283 100644 --- a/.github/workflows/clone-docker-image-action.yaml +++ b/.github/workflows/clone-docker-image-action.yaml @@ -24,16 +24,10 @@ required: false type: string default: '["linux/arm64", "linux/amd64"]' - suffix: - description: 'The suffix to append to the target image' + tags: + description: 'The tags to apply to the target image' required: false type: string - default: '' - is_latest: - description: 'Whether to tag the image as latest' - required: false - type: boolean - default: false secrets: source_registry_token: description: The Github token or similar to authenticate with for the registry. @@ -73,27 +67,17 @@ outputs: tags: ${{ steps.tags-converter.outputs.TAGS }} steps: - - name: docker metadata for tags - id: tags-metadata - uses: docker/metadata-action@v5 - with: - flavor: | - latest=${{ inputs.is_latest }} - suffix=${{ inputs.suffix }} - tags: | - raw,latest - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} + - name: determine tags + id: display-tags + run: | + echo "input tags: ${{ inputs.tags }}" - name: Convert tags to JSON array id: tags-converter run: | # Get the line-separated list of tags - TAGS="${{ steps.tags-metadata.outputs.tags }}" + TAGS="${{ inputs.tags }}" # Initialize an empty array JSON_TAGS="[" @@ -103,11 +87,12 @@ JSON_TAGS+="\"$tag\"," done <<< "$TAGS" - # print the JSON array - echo "TAGS=$JSON_TAGS" - # Remove the trailing comma and close the array JSON_TAGS="${JSON_TAGS%,}]" + + # print the JSON array + echo "TAGS=$JSON_TAGS" + # Output the JSON array echo "TAGS=$JSON_TAGS" >> $GITHUB_OUTPUT