Integration Tests 🧪 #2305
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: integration-tests | |
on: | |
workflow_dispatch: | |
inputs: | |
branch: | |
description: 'Specifies the branch which the integration tests should run on.' | |
required: true | |
default: 'releases/v4' | |
schedule: | |
- cron: 30 15 * * 0-6 | |
push: | |
tags-ignore: | |
- '*.*' | |
branches: | |
- releases/v4 | |
jobs: | |
# Deploys cross repo with an access token. | |
integration-cross-repo-push: | |
container: node:16.13 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install Container Dependencies 📚 | |
run: | | |
apt-get update && apt-get install -y rsync | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
git-config-name: Montezuma | |
git-config-email: [email protected] | |
repository-name: MontezumaIves/lab | |
token: ${{ secrets.ACCESS_TOKEN }} | |
commit-message: 'Test commit' | |
folder: integration | |
single-commit: true | |
clean: true | |
silent: true | |
# Deploys using checkout@v1 with an ACCESS_TOKEN. | |
integration-checkout-v1: | |
needs: integration-cross-repo-push | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
folder: integration | |
target-folder: cat/montezuma | |
git-config-name: Montezuma | |
git-config-email: [email protected] | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
# Deploys using checkout@v2 with a GITHUB_TOKEN. | |
integration-checkout-v2: | |
needs: integration-checkout-v1 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
folder: integration | |
target-folder: cat/montezuma2 | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
# Deploys using a container that requires you to install rsync. | |
integration-container: | |
needs: integration-checkout-v2 | |
runs-on: ubuntu-latest | |
container: | |
image: ruby:2.6 | |
env: | |
LANG: C.UTF-8 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Install rsync | |
run: | | |
apt-get update && apt-get install -y rsync | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
folder: integration | |
target-folder: cat/montezuma2 | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branches: gh-pages | |
# Deploys using an SSH key. | |
integration-ssh: | |
needs: integration-container | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
ssh-key: ${{ secrets.DEPLOY_KEY }} | |
folder: integration | |
target-folder: cat/montezuma3 | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branches: gh-pages | |
# Deploys using an SSH key. | |
integration-ssh-third-party-client: | |
needs: integration-ssh | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Install SSH Client | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: ${{ secrets.DEPLOY_KEY }} | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
ssh-key: true | |
folder: integration | |
target-folder: cat/montezuma4 | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
# Deploys using a custom env. (Includes subsequent commit) | |
integration-env: | |
needs: integration-ssh-third-party-client | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: '.nvmrc' | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
ssh-key: ${{ secrets.DEPLOY_KEY }} | |
folder: integration | |
target-folder: cat/montezuma4 | |
silent: true | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
ssh-key: ${{ secrets.DEPLOY_KEY }} | |
folder: integration | |
target-folder: cat/subsequent | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branches: gh-pages | |
# Deploys using the CLEAN option. | |
integration-clean: | |
needs: | |
[ | |
integration-checkout-v1, | |
integration-checkout-v2, | |
integration-container, | |
integration-ssh, | |
integration-ssh-third-party-client, | |
integration-env | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
folder: integration | |
clean: true | |
silent: true | |
# Deploys to a branch that doesn't exist with SINGLE_COMMIT. (Includes subsequent commit) | |
integration-branch-creation: | |
needs: integration-clean | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: integration-test-delete-prod | |
folder: integration | |
single-commit: true | |
silent: true | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: integration-test-delete-prod | |
folder: integration | |
single-commit: true | |
target-folder: jives | |
silent: true | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
branches: integration-test-delete-prod | |
# Creates two competing deployments, one of which should rebase over the other. | |
# First conflicting deployment | |
integration-rebase-conflicts-1: | |
needs: integration-branch-creation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create random file | |
run: echo $RANDOM > integration/1 | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
git-config-name: Montezuma | |
git-config-email: [email protected] | |
repository-name: MontezumaIves/lab | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: gh-pages-rebase-conflict | |
folder: integration | |
force: false | |
# Second conflicting deployment | |
integration-rebase-conflicts-2: | |
needs: integration-rebase-conflicts-1 | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Create random file | |
run: echo $RANDOM > integration/2 | |
- name: Build and Deploy | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
git-config-name: Montezuma | |
git-config-email: [email protected] | |
repository-name: MontezumaIves/lab | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: gh-pages-rebase-conflict | |
folder: integration | |
force: false | |
# Clean up conflicting deployments | |
integration-rebase-conflicts-cleanup: | |
needs: [integration-rebase-conflicts-1, integration-rebase-conflicts-2] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cleanup Generated Branch | |
uses: dawidd6/[email protected] | |
with: | |
github_token: ${{ secrets.ACCESS_TOKEN }} | |
owner: MontezumaIves | |
repository: lab | |
branches: gh-pages |