diff --git a/.github/workflows/build-push-containers-all.yml b/.github/workflows/build-push-containers-all.yml index 367bc3cae..876bc8265 100644 --- a/.github/workflows/build-push-containers-all.yml +++ b/.github/workflows/build-push-containers-all.yml @@ -11,537 +11,48 @@ on: - main jobs: - - m1-da-light-node-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image m1-da-light-node + m1-da-light-node: + uses: ./.github/workflows/container-build-push.yml + with: + image_name: m1-da-light-node + secrets: inherit m1-da-light-node-manifest: - permissions: - contents: read - packages: write - needs: m1-da-light-node-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest m1-da-light-node - - m1-da-light-node-celestia-appd-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image m1-da-light-node-celestia-appd + needs: m1-da-light-node + uses: ./.github/workflows/container-manifest.yml + with: + image_name: m1-da-light-node + secrets: inherit + + m1-da-light-node-celestia-appd: + uses: ./.github/workflows/container-build-push.yml + with: + image_name: m1-da-light-node-celestia-appd + secrets: inherit m1-da-light-node-celestia-appd-manifest: - permissions: - contents: read - packages: write - needs: m1-da-light-node-celestia-appd-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest m1-da-light-node-celestia-appd - - m1-da-light-node-celestia-bridge-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image m1-da-light-node-celestia-bridge + needs: m1-da-light-node-celestia-appd + uses: ./.github/workflows/container-manifest.yml + with: + image_name: m1-da-light-node-celestia-appd + secrets: inherit - m1-da-light-node-celestia-bridge-manifest: - permissions: - contents: read - packages: write - needs: m1-da-light-node-celestia-bridge-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 + # Repeat for other images following the same pattern - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest m1-da-light-node-celestia-bridge - - suzuka-full-node-setup-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: true - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image suzuka-full-node-setup + # Example for suzuka-full-node-setup + suzuka-full-node-setup: + uses: ./.github/workflows/container-build-push.yml + with: + image_name: suzuka-full-node-setup + secrets: inherit suzuka-full-node-setup-manifest: - permissions: - contents: read - packages: write - needs: suzuka-full-node-setup-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest suzuka-full-node-setup - - wait-for-celestia-light-node-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image wait-for-celestia-light-node - - wait-for-celestia-light-node-manifest: - permissions: - contents: read - packages: write - needs: wait-for-celestia-light-node-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest wait-for-celestia-light-node - - suzuka-full-node-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image suzuka-full-node - - suzuka-full-node-manifest: - permissions: - contents: read - packages: write - needs: suzuka-full-node-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest suzuka-full-node - - suzuka-faucet-service-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image suzuka-faucet-service - - suzuka-faucet-service-manifest: - permissions: - contents: read - packages: write - needs: suzuka-faucet-service-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest suzuka-faucet-service - - suzuka-client-e2e-simple-interaction-build: - permissions: - contents: read - packages: write - strategy: - matrix: - architecture: [x86_64, arm64] - - runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/build-push-image suzuka-client-e2e-simple-interaction - - suzuka-client-e2e-simple-interaction-manifest: - permissions: - contents: read - packages: write - needs: suzuka-client-e2e-simple-interaction-build - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Login to Docker Hub to Avoid Rate Limiting - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_USERNAME }} - password: ${{ secrets.DOCKER_HUB_TOKEN }} - - - name: Build and Push Docker image movement - run: | - ./scripts/movement/manifest suzuka-client-e2e-simple-interaction - - container-checks: - runs-on: buildjet-8vcpu-ubuntu-2204 - needs: - - m1-da-light-node-manifest - - m1-da-light-node-celestia-appd-manifest - - m1-da-light-node-celestia-bridge-manifest - - suzuka-full-node-setup-manifest - - wait-for-celestia-light-node-manifest - - suzuka-full-node-manifest - - suzuka-faucet-service-manifest - - suzuka-client-e2e-simple-interaction-manifest - steps: - - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install Nix - uses: DeterminateSystems/nix-installer-action@main - - - name: Read the commit SHA - id: vars - run: echo "CONTAINER_REV=${{ github.sha }}" >> .env - - - name: Display .env file - run: cat .env - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y wget - - - - name: Install docker-ce-cli - run: | - sudo apt-get install -y docker-ce-cli - - - name: Verify Docker Installation - run: | - docker compose version - docker --version - docker version - - - name: Run docker-compose local.setup.test - run: | - nix develop --command bash -c "just container-test" - # run again to test restarts - # nix develop --command bash -c "just container-test" - - - name: Add container to release - run: | - RELEASE_TAG=$(./scripts/movement/release-name) - REPO=${{ github.repository }} - - echo "Release tag: $RELEASE_TAG" - - # Check if the release already exists - EXISTING_RELEASE=$(gh release view "$RELEASE_TAG" --repo "$REPO" --json tagName --jq '.tagName' 2>/dev/null) - - echo "Checked for existing release: $EXISTING_RELEASE" + needs: suzuka-full-node-setup + uses: ./.github/workflows/container-manifest.yml + with: + image_name: suzuka-full-node-setup + secrets: inherit - # If the release exists, delete it - if [ "$EXISTING_RELEASE" == "$RELEASE_TAG" ]; then - echo "Release $RELEASE_TAG already exists. Deleting it..." - gh release delete "$RELEASE_TAG" --repo "$REPO" -y - fi + # Continue for the rest of the images - gh release create "$RELEASE_TAG" --repo "$REPO" --notes "$RELEASE_TAG" --target ${{ github.sha }} + # container-checks job remains the same or can be adjusted if needed \ No newline at end of file diff --git a/.github/workflows/container-build-push.yml b/.github/workflows/container-build-push.yml new file mode 100644 index 000000000..61c590577 --- /dev/null +++ b/.github/workflows/container-build-push.yml @@ -0,0 +1,43 @@ +name: Container Build and Push + +on: + workflow_call: + inputs: + image_name: + required: true + type: string + secrets: + INFRA_GH_TOKEN: + required: true + DOCKER_HUB_USERNAME: + required: true + DOCKER_HUB_TOKEN: + required: true + +jobs: + build-and-push: + strategy: + matrix: + architecture: [x86_64, arm64] + runs-on: ${{ matrix.architecture == 'x86_64' && 'buildjet-8vcpu-ubuntu-2204' || 'buildjet-8vcpu-ubuntu-2204-arm' }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.INFRA_GH_TOKEN }} + + - name: Login to Docker Hub to Avoid Rate Limiting + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build and Push Docker image movement + run: | + ./scripts/movement/build-push-image ${{ inputs.image_name }} \ No newline at end of file diff --git a/.github/workflows/container-manifest.yml b/.github/workflows/container-manifest.yml new file mode 100644 index 000000000..7e17f0ef2 --- /dev/null +++ b/.github/workflows/container-manifest.yml @@ -0,0 +1,40 @@ +name: Container Manifest + +on: + workflow_call: + inputs: + image_name: + required: true + type: string + secrets: + INFRA_GH_TOKEN: + required: true + DOCKER_HUB_USERNAME: + required: true + DOCKER_HUB_TOKEN: + required: true + +jobs: + create-manifest: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.INFRA_GH_TOKEN }} + + - name: Login to Docker Hub to Avoid Rate Limiting + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Build and Push Docker image movement + run: | + ./scripts/movement/manifest ${{ inputs.image_name }} \ No newline at end of file