forked from QubitPi/packer-plugin-hashistack
-
Notifications
You must be signed in to change notification settings - Fork 2
89 lines (81 loc) · 2.87 KB
/
ci-cd.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Copyright Jiaqi Liu
---
name: CI/CD
"on":
pull_request:
push:
branches:
- master
jobs:
cancel-previous:
name: Cancel Previous Runs In Order to Allocate Action Resources Immediately for Current Run
runs-on: ubuntu-latest
steps:
- name: Cancel previous
uses: styfle/cancel-workflow-action@0.10.1
if: ${{github.ref != 'refs/head/master'}}
with:
access_token: ${{ github.token }}
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/paion-data/packer-plugin-paion-data/version.VersionPrerelease=dev" -o packer-plugin-paion-data
- name: Install dependencies
run: packer plugins install github.com/hashicorp/docker
- name: Install plugin
run: packer plugins install --path packer-plugin-paion-data github.com/paion-data/paion-data
- name: Run all acceptance tests
run: PACKER_ACC=1 go test -count 1 -v ./... -timeout=120m
release:
needs: [acceptance-tests]
if: ${{ github.ref == 'refs/heads/master' && github.repository != 'QubitPi/hashicorp-packer-plugin-scaffolding' }}
uses: ./.github/workflows/release.yml
secrets: inherit