diff --git a/.github/actions/docker-login/action.yaml b/.github/actions/docker-login/action.yaml new file mode 100644 index 000000000..ccc8ae8fa --- /dev/null +++ b/.github/actions/docker-login/action.yaml @@ -0,0 +1,46 @@ +name: Docker login +descritpion: Log in to Docker Hub +inputs: + username: + required: true + password: + required: true +runs: + using: composite + steps: + - name: Check for Docker Hub credentials + shell: bash + env: + DOCKER_USERNAME: ${{ inputs.username }} + DOCKER_PASSWORD: ${{ inputs.password }} + run: | + if [ -z "$DOCKER_USERNAME" ] || [ -z "$DOCKER_PASSWORD" ]; then + echo "AUTH_EXISTS=false" >> $GITHUB_ENV + echo "No credentials provided" + else + echo "AUTH_EXISTS=true" >> $GITHUB_ENV + echo "Credentials provided" + fi + + - name: Login to Docker Hub + if: env.AUTH_EXISTS == 'true' + uses: docker/login-action@v3 + with: + username: ${{ inputs.username }} + password: ${{ inputs.password }} + + - name: Check Docker Hub Rate Limits + shell: bash + env: + DOCKER_USERNAME: ${{ inputs.username }} + DOCKER_PASSWORD: ${{ inputs.password }} + run: | + if [ "$AUTH_EXISTS" = "true" ]; then + echo "Authenticated." + TOKEN=$(curl -s --user "${DOCKER_USERNAME}:${DOCKER_PASSWORD}" "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token) + else + echo "Unauthenticated." + TOKEN=$(curl -s "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token) + fi + echo "Rate limits:" + curl -s --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep ratelimit diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ac0073575..d013da666 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -24,13 +24,12 @@ jobs: runs-on: ubuntu-latest continue-on-error: true steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - uses: ./.github/actions/docker-login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout Repository - uses: actions/checkout@v4 - name: Setup Kurtosis uses: ./.github/actions/kurtosis-install @@ -64,13 +63,12 @@ jobs: assertoor-mix-assert: runs-on: ubuntu-latest steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - uses: ./.github/actions/docker-login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout Repository - uses: actions/checkout@v4 - name: Kurtosis Assertoor GitHub Action uses: ethpandaops/kurtosis-assertoor-github-action@v1 with: diff --git a/.github/workflows/per-pr.yml b/.github/workflows/per-pr.yml index 55c292b6b..4ff4c5c2d 100644 --- a/.github/workflows/per-pr.yml +++ b/.github/workflows/per-pr.yml @@ -11,18 +11,16 @@ jobs: run_starlark: runs-on: ubuntu-latest steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - uses: ./.github/actions/docker-login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout Repository - uses: actions/checkout@v4 - name: Setup Kurtosis uses: ./.github/actions/kurtosis-install - name: Run Starlark run: | - docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }} kurtosis run ${{ github.workspace }} --args-file network_params.yaml run_with_args: @@ -40,13 +38,12 @@ jobs: ] runs-on: ubuntu-latest steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - uses: ./.github/actions/docker-login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout Repository - uses: actions/checkout@v4 - name: Setup Kurtosis uses: ./.github/actions/kurtosis-install - name: Run Starlark @@ -68,13 +65,12 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - name: Login to Docker Hub - uses: docker/login-action@v3 + - name: Checkout Repository + uses: actions/checkout@v4 + - uses: ./.github/actions/docker-login with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - name: Checkout Repository - uses: actions/checkout@v4 - name: Kurtosis Assertoor GitHub Action uses: ethpandaops/kurtosis-assertoor-github-action@v1 with: