schema: add support for diff policy #461
Workflow file for this run
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: Continuous Integration | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
permissions: | |
# Permission for checking out code | |
contents: read | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
- name: Run linters | |
uses: golangci/golangci-lint-action@v3 | |
with: | |
args: --verbose | |
- name: Generate docs | |
run: go generate | |
- name: Check generated files | |
run: | | |
status=$(git status --porcelain) | |
if [ -n "$status" ]; then | |
echo "you need to run 'go generate' and commit the changes" | |
echo "$status" | |
exit 1 | |
fi | |
acceptance: | |
name: Acceptance Tests (Terraform ${{ matrix.terraform-version }}) | |
runs-on: ubuntu-latest | |
services: | |
mysql8prod: | |
image: mysql:8 | |
env: | |
MYSQL_DATABASE: test | |
MYSQL_ROOT_PASSWORD: pass | |
ports: | |
- 3306:3306 | |
options: >- | |
--health-cmd "mysqladmin ping -ppass" | |
--health-interval 10s | |
--health-start-period 10s | |
--health-timeout 5s | |
--health-retries 10 | |
mysql8dev: | |
image: mysql:8 | |
env: | |
MYSQL_DATABASE: test | |
MYSQL_ROOT_PASSWORD: pass | |
ports: | |
- 3307:3306 | |
options: >- | |
--health-cmd "mysqladmin ping -ppass" | |
--health-interval 10s | |
--health-start-period 10s | |
--health-timeout 5s | |
--health-retries 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
terraform-version: | |
- '1.2.*' | |
- '1.3.*' | |
- '1.4.*' | |
- '1.5.*' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- uses: hashicorp/setup-terraform@v2 | |
with: | |
terraform_version: ${{ matrix.terraform-version }} | |
terraform_wrapper: false | |
- name: Install Atlas-CLI | |
run: | | |
curl -s -A "Terraform-Provider-CI" -o /usr/local/bin/atlas \ | |
https://release.ariga.io/atlas/atlas-linux-amd64-latest?test=1 | |
chmod +x /usr/local/bin/atlas | |
- run: go test -v -cover ./... | |
env: | |
TF_ACC: '1' | |
build-dev: | |
name: Build provider bundles | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
- uses: actions/cache@v3 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- name: Run GoReleaser | |
uses: goreleaser/[email protected] | |
with: | |
version: latest | |
args: release --clean --skip=validate,publish,sign | |
env: | |
GORELEASER_CURRENT_TAG: v0.0.0-pre.0 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: atlas-provider | |
path: ./dist/terraform-provider-atlas_0.0.0-pre.0_linux_amd64.zip | |
retention-days: 5 | |
if-no-files-found: error | |
integration: | |
name: Integration (Terraform ${{ matrix.terraform-version }}) | |
runs-on: ubuntu-latest | |
needs: [build-dev] | |
services: | |
mysql8prod: | |
image: mysql:8 | |
env: | |
MYSQL_DATABASE: test | |
MYSQL_ROOT_PASSWORD: pass | |
ports: | |
- 3306:3306 | |
options: >- | |
--health-cmd "mysqladmin ping -ppass" | |
--health-interval 10s | |
--health-start-period 10s | |
--health-timeout 5s | |
--health-retries 10 | |
mysql8dev: | |
image: mysql:8 | |
env: | |
MYSQL_DATABASE: test | |
MYSQL_ROOT_PASSWORD: pass | |
ports: | |
- 3307:3306 | |
options: >- | |
--health-cmd "mysqladmin ping -ppass" | |
--health-interval 10s | |
--health-start-period 10s | |
--health-timeout 5s | |
--health-retries 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
terraform-version: | |
- '1.2.*' | |
- '1.3.*' | |
- '1.4.*' | |
- '1.5.*' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.21' | |
- uses: actions/download-artifact@v3 | |
with: | |
name: atlas-provider | |
path: ./dist | |
- uses: hashicorp/setup-terraform@v2 | |
with: | |
terraform_version: ${{ matrix.terraform-version }} | |
terraform_wrapper: false | |
- name: Terraform (sqlite) | |
working-directory: integration-tests/sqlite | |
run: | | |
../../scripts/local.sh ../../dist 0.0.0-pre.0 | |
terraform init | |
terraform apply --auto-approve | |
- name: Terraform (no-dev-url) | |
working-directory: integration-tests/no-dev-url | |
run: | | |
../../scripts/local.sh ../../dist 0.0.0-pre.0 | |
terraform init > /dev/null | |
terraform plan -no-color | grep --silent "Warning: dev_url is unset" | |
- name: Terraform (no-version) | |
working-directory: integration-tests/no-version | |
run: | | |
../../scripts/local.sh ../../dist 0.0.0-pre.0 | |
terraform init > /dev/null | |
terraform plan -no-color | grep --silent "Warning: version is unset" | |
- name: Terraform (remote_dir) | |
working-directory: integration-tests/remote-dir | |
run: | | |
../../scripts/local.sh ../../dist 0.0.0-pre.0 | |
terraform init > /dev/null | |
terraform plan -no-color > stdout.txt | |
cat stdout.txt | grep --silent "Plan: 1 to add, 0 to change, 0 to destroy." | |
! cat stdout.txt | grep --silent "Warning: dev_url is unset" | |
! cat stdout.txt | grep --silent "Warning: version is unset" | |
env: | |
TF_VAR_atlas_token: ${{ secrets.ATLAS_TOKEN }} | |
- name: Terraform (skip-policy) | |
working-directory: integration-tests/remote-dir | |
run: | | |
../../scripts/local.sh ../../dist 0.0.0-pre.0 | |
terraform init > /dev/null | |
terraform apply --auto-approve | |
terraform plan -no-color -var schema="schema-t2" > stdout.txt | |
cat stdout.txt | grep --silent "Plan: 0 to add, 1 to change, 0 to destroy." | |
cat stdout.txt | grep --silent "DROP TABLE \`test\`.\`t2\`" | |
terraform plan -no-color -var schema="schema-t2" \ | |
-var "skip_drop_table=true" > stdout.txt | |
cat stdout.txt | grep --silent "Plan: 0 to add, 1 to change, 0 to destroy." | |
# Expect no drop table statement in the plan | |
! cat stdout.txt | grep --silent "DROP TABLE \`test\`.\`t2\`" | |
terraform apply --auto-approve -no-color -var="schema=schema-t2" -var="skip_drop_table=true" | |
env: | |
TF_VAR_atlas_token: ${{ secrets.ATLAS_TOKEN }} | |