Skip to content

Initial PR-based artifact update workflow #48

Initial PR-based artifact update workflow

Initial PR-based artifact update workflow #48

Workflow file for this run

---
name: Build
on:
pull_request: {}
schedule:
- cron: "*/5 * * * *" # Every 5 minutes (for now)
jobs:
build:
runs-on: ubuntu-latest
# These permissions are needed to:
# - Create PRs: https://github.com/marketplace/actions/create-pull-request#workflow-permissions
permissions:
contents: write
pull-requests: write
env:
JULIA_PROJECT: gen
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || 'main' }}
- uses: julia-actions/setup-julia@v1
with:
version: "1"
- uses: julia-actions/cache@v1
- name: Instantiate
shell: julia --color=yes {0}
run: |
using Pkg
Pkg.instantiate()
- name: Build tzdata
id: build
shell: julia --color=yes {0}
run: |
include(joinpath(pwd(), "gen", "make.jl"))
(; tarball_path, tarball_sha256, new_version, commit_message) = update_tzdata()
key = basename(tarball_path) * "-" * tarball_sha256
@show key tarball_path commit_message
open(ENV["GITHUB_OUTPUT"], "a") do io
println(io, "key=$key")
println(io, "tarball_path=$tarball_path")
println(io, "commit_message=$commit_message")
end
println("workflow_ref=${{ github.workflow_ref }}")
- run: git diff
# Store the Julia artifact tarball as a GitHub actions artifact. This will allow us to retrieve this
# tarball from other workflows.
- uses: actions/upload-artifact@v4
id: action-artifact
with:
name: ${{ steps.build.outputs.key }}
path: ${{ steps.build.outputs.tarball_path }}
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
base: main # Shouldn't be required for `workflow_dispatch`
title: ${{ steps.build.outputs.commit_message }}
body: >-
An automated PR generated by the ${{ github.workflow }} workflow.
add-paths: |
Project.toml
Artifacts.toml
commit-message: ${{ steps.build.outputs.commit_message }}
branch: gh/update-tzdata
delete-branch: ${{ github.event_name == 'pull_request' }}
token: ${{ secrets.TZJDATA_UPDATE_TOKEN }} # TODO: Fine-grained token expires