galaxyproject/ansible-galaxy (opens in new tab)
3 workflows
Docker Build Tests
.github/workflows/docker-build.yml (opens in new tab)Triggers
pull_request push schedule
Jobs
| 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:
Release (by Tag Push)
.github/workflows/release.yml (opens in new tab)Triggers
push
Jobs
| 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:
Automatic Regular Releases
.github/workflows/slugger.yml (opens in new tab)Triggers
workflow_dispatch schedule
Jobs
| 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: