Skip to content

Commit 628fff5

Browse files
author
Joé Dupuis
committed
Github actions
1 parent 8d4e084 commit 628fff5

File tree

12 files changed

+189
-42
lines changed

12 files changed

+189
-42
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: "Setup Terraform"
2+
description: "Sets up Terraform and initializes the configuration"
3+
runs:
4+
using: "composite"
5+
steps:
6+
- name: Setup Terraform
7+
uses: hashicorp/setup-terraform@v3
8+
with:
9+
terraform_version: 1.8.3
10+
terraform_wrapper: false
11+
12+
- name: Configure provider
13+
run: cp .github/provider.tf .
14+
shell: bash
15+
16+
- name: Terraform init
17+
run: terraform init
18+
shell: bash

.github/provider.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
terraform {
2+
backend "azurerm" {
3+
resource_group_name = "azure-blob"
4+
storage_account_name = "azureblobrubygemdev"
5+
container_name = "terraform"
6+
key = "terraform.tfstate"
7+
}
8+
}

.github/workflows/main.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.github/workflows/teardown.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Teardown
2+
3+
on:
4+
schedule:
5+
- cron: "0 4 * * *"
6+
workflow_dispatch:
7+
8+
permissions:
9+
id-token: write
10+
contents: read
11+
env:
12+
ARM_SKIP_PROVIDER_REGISTRATION: true
13+
ARM_USE_OIDC: true
14+
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
15+
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
16+
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
17+
18+
jobs:
19+
teardown-infrastructure:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v4
23+
- uses: ./.github/actions/setup-terraform
24+
- name: Terraform apply
25+
run: terraform apply -auto-approve
26+
27+
clean_storage_containers:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@v4
32+
- name: Setup ruby
33+
uses: ruby/setup-ruby@v1
34+
with:
35+
bundler-cache: true
36+
- name: Tests
37+
env:
38+
AZURE_ACCOUNT_NAME: ${{secrets.AZURE_ACCOUNT_NAME}}
39+
AZURE_ACCESS_KEY: ${{secrets.AZURE_ACCESS_KEY}}
40+
AZURE_PRIVATE_CONTAINER: ${{secrets.AZURE_PRIVATE_CONTAINER}}
41+
AZURE_PUBLIC_CONTAINER: ${{secrets.AZURE_PUBLIC_CONTAINER}}
42+
AZURE_PRINCIPAL_ID: ${{secrets.AZURE_PRINCIPAL_ID}}
43+
run: bundle exec rake flush_test_container

