@@ -2,59 +2,38 @@ name: Push Events
2
2
3
3
on :
4
4
push :
5
- branches :
6
- - main
7
- - dev
8
- pull_request :
9
- branches :
10
- - main
11
- - dev
12
-
13
- env :
14
- CLOUD_FUNCTION_MEMORY : 512M
15
- CLOUD_FUCNTION_RUN_TIMEOUT : 240s
16
- SCHEDULE_NAME : monday-morning
17
- SCHEDULE_CRON : 0 9 * * 1
18
- SCHEDULE_DESCRIPTION : " Trigger the projectname-skid bot once a week on monday morning"
19
5
20
6
concurrency :
21
- group : " ${{ github.head_ref || github.ref }}"
7
+ group : ${{ github.workflow }}-${{ github.ref }}
22
8
cancel-in-progress : true
23
9
24
10
jobs :
25
- test :
26
- name : Setup and Test
11
+ release-please :
12
+ name : Create release
13
+ if : github.ref_name == 'main'
27
14
runs-on : ubuntu-latest
15
+ permissions :
16
+ contents : write
17
+ pull-requests : write
28
18
29
19
steps :
30
- - name : Checkout code
31
- uses : actions/checkout@v4
32
- with :
33
- show-progress : false
34
-
35
- - name : Set up Python
36
- uses : actions/setup-python@v5
20
+ - name : 🚀 Create Release
21
+ id : release-please
22
+ uses : agrc/release-composite-action@v1
37
23
with :
38
- python-version : 3.11
39
- cache : pip
40
- cache-dependency-path : setup.py
41
-
42
- - name : Install libkrb5 for Kerberos on Linux
43
- run : |
44
- sudo apt-get update
45
- sudo apt-get install -y libkrb5-dev
46
-
47
- - name : Install module
48
- run : pip install .[tests]
49
-
50
- - name : Test with pytest
51
- run : pytest
24
+ release-type : python
25
+ prerelease : ${{ github.ref_name == 'dev' }}
26
+ repo-token : ${{ secrets.GITHUB_TOKEN }}
27
+ github-app-id : ${{ secrets.UGRC_RELEASE_BOT_APP_ID }}
28
+ github-app-key : ${{ secrets.UGRC_RELEASE_BOT_APP_KEY }}
29
+ github-app-name : ${{ secrets.UGRC_RELEASE_BOT_NAME }}
30
+ github-app-email : ${{ secrets.UGRC_RELEASE_BOT_EMAIL }}
31
+ extra-files : src/skidname/version.py
52
32
53
33
deploy-dev :
54
- name : Deploy to GCF
55
- needs : test
34
+ name : Deploy to GCF - dev
56
35
runs-on : ubuntu-latest
57
- if : github.ref == 'refs/heads/ dev'
36
+ if : github.ref_name == 'dev'
58
37
environment :
59
38
name : dev
60
39
permissions :
@@ -64,117 +43,14 @@ jobs:
64
43
steps :
65
44
- name : ⬇️ Set up code
66
45
uses : actions/checkout@v4
67
-
68
- - name : 🗝️ Authenticate to Google Cloud
69
- id : auth
70
- uses : google-github-actions/auth@v2
71
- with :
72
- create_credentials_file : true
73
- token_format : access_token
74
- workload_identity_provider : ${{ secrets.IDENTITY_PROVIDER }}
75
- service_account : ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
76
-
77
- - name : 🚀 Deploy to Cloud Function
78
- id : deploy
79
- uses : google-github-actions/deploy-cloud-functions@v3
80
- timeout-minutes : 15
81
- with :
82
- name : projectname-skid
83
- runtime : python311
84
- entry_point : subscribe
85
- source_dir : src/projectname
86
- service_account : cloud-function-sa@${{ secrets.PROJECT_ID }}.iam.gserviceaccount.com
87
- event_trigger_type : google.cloud.pubsub.topic.v1.messagePublished
88
- event_trigger_pubsub_topic : projects/${{ secrets.PROJECT_ID }}/topics/${{ env.SCHEDULE_NAME }}-topic
89
- memory : ${{ env.CLOUD_FUNCTION_MEMORY }}
90
- service_timeout : ${{ env.CLOUD_FUNCTION_RUN_TIMEOUT }}
91
- environment_variables : STORAGE_BUCKET=${{secrets.STORAGE_BUCKET}}
92
- secrets : |
93
- /secrets/app/secrets.json=${{secrets.PROJECT_ID}}/skid-secrets
94
- max_instance_count : 1
95
- event_trigger_retry : false
96
-
97
- - name : 📥 Create PubSub topic
98
- run : |
99
- if [ ! "$(gcloud pubsub topics list | grep $SCHEDULE_NAME-topic)" ]; then
100
- gcloud pubsub topics create $SCHEDULE_NAME-topic --quiet
101
- fi
102
-
103
- - name : 🕰️ Create Cloud Scheduler
104
- run : |
105
- for i in $(gcloud scheduler jobs list --location=us-central1 --uri); do
106
- gcloud scheduler jobs delete $i --quiet
107
- done
108
- gcloud scheduler jobs create pubsub $SCHEDULE_NAME \
109
- --description="$SCHEDULE_DESCRIPTION" \
110
- --schedule="$SCHEDULE_CRON" \
111
- --time-zone=America/Denver \
112
- --location=us-central1 \
113
- --topic=$SCHEDULE_NAME-topic \
114
- --message-body='foo' \
115
- --quiet
116
-
117
- deploy-prod :
118
- name : Deploy to GCF
119
- needs : test
120
- runs-on : ubuntu-latest
121
- if : github.ref == 'refs/heads/main'
122
- environment :
123
- name : prod
124
- permissions :
125
- id-token : write
126
- contents : read
127
-
128
- steps :
129
- - name : ⬇️ Set up code
130
- uses : actions/checkout@v4
131
-
132
- - name : 🗝️ Authenticate to Google Cloud
133
- id : auth
134
- uses : google-github-actions/auth@v2
135
46
with :
136
- create_credentials_file : true
137
- token_format : access_token
138
- workload_identity_provider : ${{ secrets.IDENTITY_PROVIDER }}
139
- service_account : ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
47
+ show-progress : false
140
48
141
- - name : 🚀 Deploy to Cloud Function
142
- id : deploy
143
- uses : google-github-actions/deploy-cloud-functions@v3
49
+ - name : Deploy
50
+ uses : ./.github/actions/deploy
144
51
timeout-minutes : 15
145
52
with :
146
- name : projectname-skid
147
- runtime : python311
148
- entry_point : main
149
- source_dir : src/projectname
150
- service_account : cloud-function-sa@${{ secrets.PROJECT_ID }}.iam.gserviceaccount.com
151
- event_trigger_type : google.cloud.pubsub.topic.v1.messagePublished
152
- event_trigger_pubsub_topic : projects/${{ secrets.PROJECT_ID }}/topics/${{ env.SCHEDULE_NAME }}-topic
153
- memory : ${{ env.CLOUD_FUNCTION_MEMORY }}
154
- service_timeout : ${{ env.CLOUD_FUNCTION_RUN_TIMEOUT }}
155
- environment_variables : STORAGE_BUCKET=${{secrets.STORAGE_BUCKET}}
156
- secrets : |
157
- /secrets/ftp/known_hosts=${{secrets.PROJECT_ID}}/known_hosts
158
- /secrets/app/secrets.json=${{secrets.PROJECT_ID}}/skid-secrets
159
- max_instance_count : 1
160
- event_trigger_retry : false
161
-
162
- - name : 📥 Create PubSub topic
163
- run : |
164
- if [ ! "$(gcloud pubsub topics list | grep $SCHEDULE_NAME-topic)" ]; then
165
- gcloud pubsub topics create $SCHEDULE_NAME-topic --quiet
166
- fi
167
-
168
- - name : 🕰️ Create Cloud Scheduler
169
- run : |
170
- for i in $(gcloud scheduler jobs list --location=us-central1 --uri); do
171
- gcloud scheduler jobs delete $i --quiet
172
- done
173
- gcloud scheduler jobs create pubsub $SCHEDULE_NAME \
174
- --description="$SCHEDULE_DESCRIPTION" \
175
- --schedule="$SCHEDULE_CRON" \
176
- --time-zone=America/Denver \
177
- --location=us-central1 \
178
- --topic=$SCHEDULE_NAME-topic \
179
- --message-body='{"run": "now"}' \
180
- --quiet
53
+ project_id : ${{ secrets.PROJECT_ID }}
54
+ identity_provider : ${{ secrets.IDENTITY_PROVIDER }}
55
+ service_account_email : ${{ secrets.SERVICE_ACCOUNT_EMAIL }}
56
+ storage_bucket : ${{ secrets.STORAGE_BUCKET }}
0 commit comments