diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml new file mode 100644 index 00000000..eca2c0a8 --- /dev/null +++ b/.github/workflows/actionlint.yml @@ -0,0 +1,15 @@ +name: Lint GitHub Actions workflows +on: push + +permissions: + contents: read + +jobs: + actionlint: + runs-on: ${{ fromJSON(vars.RUNNER) }} + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 + - name: Check workflow files + uses: docker://docker.mirror.hashicorp.services/rhysd/actionlint@sha256:02ccb6d91e4cb4a7b21eb99d5274d257e81ae667688d730e89d7ea0d6d35db91 + with: + args: -color diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 9921ebae..cf81f098 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -9,6 +9,9 @@ on: name: Jira Sync +permissions: + contents: read + jobs: sync: runs-on: ubuntu-latest @@ -18,19 +21,19 @@ jobs: if: github.event.action == 'opened' id: boundary-team-role run: | - TEAM=boundary + TEAM="boundary" ROLE="$(hub api orgs/hashicorp/teams/${TEAM}/memberships/${{ github.actor }} | jq -r '.role | select(.!=null)')" - if [[ -n ${ROLE} ]]; then + if [[ -n "${ROLE}" ]]; then echo "Actor ${{ github.actor }} is a ${TEAM} team member, skipping ticket creation" else echo "Actor ${{ github.actor }} is not a ${TEAM} team member" fi - echo "::set-output name=role::${ROLE}" + echo "name=role::${ROLE}" >> "$GITHUB_OUTPUT" env: GITHUB_TOKEN: ${{ secrets.JIRA_SYNC_GITHUB_TOKEN }} - name: Login - uses: atlassian/gajira-login@v3.0.1 + uses: atlassian/gajira-login@ca13f8850ea309cf44a6e4e0c49d9aa48ac3ca4c # TSCCR: could not find tsccr entry for atlassian/gajira-login env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} @@ -41,14 +44,14 @@ jobs: id: set-ticket-type run: | if [[ "${{ github.event_name }}" == "pull_request_target" ]]; then - echo "::set-output name=type::PR" + echo "name=type::PR" >> "$GITHUB_OUTPUT" else - echo "::set-output name=type::ISS" + echo "name=type::ISS" >> "$GITHUB_OUTPUT" fi - name: Create ticket if: github.event.action == 'opened' && !steps.boundary-team-role.outputs.role - uses: tomhjp/gh-action-jira-create@v0.2.0 + uses: tomhjp/gh-action-jira-create@3ed1789cad3521292e591a7cfa703215ec1348bf # TSCCR: could not find tsccr entry for tomhjp/gh-action-jira-create with: project: ICU issuetype: "GH Issue" @@ -60,28 +63,28 @@ jobs: - name: Search if: github.event.action != 'opened' id: search - uses: tomhjp/gh-action-jira-search@v0.2.1 + uses: tomhjp/gh-action-jira-search@04700b457f317c3e341ce90da5a3ff4ce058f2fa # TSCCR: could not find tsccr entry for tomhjp/gh-action-jira-search with: # cf[10089] is Issue Link custom field jql: 'issuetype = "GH Issue" and cf[10089]="${{ github.event.issue.html_url || github.event.pull_request.html_url }}"' - name: Sync comment if: github.event.action == 'created' && steps.search.outputs.issue - uses: tomhjp/gh-action-jira-comment@v0.2.0 + uses: tomhjp/gh-action-jira-comment@6eb6b9ead70221916b6badd118c24535ed220bd9 # TSCCR: could not find tsccr entry for tomhjp/gh-action-jira-comment with: issue: ${{ steps.search.outputs.issue }} comment: "${{ github.actor }} ${{ github.event.review.state || 'commented' }}:\n\n${{ github.event.comment.body || github.event.review.body }}\n\n${{ github.event.comment.html_url || github.event.review.html_url }}" - name: Close ticket if: (github.event.action == 'closed' || github.event.action == 'deleted') && steps.search.outputs.issue - uses: atlassian/gajira-transition@v3.0.1 + uses: atlassian/gajira-transition@4749176faf14633954d72af7a44d7f2af01cc92b # TSCCR: could not find tsccr entry for atlassian/gajira-transition with: issue: ${{ steps.search.outputs.issue }} transition: Done - name: Reopen ticket if: github.event.action == 'reopened' && steps.search.outputs.issue - uses: atlassian/gajira-transition@v3.0.1 + uses: atlassian/gajira-transition@4749176faf14633954d72af7a44d7f2af01cc92b # TSCCR: could not find tsccr entry for atlassian/gajira-transition with: issue: ${{ steps.search.outputs.issue }} transition: "To Do" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a339b587..f83c9707 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,18 +14,18 @@ jobs: outputs: version: ${{ steps.go-version.outputs.version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - id: go-version - run: echo "::set-output name=version::$(cat ./.go-version)" + run: echo "name=version::$(cat ./.go-version)" >> "$GITHUB_OUTPUT" release-notes: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 - name: Generate Release Notes run: sed -n -e "1{/# /d;}" -e "2{/^$/d;}" -e "/# $(git describe --abbrev=0 --exclude="$(git describe --abbrev=0 --match='v*.*.*' --tags)" --match='v*.*.*' --tags | tr -d v)/q;p" CHANGELOG.md > release-notes.txt - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: release-notes path: release-notes.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 828bbac1..edda2a72 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,29 +5,32 @@ on: - workflow_dispatch - workflow_call +permissions: + contents: read + jobs: - setup: + test: runs-on: ${{ fromJSON(vars.RUNNER) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 - name: Determine go version id: get-go-version # We use .go-version as our source of truth for current Go # version, because "goenv" can react to it automatically. run: | echo "Building with Go $(cat .go-version)" - echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT + echo "go-version=$(cat .go-version)" >> "$GITHUB_OUTPUT" - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@d0a58c1c4d2b25278816e339b944508c875f3613 # v3.4.0 with: go-version: "${{ steps.get-go-version.outputs.go-version }}" - name: Determine Go cache paths id: go-cache-paths run: | - echo "go-build=$(go env GOCACHE)" >> $GITHUB_OUTPUT - echo "go-mod=$(go env GOMODCACHE)" >> $GITHUB_OUTPUT + echo "go-build=$(go env GOCACHE)" >> "$GITHUB_OUTPUT" + echo "go-mod=$(go env GOMODCACHE)" >> "$GITHUB_OUTPUT" - name: Set up Go modules cache - uses: actions/cache@v3 + uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3.2.4 with: path: | ${{ steps.go-cache-paths.outputs.go-build }} diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..2a1f99af --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,4 @@ +# These owners will be the default owners for everything in +# the repo, unless a later match takes precedence. + +@hashicorp/boundary