Abstract away custom command execution (#25) #86
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
# Copyright Jiaqi Liu | |
--- | |
name: CI/CD | |
"on": | |
pull_request: | |
push: | |
branches: | |
- master | |
jobs: | |
test-example: | |
uses: ./.github/workflows/test-plugin-example.yml | |
# referencing release.yml - get-go-version | |
get-go-version: | |
runs-on: ubuntu-latest | |
outputs: | |
go-version: ${{ steps.get-go-version.outputs.go-version }} | |
steps: | |
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 | |
- name: 'Determine Go version' | |
id: get-go-version | |
run: | | |
echo "Found Go $(cat .go-version)" | |
echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT | |
gorelease-config-check: | |
name: Checking if gorelease configuration is valid | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: | | |
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list | |
sudo apt update | |
sudo apt install goreleaser -y | |
goreleaser check .goreleaser.yml | |
tests: | |
name: Go Tests | |
needs: [test-example, get-go-version, gorelease-config-check] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
with: | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
- run: | | |
make build | |
make test | |
acceptance-tests: | |
name: Packer Plugin Acceptance Tests | |
needs: tests | |
outputs: | |
outcome: ${{ job.status }} | |
continue-on-error: true | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # v4.1.0 | |
with: | |
go-version: ${{ needs.get-go-version.outputs.go-version }} | |
- name: Install Packer | |
uses: hashicorp/setup-packer@main | |
- name: Build plugin | |
run: go build -ldflags="-X github.com/QubitPi/packer-plugin-hashicorp-aws/version.VersionPrerelease=dev" -o packer-plugin-hashicorp-aws | |
- name: Install dependencies | |
run: packer plugins install github.com/hashicorp/amazon | |
- name: Install plugin | |
run: packer plugins install --path packer-plugin-hashicorp-aws github.com/QubitPi/hashicorp-aws | |
- name: Run all acceptance tests | |
run: PACKER_ACC=1 go test -count 1 -v ./... -timeout=120m | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
release: | |
needs: [acceptance-tests] | |
if: ${{ github.ref == 'refs/heads/master' && github.repository != 'QubitPi/hashicorp-packer-plugin-scaffolding' }} | |
uses: ./.github/workflows/release.yml | |
secrets: inherit | |
slack-notification: | |
name: Send Slack Notification | |
if: github.ref != 'refs/heads/master' | |
needs: acceptance-tests | |
uses: QubitPi/hashicorp-aws/.github/workflows/slack-notification.yml@master | |
with: | |
job-status: ${{ needs.acceptance-tests.outputs.outcome }} | |
secrets: | |
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }} |