.github/workflows/test.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Run tests
2+
3+
on:
4+
pull_request:
5+
push:
6+
7+
permissions:
8+
id-token: write
9+
contents: read
10+
env:
11+
ARM_SKIP_PROVIDER_REGISTRATION: true
12+
ARM_USE_OIDC: true
13+
ARM_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
14+
ARM_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
15+
ARM_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
16+
17+
jobs:
18+
deploy-infrastructure:
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: ./.github/actions/setup-terraform
23+
- name: Terraform apply
24+
run: terraform apply -auto-approve -var "create_vm=true" -var "create_app_service=true" -var "ssh_key=${{ secrets.SSH_PUBLIC_KEY }}"
25+
26+
app_service_test:
27+
needs: deploy-infrastructure
28+
runs-on: ubuntu-latest
29+
steps:
30+
- name: Install dependencies
31+
run: sudo apt-get install -y libvips sshuttle
32+
- name: Checkout
33+
uses: actions/checkout@v4
34+
- uses: ./.github/actions/setup-terraform
35+
- name: Azure login
36+
uses: azure/login@v2
37+
with:
38+
client-id: ${{ secrets.AZURE_CLIENT_ID }}
39+
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
40+
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
41+
- name: Setup ruby
42+
uses: ruby/setup-ruby@v1
43+
with:
44+
bundler-cache: true
45+
- name: Tests
46+
env:
47+
AZURE_ACCOUNT_NAME: ${{secrets.AZURE_ACCOUNT_NAME}}
48+
AZURE_ACCESS_KEY: ${{secrets.AZURE_ACCESS_KEY}}
49+
AZURE_PRIVATE_CONTAINER: ${{secrets.AZURE_PRIVATE_CONTAINER}}
50+
AZURE_PUBLIC_CONTAINER: ${{secrets.AZURE_PUBLIC_CONTAINER}}
51+
AZURE_PRINCIPAL_ID: ${{secrets.AZURE_PRINCIPAL_ID}}
52+
run: bundle exec rake test_app_service
53+
54+
azurevm_test:
55+
needs: deploy-infrastructure
56+
runs-on: ubuntu-latest
57+
steps:
58+
- name: Install dependencies
59+
run: sudo apt-get install -y libvips sshuttle
60+
- name: SSH key
61+
env:
62+
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
63+
run: |
64+
mkdir -p /home/runner/.ssh
65+
echo "${{ secrets.SSH_PRIVATE_KEY }}" > /home/runner/.ssh/id_rsa
66+
chmod 600 /home/runner/.ssh/id_rsa
67+
ssh-agent -a $SSH_AUTH_SOCK > /dev/null
68+
ssh-add /home/runner/.ssh/id_rsa
69+
- name: Checkout
70+
uses: actions/checkout@v4
71+
- uses: ./.github/actions/setup-terraform
72+
- name: Setup ruby
73+
uses: ruby/setup-ruby@v1
74+
with:
75+
bundler-cache: true
76+
- name: Tests
77+
env:
78+
AZURE_ACCOUNT_NAME: ${{secrets.AZURE_ACCOUNT_NAME}}
79+
AZURE_ACCESS_KEY: ${{secrets.AZURE_ACCESS_KEY}}
80+
AZURE_PRIVATE_CONTAINER: ${{secrets.AZURE_PRIVATE_CONTAINER}}
81+
AZURE_PUBLIC_CONTAINER: ${{secrets.AZURE_PUBLIC_CONTAINER}}
82+
AZURE_PRINCIPAL_ID: ${{secrets.AZURE_PRINCIPAL_ID}}
83+
SSH_AUTH_SOCK: /tmp/ssh_agent.sock
84+
run: bundle exec rake test_azure_vm
85+
86+
test:
87+
runs-on: ubuntu-latest
88+
steps:
89+
- name: Install dependencies
90+
run: sudo apt-get install -y libvips
91+
- name: Checkout
92+
uses: actions/checkout@v4
93+
- name: Setup ruby
94+
uses: ruby/setup-ruby@v1
95+
with:
96+
bundler-cache: true
97+
- name: Tests
98+
env:
99+
AZURE_ACCOUNT_NAME: ${{secrets.AZURE_ACCOUNT_NAME}}
100+
AZURE_ACCESS_KEY: ${{secrets.AZURE_ACCESS_KEY}}
101+
AZURE_PRIVATE_CONTAINER: ${{secrets.AZURE_PRIVATE_CONTAINER}}
102+
AZURE_PUBLIC_CONTAINER: ${{secrets.AZURE_PUBLIC_CONTAINER}}
103+
AZURE_PRINCIPAL_ID: ${{secrets.AZURE_PRINCIPAL_ID}}
104+
run: bundle exec rake test

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ terraform.tfstate
2424
terraform.tfstate.backup
2525
.terraform.tfstate.lock.info
2626
*.tfvars
27+
provider.tf
2728

2829
__azurite_db*
2930
__blobstorage__/

.ruby-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3.1.6

bin/proxy-vps

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
3+
exec sshuttle -e "ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" -r "$(terraform output --raw vm_username)@$(terraform output --raw vm_ip)" 0/0

bin/start-app-service-ssh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
3+
resource_group=$(terraform output --raw "resource_group")
4+
app_name=$(terraform output --raw "app_service_app_name")
5+
exec az webapp create-remote-connection --resource-group $resource_group --name $app_name

devenv.nix

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,4 @@
2424
scripts.generate-env-file.exec = ''
2525
terraform output -raw devenv_local_nix > devenv.local.nix
2626
'';
27-
28-
scripts.proxy-vps.exec = ''
29-
exec sshuttle -e "ssh -o CheckHostIP=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" -r "$(terraform output --raw vm_username)@$(terraform output --raw vm_ip)" 0/0
30-
'';
31-
32-
scripts.start-app-service-ssh.exec = ''
33-
resource_group=$(terraform output --raw "resource_group")
34-
app_name=$(terraform output --raw "app_service_app_name")
35-
exec az webapp create-remote-connection --resource-group $resource_group --name $app_name
36-
'';
3727
}

0 commit comments

Comments
 (0)