Galaxy-Operator CI #13
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Galaxy Operator CI | |
on: | |
# push: | |
# branches: | |
# - '*' | |
# tags: | |
# - '*' | |
workflow_dispatch: | |
schedule: | |
# * is a special character in YAML so you have to quote this string | |
# runs at 3:00 UTC daily | |
- cron: '00 3 * * *' | |
env: | |
COLORTERM: 'yes' | |
TERM: 'xterm-256color' | |
jobs: | |
insta: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v1 | |
with: | |
python-version: '3.8' | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "IMG=quay.io/ansible/galaxy-operator:main" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "CI_TEST_IMAGE=minimal" >> $GITHUB_ENV | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Build Operator | |
run: | | |
sudo -E make docker-build IMG=quay.io/ansible/galaxy-operator:main | |
sudo -E docker images | |
shell: bash | |
- name: Test insta-demo | |
run: sudo -E insta-demo/pulp-insta-demo.sh -m | |
shell: bash | |
- name: Popeye | |
run: | | |
echo ::group::POPEYE | |
sudo wget https://github.com/derailed/popeye/releases/download/v0.10.0/popeye_Linux_x86_64.tar.gz | |
sudo tar -xvzf popeye_Linux_x86_64.tar.gz | |
sudo mv popeye /usr/local/bin/ | |
sudo chmod +x /usr/local/bin/popeye | |
echo ::endgroup:: | |
sudo popeye --kubeconfig ~/.kube/config || true | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
components: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
IMAGE: [minimal, s6] | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v1 | |
with: | |
python-version: '3.8' | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "IMG=quay.io/ansible/galaxy-operator:main" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "CI_TEST_IMAGE=${{ matrix.IMAGE }}" >> $GITHUB_ENV | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Build Operator | |
run: | | |
sudo -E make docker-build IMG=quay.io/ansible/galaxy-operator:main | |
sudo -E docker images | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: sudo -E ./up.sh | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: sudo -E time kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=-1s | |
shell: bash | |
- name: Popeye | |
run: | | |
echo ::group::POPEYE | |
sudo wget https://github.com/derailed/popeye/releases/download/v0.10.0/popeye_Linux_x86_64.tar.gz | |
sudo tar -xvzf popeye_Linux_x86_64.tar.gz | |
sudo mv popeye /usr/local/bin/ | |
sudo chmod +x /usr/local/bin/popeye | |
echo ::endgroup:: | |
sudo popeye --kubeconfig ~/.kube/config || true | |
- name: Test all components | |
run: | | |
git clone --depth=1 https://github.com/pulp/pulp_ansible.git | |
git clone --depth=1 https://github.com/pulp/pulp_container.git | |
.ci/scripts/retry.sh 3 ".ci/scripts/pulp_tests.sh -m" | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
galaxy: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- STORAGE: filesystem | |
IMAGE: minimal | |
- STORAGE: filesystem | |
IMAGE: s6 | |
- STORAGE: azure | |
IMAGE: minimal | |
- STORAGE: s3 | |
IMAGE: minimal | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v1 | |
with: | |
python-version: '3.8' | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
sudo apt-get update -yq | |
sudo -E apt-get -yq --no-install-suggests --no-install-recommends install httpie | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "IMG=quay.io/ansible/galaxy-operator:main" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
echo "CI_TEST_STORAGE=${{ matrix.STORAGE }}" >> $GITHUB_ENV | |
echo "CI_TEST_IMAGE=${{ matrix.IMAGE }}" >> $GITHUB_ENV | |
echo "API_ROOT=/api/galaxy/pulp/" >> $GITHUB_ENV | |
shell: bash | |
- name: Start minikube | |
run: | | |
minikube start --memory=max --cpus=max --vm-driver=docker --extra-config=apiserver.service-node-port-range=80-32000 | |
minikube addons enable metrics-server | |
# now you can run kubectl to see the pods in the cluster | |
- name: Try the cluster ! | |
run: kubectl get pods -A | |
- name: Setup a minikube docker env | |
run: minikube -p minikube docker-env | grep "export" | sed 's/export //' | sed 's/"//g' >> $GITHUB_ENV | |
- name: Uninstalling GHA kustomize | |
run: | | |
# hack for uninstalling kustomize from GHA | |
mv /usr/local/bin/kustomize /usr/local/bin/ghakustomize | |
make kustomize | |
mv ./bin/kustomize /usr/local/bin/kustomize | |
kustomize version | |
shell: bash | |
- name: Build Operator | |
run: | | |
sudo -E make docker-build IMG=quay.io/ansible/galaxy-operator:main | |
sudo -E docker images | |
shell: bash | |
- name: Prepare Object Storage | |
run: | | |
.ci/scripts/prepare-object-storage.sh | |
shell: bash | |
- name: Deploy pulp-operator to K8s | |
run: sudo -E CI_TEST=galaxy ./up.sh | |
shell: bash | |
- name: Check and wait pulp-operator deploy | |
run: sudo -E time kubectl wait --for condition=Pulp-Operator-Finished-Execution pulp/example-pulp --timeout=-1s | |
shell: bash | |
- name: Popeye | |
run: | | |
echo ::group::POPEYE | |
sudo wget https://github.com/derailed/popeye/releases/download/v0.10.0/popeye_Linux_x86_64.tar.gz | |
sudo tar -xvzf popeye_Linux_x86_64.tar.gz | |
sudo mv popeye /usr/local/bin/ | |
sudo chmod +x /usr/local/bin/popeye | |
echo ::endgroup:: | |
sudo popeye --kubeconfig ~/.kube/config || true | |
- name: Check signing metadata | |
run: | | |
# ignoring the tests for now because of some galaxy container image issues | |
#.ci/scripts/signing_metadata.sh | |
shell: bash | |
- name: Test | |
run: sudo -E .ci/scripts/galaxy_ng-tests.sh -m | |
shell: bash | |
- name: Backup & Restore | |
run: CI_TEST=galaxy .ci/scripts/backup_and_restore.sh -m | |
shell: bash | |
env: | |
PY_COLORS: '1' | |
- name: Logs | |
if: always() | |
run: .github/workflows/scripts/show_logs.sh | |
- name: Send Build details to Slack | |
id: slack | |
uses: slackapi/[email protected] | |
if: failure() && github.event_name == 'schedule' | |
with: | |
payload: | | |
{ | |
"text": "Galaxy Operator CI ${{ job.status }}\nhttps://github.com/ansible/galaxy-operator/actions/runs/${{ github.run_id }}", | |
"blocks": [ | |
{ | |
"type": "section", | |
"text": { | |
"type": "mrkdwn", | |
"text": "Galaxy Operator CI ${{ job.status }}\nhttps://github.com/ansible/galaxy-operator/actions/runs/${{ github.run_id }}" | |
} | |
} | |
] | |
} | |
env: | |
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_PULP_CHANNEL }} | |
deploy: | |
runs-on: ubuntu-latest | |
needs: [insta, components, galaxy] | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
# by default, it uses a depth of 1 | |
# this fetches all history so that we can read each commit | |
fetch-depth: 0 | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v1 | |
with: | |
python-version: '3.8' | |
- name: Install httpie | |
run: | | |
echo ::group::HTTPIE | |
pip install httpie tweepy | |
echo ::endgroup:: | |
echo "HTTPIE_CONFIG_DIR=$GITHUB_WORKSPACE/.ci/assets/httpie/" >> $GITHUB_ENV | |
echo "IMG=quay.io/ansible/galaxy-operator:main" >> $GITHUB_ENV | |
echo "CI_TEST=true" >> $GITHUB_ENV | |
shell: bash | |
- name: Build Operator | |
run: | | |
sudo -E make docker-build IMG=quay.io/ansible/galaxy-operator:main | |
sudo -E docker images | |
shell: bash | |
- name: Setting secrets | |
run: python3 .github/workflows/scripts/secrets.py "$SECRETS_CONTEXT" | |
env: | |
SECRETS_CONTEXT: ${{ toJson(secrets) }} | |
- name: Deploy images | |
run: .ci/scripts/deploy.sh | |
shell: bash | |
- name: Tweet | |
if: startsWith(github.ref, 'refs/tags/') | |
run: python .ci/scripts/tweet.py ${GITHUB_REF##*/} |