From b38a719d2a6ed5e65f16747235f745b6303325aa Mon Sep 17 00:00:00 2001 From: Joe Martin Date: Fri, 10 Jan 2025 10:20:37 -0800 Subject: [PATCH] Consolidate workflows --- .github/workflows/build-docker.yml | 205 ------------------------ .github/workflows/create-prerelease.yml | 6 +- 2 files changed, 1 insertion(+), 210 deletions(-) delete mode 100644 .github/workflows/build-docker.yml diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml deleted file mode 100644 index 2d73c8b..0000000 --- a/.github/workflows/build-docker.yml +++ /dev/null @@ -1,205 +0,0 @@ -name: Build Docker -on: - push: - branches: - - main - tags: - - 'v*.*.*' - pull_request: - branches: - - main - workflow_dispatch: - inputs: - version: - description: 'Version to build and deploy' - required: false - is_release: - description: 'Is this a release build?' - required: false - default: false - type: boolean - -env: - REPO: 'artifact.aerospike.io/ecosystem-container-dev-local' - JFROG_CLI_BUILD_NAME: 'asvec' - JFROG_CLI_LOG_LEVEL: DEBUG - JFROG_CLI_BUILD_PROJECT: 'ecosystem' -jobs: - build-and-push: - runs-on: ubuntu-latest - - steps: - - name: Checkout Code - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - with: - platforms: all - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - - - name: Install JFrog CLI - uses: jfrog/setup-jfrog-cli@v4 - with: - version: 'latest' - - - name: Login to Artifact Aerospike Docker Registry - run: | - jf docker login artifact.aerospike.io --username ${{ secrets.JFROG_USERNAME }} --password ${{ secrets.JFROG_ACCESS_TOKEN }} - env: - JFROG_CLI_OFFER_CONFIG: 'false' - - - name: Configure JFrog CLI - run: | - jf c add \ - --url https://artifact.aerospike.io/ \ - --user ${{ secrets.JFROG_USERNAME }} \ - --access-token ${{ secrets.JFROG_ACCESS_TOKEN }} \ - artifact - - jf c use artifact - env: - JFROG_CLI_OFFER_CONFIG: 'false' - - - name: Set Version - run: | - # Initialize variables - VERSION_ARG="" - VERSION="" - IS_RELEASE="${{ github.event.inputs.is_release }}" - - if [[ "${GITHUB_REF}" == refs/tags/* ]]; then - # On tag push: Use the tag name as the version - VERSION="${GITHUB_REF#refs/tags/}" - elif [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - # On manual trigger - if [ -n "${{ github.event.inputs.version }}" ]; then - VERSION_ARG="${{ github.event.inputs.version }}" - else - # If no version input provided, default to RELEASE file - VERSION_ARG=$(cat RELEASE) - fi - - if [ "${IS_RELEASE}" == 'true' ]; then - # If release checkbox is checked, use version directly - VERSION="${VERSION_ARG}" - else - # If not release, append build ID - VERSION="${VERSION_ARG}-${GITHUB_RUN_NUMBER}" - fi - else - # In all other cases: Use RELEASE file content appended with build ID - VERSION_ARG=$(cat RELEASE) - VERSION="${VERSION_ARG}-${GITHUB_RUN_NUMBER}" - fi - - echo "VERSION=${VERSION}" >> $GITHUB_ENV - - name: Build Docker Image (No Push) - if: github.event_name == 'pull_request' - run: | - jf docker buildx bake \ - --set asvec.tags.0=asvec:test-${{ github.run_id }} \ - --file docker/asvec.docker/bake.hcl \ - - env: - DOCKER_BUILDKIT: '1' - - - name: Build and Push Docker Image - if: github.event_name == 'workflow_dispatch' || github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) - run: | - jf docker buildx bake \ - --set asvec.tags=${{ env.REPO }}/asvec:${{ env.VERSION }} \ - --file docker/asvec.docker/bake.hcl \ - --push \ - --metadata-file=build-metadata - - env: - DOCKER_BUILDKIT: '1' - - - - name: Install jq - run: sudo apt-get update && sudo apt-get install -y jq - - - name: Extract Image Name and Digest - run: | - jq -r '.[] | {digest: .["containerimage.digest"], names: .["image.name"] | split(",")} | "(.digest)"' build-metadata > sha - echo ${{ env.REPO }}/asvec:${{ env.VERSION }}@$(cat sha) > meta-info - echo ${{ env.REPO }}/asvec:${{ env.VERSION }}@$(cat sha) > meta-info-latest - - - name: Create Docker Build Info - run: | - - jf rt build-docker-create \ - --build-name "${{ env.JFROG_CLI_BUILD_NAME }}-container" \ - --build-number "${{ env.VERSION }}" \ - --image-file ./meta-info \ - --project ${{env.JFROG_CLI_BUILD_PROJECT}} \ - ecosystem-container-dev-local - - - name: Publish Build Info - if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'))) - run: | - export JFROG_CLI_LOG_LEVEL=DEBUG - jf rt build-collect-env --project ecosystem "${{ env.JFROG_CLI_BUILD_NAME }}-container" "${{ env.VERSION }}" - jf rt build-add-git --project ecosystem "${{ env.JFROG_CLI_BUILD_NAME }}-container" "${{ env.VERSION }}" - - jf rt build-publish \ - --detailed-summary \ - --project ecosystem \ - "${{ env.JFROG_CLI_BUILD_NAME }}-container" "${{ env.VERSION }}" - - -# All of the following steps are commented out because they are just to handle "latest" tag and it is typically not desired in a release bundle - # - name: Tag a release with latest (Release) - # if: github.event_name == 'workflow_dispatch' && github.event.inputs.is_release == 'true' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) - # run: | - # jf docker buildx imagetools create --tag ${{ env.REPO }}/asvec:latest ${{ env.REPO }}/asvec:${{ env.VERSION }} - # env: - # DOCKER_BUILDKIT: '1' - - # - name: Create Docker Build Info for latest - # if: github.event_name == 'workflow_dispatch' && github.event.inputs.is_release == 'true' || (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/'))) - # run: | - - # jf rt build-docker-create \ - # --build-name "${{ env.JFROG_CLI_BUILD_NAME }}-container-latest" \ - # --build-number "${{ env.VERSION }}" \ - # --image-file ./meta-info \ - # --project ecosystem \ - # ecosystem-container-dev-local - - # - name: Publish Build Info for latest - # if: github.event_name == 'workflow_dispatch' && github.event.inputs.is_release == 'true' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) - # run: | - # jfrog rt build-collect-env "${{ env.JFROG_CLI_BUILD_NAME }}-container-latest" "${{ env.VERSION }}" - # jfrog rt build-add-git "${{ env.JFROG_CLI_BUILD_NAME }}-container-latest" "${{ env.VERSION }}" - # jfrog rt build-add-dependencies "${{ env.JFROG_CLI_BUILD_NAME }}-container-latest" "${{ env.VERSION }}". - # jf rt build-publish \ - # --detailed-summary \ - # --project ecosystem \ - # "${{ env.JFROG_CLI_BUILD_NAME }}-container-latest" "${{ env.VERSION }}" - - - name: Create Release Bundle - if: github.event_name == 'workflow_dispatch' && github.event.inputs.is_release == 'true'|| (github.event_name == 'push' && (startsWith(github.ref, 'refs/tags/'))) - run: | - echo '{ - - "name": "${{ env.JFROG_CLI_BUILD_NAME }}", - "version": "${{ env.VERSION }}", - "description": "Release bundle for ${{github.repository}} version ${{ env.VERSION }}", - "files": [ - { - "project": "ecosystem", - "build": "${{ env.JFROG_CLI_BUILD_NAME }}-container" - } - ] - }' > release-bundle-spec.json - cat release-bundle-spec.json - - jf release-bundle-create \ - "${{ env.JFROG_CLI_BUILD_NAME }}" "${{ env.VERSION }}"\ - --project ecosystem \ - --spec release-bundle-spec.json \ - --signing-key aerospike --sync \ No newline at end of file diff --git a/.github/workflows/create-prerelease.yml b/.github/workflows/create-prerelease.yml index a94469c..75cc9d7 100644 --- a/.github/workflows/create-prerelease.yml +++ b/.github/workflows/create-prerelease.yml @@ -1,4 +1,4 @@ -name: Build asvec +name: Build and publish asvec on: push: branches: @@ -15,10 +15,6 @@ on: description: 'Create Pre-release? -SNAPSHOT-{COMMIT} will be appended to the version above.' required: false type: boolean - deletePrevBuild: - description: 'Cleanup existing pre-releases?' - required: false - type: boolean env: JFROG_CLI_BUILD_NAME: 'asvec' JFROG_CLI_LOG_LEVEL: DEBUG