Skip to content
CI/CD Inventory

galaxyproject/ansible-galaxy (opens in new tab)

3 workflows

Triggers

pull_request push schedule

Jobs

Jobs for Docker Build Tests
Job Runs on Steps Actions used
docker-build ubuntu-latest 7
actions/checkout@v4 actions/checkout@v4 docker/setup-buildx-action@v3 docker/build-push-action@v6
Raw YAML
---
name: Docker Build Tests

on:
  pull_request:
  push:
    # branches:
    #   - main
  schedule:
    # Run weekly on Friday at 02:00 UTC to catch Galaxy breaking changes early
    - cron: '0 2 * * 5'

jobs:
  docker-build:
    name: docker-build
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        galaxy-branch:
          - dev
          - master
    steps:
      - name: Checkout ansible-galaxy role
        uses: actions/checkout@v4
        with:
          path: ansible-galaxy-role

      - name: Checkout Galaxy
        uses: actions/checkout@v4
        with:
          repository: galaxyproject/galaxy
          ref: ${{ matrix.galaxy-branch }}
          path: galaxy

      - name: Fetch Dockerfile
        run: |
          curl -sL https://raw.githubusercontent.com/galaxyproject/galaxy/${{ matrix.galaxy-branch }}/.k8s_ci.Dockerfile -o galaxy/.k8s_ci.Dockerfile

      - name: Patch Dockerfile to use local ansible-galaxy role
        run: |
          # Copy role into galaxy directory so it's in the build context
          cp -r ansible-galaxy-role galaxy/ansible-galaxy-role
          # Add a COPY instruction after ansible-galaxy install to override the role
          sed -i '/ansible-galaxy install -r requirements.yml/a COPY ansible-galaxy-role /tmp/ansible/galaxy-docker/roles/galaxy' galaxy/.k8s_ci.Dockerfile

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

      - name: Build Docker image
        uses: docker/build-push-action@v6
        with:
          context: galaxy
          file: galaxy/.k8s_ci.Dockerfile
          push: false
          load: true
          tags: galaxy-test:${{ matrix.galaxy-branch }}

      - name: Test Galaxy container starts
        run: |
          # Start container in background
          docker run -d --name galaxy-test -p 8080:8080 galaxy-test:${{ matrix.galaxy-branch }}

          # Wait for Galaxy to be ready (up to 5 minutes)
          echo "Waiting for Galaxy to start..."
          for i in $(seq 1 60); do
            if curl -sf http://localhost:8080/api/version > /dev/null 2>&1; then
              echo "Galaxy is ready!"
              curl -s http://localhost:8080/api/version | jq .
              exit 0
            fi
            echo "Attempt $i/60: Galaxy not ready yet, waiting..."
            sleep 5
          done

          echo "Galaxy failed to start within timeout"
          docker logs galaxy-test
          exit 1

Last fetched:

Triggers

push

Jobs

Jobs for Release (by Tag Push)
Job Runs on Steps Actions used
Release ubuntu-latest 4
actions/checkout@v3 actions/setup-python@v3
Raw YAML
---
# This workflow requires a GALAXY_API_KEY secret present in the GitHub
# repository or organization.
#
# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy
# See: https://github.com/ansible/galaxy/issues/46

name: Release (by Tag Push)

'on':
  push:
    tags:
      - '*'

jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    steps:
      - name: Check out the codebase.
        uses: actions/checkout@v3

      - name: Set up Python 3.
        uses: actions/setup-python@v3
        with:
          python-version: '3.x'

      - name: Install Ansible.
        run: pip3 install ansible-core

      - name: Trigger a new import on Galaxy.
        run: ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }} $(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2) --branch main

Last fetched:

Triggers

workflow_dispatch schedule

Jobs

Jobs for Automatic Regular Releases
Job Runs on Steps Actions used
Release ubuntu-latest 6
actions/checkout@v3 actions/setup-python@v3
Raw YAML
---
# This workflow requires a GALAXY_API_KEY secret present in the GitHub
# repository or organization.
#
# See: https://github.com/marketplace/actions/publish-ansible-role-to-galaxy
# See: https://github.com/ansible/galaxy/issues/46
#
# Note on the file name:
#   Reminding me (@hexylena) to make a release of a role was the last thing
#   @Slugger70 asked me our group chat. I'd forgotten to do it and he was
#   waiting on me for it, well, here's to you mate, none of us can forget to
#   make a point release again.

name: "Automatic Regular Releases"

on:
  workflow_dispatch:
  schedule:
    - cron: '0 0 * * 1'

jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    steps:
      - name: Check out the codebase.
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Set up Python 3.
        uses: actions/setup-python@v3
        with:
          python-version: '3.x'

      - name: Install Ansible.
        run: pip3 install six ansible-core

      - name: Check for changes
        run: |
          LATEST_TAG=$(git describe --tags --abbrev=0)
          echo "The last released tag was ${LATEST_TAG}"
          CHANGES=$(git diff ${LATEST_TAG} --name-only | wc -l)
          echo "Found ${CHANGES} changed files"
          git diff ${LATEST_TAG} --name-only
          echo "changed_files=${CHANGES}" >> $GITHUB_ENV

      - name: Create a new git tag
        run: |
          LATEST_TAG=$(git describe --tags --abbrev=0)
          major_minor=$(echo "$LATEST_TAG" | sed 's/\(.*\..*\.\)\(.*\)/\1/')
          patch=$(echo "$LATEST_TAG" | sed 's/\(.*\..*\.\)\(.*\)/\2/')
          newpatch=$(echo "$patch + 1" | bc)
          NEW_TAG="${major_minor}${newpatch}"
          echo "$LATEST_TAG -> $NEW_TAG"

          git config user.name github-actions
          git config user.email github-actions@github.com
          git tag "$NEW_TAG"
          git push --tags
          echo "Creating new tag $NEW_TAG" >> $GITHUB_STEP_SUMMARY
        if: env.changed_files > 0

      # We have to do this step as GHA prevents triggering it's own actions, to
      # prevent runaway loops.
      - name: Trigger a new import on Galaxy.
        run: |
          org=$(echo ${{ github.repository }} | cut -d/ -f1)
          repo=$(echo ${{ github.repository }} | cut -d/ -f2)
          key=${{ secrets.GALAXY_API_KEY }}
          ansible-galaxy role import --api-key $key $org $repo --branch main
        if: env.changed_files > 0

Last fetched: