-
Notifications
You must be signed in to change notification settings - Fork 138
142 lines (119 loc) · 4.81 KB
/
build-release-wip.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# This workflow builds and releases MunkiReport-PHP from the `wip` (development branch).
# It is used for release testing before performing a tagged release, or for testing the GitHub Actions workflow.
name: build and release wip
on:
workflow_dispatch:
inputs: {}
push:
branches: ['wip']
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
if: ${{ false }} # Skip the build for now
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
extensions: mbstring, ldap, mysql
coverage: xdebug
tools: composer:v2, phpunit, phpstan
env:
fail-fast: true
COMPOSER_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Surface PHP errors/test failures in the GitHub Actions console using matchers.
# NOTE: No matcher required for PHPStan
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: Setup problem matchers for PHPUnit
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
# Cache composer
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
# Normally, this would be composer.lock but we haven't committed that.
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.json') }}
restore-keys: ${{ runner.os }}-composer-
# Cache npm (javascript)
- name: Get npm cache directory
id: npm-cache-dir
run: |
echo "::set-output name=dir::$(npm config get cache)"
- name: Cache npm dependencies
uses: actions/cache@v3
id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true'
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Composer dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist --no-dev
- name: Adjust directory permissions
run: chmod -R 777 storage bootstrap/cache
# I'm not sure if this is strictly required, but it was part of the template for setup-php - m.
- name: Clear Config Cache
run: php please config:clear
- name: Install JavaScript Dependencies
run: npm install --omit dev
- name: Build JavaScript
run: npm run prod
- name: Get current date
id: date
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- name: Create ZIP archive without tests or js deps
run: |
zip -r munkireport-php-${{ steps.date.outputs.date }}.zip . -x node_modules/\* \*/node_modules/\* .git/\*
- name: Upload Artifact
uses: actions/upload-artifact@v2
with:
name: munkireport-php-wip
path: munkireport-php-${{ steps.date.outputs.date }}.zip
# Temporary for testing: DRAFT a release
- uses: ncipollo/release-action@v1
with:
artifacts: "munkireport-php-${{ steps.date.outputs.date }}.zip"
draft: true
prerelease: true
name: Munkireport Unstable ${{ steps.date.outputs.date }}
tag: unstable
commit: wip
body: |
This release contains artifacts that were automatically generated from an unversioned branch of MunkiReport-PHP.
There is no guarantee that this version of MunkiReport-PHP will work at all.
token: ${{ secrets.GITHUB_TOKEN }}
container-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}